工具/软件:Linux
您好!
我在安装了 NAND 的定制板上使用 am3358处理器。
U-boot 和内核是使用 SDK 03.03构建的。
尝试引导 MLO 打印时: 未找到预期的 Linux 映像。 请检查您的 NAND 配置。
通过代码进行跟踪这是它位于以下位置的位置:
if (header->IH_OS =IH_OS_Linux){
/* Happy -是 Linux */
ERR = nand_spl_load_image (
CONFIG_SYS_NAND_SPL_kernel_abs、
SPL_image.size、
(void *) spl_image.load_addr);
NAND_DESELECT ();
退货错误;
}否则{
PUs ("预期的 Linux 映像不是"
"已找到。 请检查您的 NAN"
"配置。\n");
PUS ("正在尝试启动 u-boot ...\n");
}
它提取的标头是内核分区的前64个字节:
typedef 结构体 image_header{
_be32 IH_magic;/*图像标题魔法编号*/
_be32 IH_hcrc;/*图像标题 CRC 校验和*
_be32 IH_TIME;//图像创建时间戳*/
_be32 IH_size;//图像数据大小*/
_be32 IH_load;//数据加载地址*/
_be32 IH_EP;/*入口点地址*/
_be32 IH_dcrc;/*图像数据 CRC 校验和*
uint8_t IH_OS;/*操作系统*/
uint8_t IH_arch;/* CPU 架构*
uint8_t IH_TYPE;/*图像类型*
uint8_t IH_comp;/*压缩类型*/
uint8_t IH_NAME[IH_NMLEN];//图像名称*
} image_header_t;
通过查看 zImage 的二进制视图、我可以看到、当 MLO 希望其为5时、29字节为0。
在阅读 Linux 映像头文件时、uImage 看起来具有 Header、zImage 是压缩版本、但没有。
是这样吗?
我是否必须使用 uImage for MLO 来识别内核。
此致、
Ugnius
