我正在使用飞思卡尔电路板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 ...
答案 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修复它。
这只是我为什么更改压缩算法给出了可引导内核的假设。如果我错了,请纠正我。