前提:之前sd卡启动的实验uboot,然后烧写uImage和rootfs到nand,都正常运行了。现在是将MLO也uboot也烧写到了nand启动后提示:
从告警的信息上看SPL段的代码以及是运行成功了。
The Expected Linux image was not found. Please check your NAND configuration.
Trying to start u-boot now…
求指导,这是什么原因??
andarm lin1:
有没有遇到类似的问题的??
andarm lin1:
上面的问题怀疑是ECC问题。
nand启动也两种硬件ECC,1bit和8bit.
但是我尝试使用了两种方式写入u-boot.bin文件都依然是不成功。
之前启动nand里面的文件系统也遇到ecc问题,最后是用sw模式的ECC解决了。
Jian Zhou:
回复 andarm lin1:
是不是烧错了分区了,NAND 分区如下:
/* NAND partition information */static struct mtd_partition am335x_nand_partitions[] = {/* All the partition sizes are listed in terms of NAND block size */ { .name = "SPL", .offset = 0, /* Offset = 0x0 */ .size = SZ_128K, }, { .name = "SPL.backup1", .offset = MTDPART_OFS_APPEND, /* Offset = 0x20000 */ .size = SZ_128K, }, { .name = "SPL.backup2", .offset = MTDPART_OFS_APPEND, /* Offset = 0x40000 */ .size = SZ_128K, }, { .name = "SPL.backup3", .offset = MTDPART_OFS_APPEND, /* Offset = 0x60000 */ .size = SZ_128K, }, { .name = "U-Boot", .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */ .size = 15 * SZ_128K, }, { .name = "U-Boot Env", .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */ .size = 1 * SZ_128K, }, { .name = "Kernel", .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */ .size = 40 * SZ_128K, }, { .name = "File System", .offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */ .size = MTDPART_SIZ_FULL, },};
andarm lin1:
回复 Jian Zhou:
检查过,肯定不是分区问题。
现在仍然怀疑是nand ecc问题。
andarm lin1:
回复 andarm lin1:
问题还是没有解决。
现在跟踪代码,打印信息:
mkimage signature not found – ih_magic = ea000013 //这个是什么意思????
Jumping to U-Bootimage entry point: 0x80800000 //打印到这里就是掉了,这是为什么???
andarm lin1:
回复 andarm lin1:
问题解决了,
总结一下:
这是由于自己编译的u-boot.bin文件大于200k,而官方的代码上u-boot.bin的大小是200k。
在spl.c文件中进行修改。
#ifndef CONFIG_SYS_MONITOR_LEN#define CONFIG_SYS_MONITOR_LEN (512 * 1024)#endif
Jian Zhou:
回复 andarm lin1:
请问你用的是SDK06么?应该是烧u-boot.img吧,SDK里带的有356K呀
andarm lin1:
回复 Jian Zhou:
我用的不是sdk6.0,是uboot官方的源码。uboot-2013.10…
Yaoming Qin:
回复 andarm lin1:
您前面的那个宏是定义什么的啊,为啥开那么大