既然评测要在 QEMU 里做,第一件事就是确认它认不认识这颗芯片。
我查了三个平台:QEMU、Renode、Arm Virtual Hardware。结论比预想的更干脆。
QEMU:114 个机型,零 Microchip
qemu-system-arm -M help | wc -l → 115 # 含表头,实际 114 个机型 qemu-system-arm -M help | grep -icE "at91|sama|microchip" → 0
【05_01_QEMU机型】
不是"SAMA7D65 没被支持"这么简单——整个 Atmel/Microchip 的应用处理器家族,QEMU 里一个 SoC 模型都没有。
QEMU 的 ARM 机型集中在开发板、virt 虚拟机、各种 SoC 评估板上,Atmel 这一支从来没进去过。
顺便说一句,后来那个列表里出现的 sama7d65,是我自己写进去的模型,不是原生的。
Renode:64 个板卡,只有一块 Atmel
Renode 的板卡定义放在 platforms/boards/ 目录,.repl 文件。拉下来数一遍:
GitHub API: repos/renode/renode/contents/platforms/boards → 64 个 .repl 文件 匹配 sam / atmel / microchip → 1 个:sam4s_xplained.repl
【05_02_Renode板卡】
就这一块。而且 SAM4S 是 Cortex-M4 的 MCU,跟 SAMA7D65 这种 Cortex-A7 的 MPU 完全不是一个层级的东西。
Renode 强在 MCU 和异构多核,但 Cortex-A7 级别的 SAMA 系列,它也是空白。
Arm Virtual Hardware:只有 Cortex-M
AVH 提供的是 Corstone 系列的 FVP,核心是 Cortex-M55、M85 这类。应用处理器级别的模型不在它的覆盖范围里。
【05_03_三平台对比】
这意味着什么
三个平台,没有一个能跑这颗芯片。这不是配置问题,是没有对应的机器模型。
后果很实际:
没有 CI。改一行驱动,只能靠人工上板验证。
没有回归。每次改动都得重走一遍烧写、上电、看串口的流程。
没有故障注入。想试一个时钟配错会怎样、外设返回异常怎么办,真机上没法做。
这些恰恰是早期开发最需要的东西。芯片刚出来、驱动还在打磨的阶段,最缺的就是能快速试错的沙盒。
但也别急着下结论
"没有现成模型"和"没法仿真"是两件事。
继续查下去会发现,QEMU 虽然没有 SAMA7D65 的机器模型,但它的框架是开放的——加一个机器、几个设备模型,是能做出来的。
后面要做的,就是先证明内核本身能跑到别的 ARM 平台上,再一点点把这颗芯片的模型搭起来。
我要赚赏金
