gpt4 book ai didi

linux - 使用 QEMU 模拟 Arietta G25 开发板

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:58 28 4
gpt4 key购买 nike

我正在尝试模拟 Arietta G25使用 QEMU 登机,但遇到了一些困难。

我首先使用补丁编译 Linux 以支持 Arietta,如所述 here .然后,我使用 qemu-system-arm -M help 检查了支持的机器列表,并注意到虽然没有列出 Arietta 板,但有一个选项用于 versatileabversatilepb 具有与 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"

我本以为会看到内核启动,但由于缺少根文件系统而立即出现 panic 。但是,我的控制台上从未显示任何文本。

我尝试使用控制台的参数(例如使用 ttyS0、添加速率等),但这没有用。

最佳答案

对于习惯了 x86 的 ARM 嵌入式世界的人们来说,这是一个非常常见的困惑点。对于 x86,基本上你购买的每一件硬件看起来都像一台标准的 PC——内存、串行端口等都将位于完全相同的位置并以相同的方式访问。所以 guest 软件通常只能在这些系统中的任何一个上运行。

ARM 非常不同。不同的嵌入式板卡和 SoC 会有不同的设备存在,并将它们放在不同的地址。在它们上运行的软件需要构建为与这些设备一起工作,并且试图在错误类型的设备上运行低级软件(如内核或引导加载程序或固件镜像)将无法工作。这里发生的事情是你说“启动一个为 Arietta 构建的内核并告诉它 UART 是 Arietta 的 UART 所在的地方”,但是你正在一个非常非常非常非常好的模拟硬件 (versatilepb) 上运行它不同的。内核将尝试与不存在的硬件对话,并且只会崩溃。它也不能打印任何东西,因为它不知道 versatilepb UART 在哪里。

向 QEMU 添加对新板模型仿真的支持并不是一个微不足道的过程(将其视为与向 Linux 内核添加对该板的支持大致相同的工作量),因为您需要为该板上的所有硬件以及 guest 内核尝试使用的硬件。

关于linux - 使用 QEMU 模拟 Arietta G25 开发板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41964362/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com