Embedded qemu无法启动u-boot uImage二进制文件

Embedded qemu无法启动u-boot uImage二进制文件,embedded,embedded-linux,qemu,u-boot,buildroot,Embedded,Embedded Linux,Qemu,U Boot,Buildroot,我使用buildroot构建了与qemu兼容的Linux内核和根文件系统。我正在模拟MPC8544DS机器,并使用qemu\u ppc\u MPC8544DS\u defconfig生成这些组件。我能够成功地构建内核和根文件系统。并且能够在qemu下运行它 然而,当我尝试运行uboot而不是Linux内核(以及相关的rootfs)时,它失败了。以下是我调用qemu引导u-boot的方法: qemu系统ppc-nographic-M mpc8544ds-M 512-kernel~/CrossCom

我使用buildroot构建了与qemu兼容的Linux内核和根文件系统。我正在模拟MPC8544DS机器,并使用
qemu\u ppc\u MPC8544DS\u defconfig
生成这些组件。我能够成功地构建内核和根文件系统。并且能够在qemu下运行它

然而,当我尝试运行uboot而不是Linux内核(以及相关的rootfs)时,它失败了。以下是我调用qemu引导u-boot的方法:

qemu系统ppc-nographic-M mpc8544ds-M 512-kernel~/CrossCompilation/u-boot.bin
失败如下:

错误的图像类型52,应为2
qemu:无法加载内核“~/CrossCompilation/u-boot.bin”

我不明白还有什么不对劲。我查看了互联网上的各种博客帖子,几乎所有的帖子都使用uboot.bin作为内核(与srec和其他格式相反)

有没有人能解释一下各种图像类型的数字,以及哪些数字适合哪里

更新:我就是这样编译我的u-boot的

cd to u-boot dir

make distclean
make mrproper

make ARCH=powerpc CROSS_COMPILE=~/CrossCompilation/buildroot-2014.08/output/host/usr/bin/powerpc-buildroot-linux-gnuspe- MPC8544DS_defconfig

make ARCH=powerpc CROSS_COMPILE=~/CrossCompilation/buildroot-2014.08/output/host/usr/bin/powerpc-buildroot-linux-gnuspe-

尝试删除-kernel选项。确保一切保持原样:

qemu-system-ppc -nographic -M mpc8544ds -m 512  ~/CrossCompilation/u-boot.bin

在做了一些研究和帮助后,我能够将二进制文件转储到十六进制。该图像的标题为
00000000 27 05 19 56 55 2d 42 6f 6f 74 20 32 30 34 2e |'…VU Boot 2014。
显然,它的标题不应为
0x27051956
。我不知道为什么会这样,因为这是头球。在使用QEMU引导之前,我需要显式地重新打包它吗?我已经研究了QEMU中抛出该错误的代码部分。根据调查,有效的图像类型从0到8。我不明白为什么我的二进制文件被打包在这里,它的头类型是52。这和使用的交叉编译器有关吗?你是如何编译u-boot的。。?提及您尝试过的步骤?添加了编译步骤,作为从中请求的更新。“内核”选项需要bzImage(二进制压缩)或多引导二进制文件。使用的命名法相当混乱。u-boot.bin不是bzImage。这个bin文件只是u-boot的一个二进制映像,因为它将被复制到非易失性/闪存中。它没有其他工具可以理解的标题。mkimage是一个将原始二进制文件包装成uImage二进制文件的工具,但我不知道qemu是否理解这一点。