DevKit8000通过TFTP更新内核,通过TFTP把uImage文件下载到内存的0x80000000外,再写到NAND_FLASH的0x280000处,最后设置u-boot的环境变量:
setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video =omapfb:mode:4.3inch_LCD
setenv bootcmd nand read.i 80300000 280000 300000/; bootm 80300000
但是在由NAND_FLASH启动的时候,不能从NAND_FLASH加载内核镜像到内存的0x80300000处,错误如下:
U-Boot 1.3.3 (Jan 17 2011 - 18:26:10)
OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz
OMAP3 DevKit8000 Board + LPDDR/NAND
DRAM: 256 MB
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0x280000, size 0x240000
Error: Bad compare! failed
nand_read_ecc: Failed ECC read, page 0x00000500
reading NAND page at offset 0x280000 failed
2359296 bytes read: ERROR
Wrong Image Format for bootm command
ERROR: can't get kernel image!
解决办法:
关键在于“nand_read_ecc: Failed ECC read, page 0x00000500”这里,在bootcmd环境里要先设置ECC校验,所以bootcmd的环境变量要变为:
setenv bootcmd 'nand ecc sw;nand read.i 80300000 280000 240000;
bootm 80300000'
成功加载内核到内存。