使用 QEMU 模拟 Arietta G25 开发板
Emulating an Arietta G25 board with QEMU
我正在尝试使用 QEMU 模拟 Arietta G25 开发板,但遇到了一些困难。
我开始编译 Linux 补丁以支持 Arietta,如 here 所述。然后我用 qemu-system-arm -M help
检查了支持的机器列表,注意到虽然 Arietta 板没有列出,但有一个 versatileab
和 versatilepb
的选项,它们具有与 Arietta 相同的处理器。
在内核目录arch/arm/boot
中,我运行命令
QEMU_AUDIO_DRV=none \
qemu-system-arm -M versatilepb \
-m 256M \
-kernel zImage \
-dtb dts/acme-arietta.dtb \
-nographic \
-append "console=ttyAMA0"
我希望看到内核启动并立即出现由于缺少根文件系统而出现的恐慌。但是,我的控制台上从未显示任何文本。
我尝试使用控制台的参数(例如使用 ttyS0
、添加费率等),但这没有用。
对于习惯了 x86 的 ARM 嵌入式世界的人们来说,这是一个非常常见的混淆点。对于 x86,基本上你购买的每一件硬件看起来都像一台标准的 PC——内存、串行端口等都将位于完全相同的位置并以相同的方式访问。因此来宾软件通常只能在这些系统中的任何一个上运行。
ARM 非常不同。不同的嵌入式板卡和 SoC 会有不同的设备存在,并将它们放在不同的地址。软件 运行 需要构建以与这些设备一起工作,并且尝试 运行 低级软件(如内核或引导加载程序或固件映像)在错误类型的设备上将无法工作。这里发生的事情是你说 "boot a kernel built for Arietta and tell it that the UART is where the Arietta's UART lives",但你 运行 将它放在一个非常非常不同的模拟硬件 (versatilepb) 上。内核将尝试与不存在的硬件对话,并且只会崩溃。它也不能打印任何东西,因为它不知道 versatilepb UART 在哪里。
向 QEMU 添加对新板模型仿真的支持并不是一个微不足道的过程(将其视为与向 Linux 内核添加对该板的支持大致相同的工作量),因为您需要为该板上的所有硬件编写设备模型,来宾内核尝试使用这些硬件。
我正在尝试使用 QEMU 模拟 Arietta G25 开发板,但遇到了一些困难。
我开始编译 Linux 补丁以支持 Arietta,如 here 所述。然后我用 qemu-system-arm -M help
检查了支持的机器列表,注意到虽然 Arietta 板没有列出,但有一个 versatileab
和 versatilepb
的选项,它们具有与 Arietta 相同的处理器。
在内核目录arch/arm/boot
中,我运行命令
QEMU_AUDIO_DRV=none \
qemu-system-arm -M versatilepb \
-m 256M \
-kernel zImage \
-dtb dts/acme-arietta.dtb \
-nographic \
-append "console=ttyAMA0"
我希望看到内核启动并立即出现由于缺少根文件系统而出现的恐慌。但是,我的控制台上从未显示任何文本。
我尝试使用控制台的参数(例如使用 ttyS0
、添加费率等),但这没有用。
对于习惯了 x86 的 ARM 嵌入式世界的人们来说,这是一个非常常见的混淆点。对于 x86,基本上你购买的每一件硬件看起来都像一台标准的 PC——内存、串行端口等都将位于完全相同的位置并以相同的方式访问。因此来宾软件通常只能在这些系统中的任何一个上运行。
ARM 非常不同。不同的嵌入式板卡和 SoC 会有不同的设备存在,并将它们放在不同的地址。软件 运行 需要构建以与这些设备一起工作,并且尝试 运行 低级软件(如内核或引导加载程序或固件映像)在错误类型的设备上将无法工作。这里发生的事情是你说 "boot a kernel built for Arietta and tell it that the UART is where the Arietta's UART lives",但你 运行 将它放在一个非常非常不同的模拟硬件 (versatilepb) 上。内核将尝试与不存在的硬件对话,并且只会崩溃。它也不能打印任何东西,因为它不知道 versatilepb UART 在哪里。
向 QEMU 添加对新板模型仿真的支持并不是一个微不足道的过程(将其视为与向 Linux 内核添加对该板的支持大致相同的工作量),因为您需要为该板上的所有硬件编写设备模型,来宾内核尝试使用这些硬件。