5

我正在研究飞思卡尔板 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 ...
4

2 回答 2

1

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

[根据您的评论,我假设您已验证物理地址 0xAXXXXXXX 处不存在主存储器。]

您正在使用的 uImage 文件是使用该mkimage实用程序从 zImage 文件创建的。

您可能必须手动编辑看起来像的行

zreladdr-y     := 0xa0008000

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

于 2012-09-24T06:37:26.760 回答
0

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

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

于 2015-04-01T08:24:52.983 回答