“我如何选择电路板”问题是一个很常见的问题,我们在项目的 wiki 上记录了通常的答案:http ://wiki.qemu.org/Documentation/Platforms/ARM
AArch64 的简短回答是您想使用“virt”板,除非您明确知道要模拟 64 位 Xilinx 板之一(听起来您不知道)。您还需要使用 -cpu cortex-a53 指定 CPU 类型,因为“virt”板的默认值为 cortex-a15(32 位 CPU)。
qemu-system-aarch64 二进制文件支持所有 32 位 CPU 和板卡,就像 qemu-system-x86_64 允许您运行 32 位 x86 CPU 来宾一样,这就是列表如此长且充满 32 个的原因位板。但是,您不能只尝试使用带有 -cpu cortex-a53 的 32 位主板 - 这就像尝试将 Core2Duo 插入旧的 i386 主板并且即使 QEMU 不打印错误消息也无法正常工作关于组合。
对于 virt 板,由于这不是对真实硬件进行建模,因此它的详细信息仅在 QEMU 源代码和我们传递给来宾的设备树 blob 中指定。对于裸机客户操作系统,您需要了解:
- 地址 0x0 处有引导闪存(您可以使用 -bios 或 -pflash QEMU 命令行选项填充)
- UART 是 0x0900000 处的 pl011
- RAM 从 0x40000000 开始
- 有关哪些设备存在以及它们在内存中的位置的所有其他信息应该从设备树 blob 中获取,该设备树 blob 可以在 RAM 的底部找到,假设您是通过 -bios 或 -pflash 加载的裸机 blob。(如果您说您是通过 -kernel 加载的 Linux 内核,那么我们以内核引导 ABI 指定的方式传递 DTB。不过,裸机映像通常不应该使用 -kernel。)