【发布时间】:2018-02-15 00:14:45
【问题描述】:
我正在尝试使用 QEMU 加载 u-boot,以便我可以与那里的控制台进行交互。 u-boot 的最终目标是没有串口,所以我与 u-boot 控制台交互的最简单方法是通过模拟器。
当我使用这些标志运行模拟器时,模拟器会启动,但控制台不会打印任何内容:
qemu-system-ppc -nographic -M virtex-ml507 -cpu 440epx -kernel u-boot.bin -dtb virtex440-ml507.dtb -serial mon:stdio -append 'console=ttyS0'
我尝试在没有 -nographic 标志的情况下运行程序,但收到错误 gtk initialization failed。
我也尝试过使用更多“标准”输入来运行模拟器:
qemu-system-ppc -nographic -M virtex-ml507 -cpu 440epx -kernel zImage -dtb virtex440-ml507.dtb -initrd ramdisk.image.gz -serial mon:stdio -append 'console=ttyS0'
您可能会注意到我在这里使用的是zImage 而不是bzImage。目前,当我构建内核时,没有产生bzImage。为了彻底起见,我还用vmlinux替换了zImage,但无济于事。
我还尝试在没有-serial 和-append 标志的情况下运行模拟器,允许模拟器处理I/O,如第一个指南中所述。
QEMU 似乎运行正常,即没有挂起,因为我仍然可以进入命令模式以及正常退出。这似乎是一个入口点问题,但我认为入口点将由模拟器处理,我还没有看到任何指南告诉我指定它们。也可能是我使用的文件在某种程度上被破坏了,因为我没有在其他任何东西上运行它们,但我的构建似乎正确完成。
【问题讨论】:
-
我不知道答案,但您尝试结合的建议是 (a) 在 Arm 上运行 u-boot 的方法和 (b) 为 x86 设置串行输出的建议。不同的 CPU 架构在这里变化很大,如果这些架构都对 PPC 没有特别有用,我不会感到惊讶。我的第一个猜测是 u-boot.bin 二进制文件不希望以任何方式启动 QEMU 的 PPC 的 -kernel 选项启动二进制文件。
标签: linux-kernel qemu u-boot