加载内核时U-Boot挂起?

时间:2012-09-22 10:54:43

标签: linux-kernel arm u-boot

我正在使用飞思卡尔电路板imx50evk。我使用LTIB(linux目标图像构建器)构建了uboot.bin和uImage。在U-Boot提示符下,我输入bootm addr命令,然后在显示“正在加载内核...”消息后挂起

> MX50_RDP U-Boot > boot

MMC read: dev # 0, block # 2048, count 6290 partition # 0 ... 
6290 blocks read: OK
## Booting kernel from Legacy Image at 70800000 ...
   Image Name:   Linux-2.6.35.8
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1323688 Bytes =  1.3 MB
   Load Address: a0008000
   Entry Point:  a0008000
   Verifying Checksum ... OK
   Loading Kernel Image ...

2 个答案:

答案 0 :(得分:1)

你需要验证你的主板真的有RAM在0xa0008000,这是内核“加载地址”。 U-Boot可能会在图像挂起时尝试​​将图像复制到该内存区域。

[根据你的评论,我假设你已经确认物理地址0xAXXXXXXX上不存在主存。]

您使用的uImage文件是使用mkimage实用程序从zImage文件制作的。

您可能需要手动编辑看起来像

的行
zreladdr-y     := 0xa0008000

arch/arm/mach-XXX/Makefile.boot为你的董事会。惯例是该地址应该是物理RAM的基础加上0x8000(32K)的偏移量。然后调整文件中的其他值。删除zImage文件并为内核执行另一个 make

答案 1 :(得分:0)

在为rockchip的rk3288构建3.20开发内核时,我发现使用LZO图像压缩使设备挂起“启动内核”。我认为这是因为构建主机LZO和部署的解压缩代码之间存在版本错误匹配,因此任何压缩算法都可能发生这种情况。在我的情况下切换到gzip修复它。

这只是我为什么更改压缩算法给出了可引导内核的假设。如果我错了,请纠正我。