原创:http://blog.sina.com.cn/u/2312748742
NAND地址如下:
+------------+-->0x00000000-> SPL start (SPL copy on 1st block) | | | |-->0x0001FFFF-> SPL end | |-->0x00020000-> SPL.backup1 start (SPL copy on 2nd block) | | | |-->0x0003FFFF-> SPL.backup1 end | |-->0x00040000-> SPL.backup2 start (SPL copy on 3rd block) | | | |-->0x0005FFFF-> SPL.backup2 end | |-->0x00060000-> SPL.backup3 start (SPL copy on 4th block) | | | |-->0x0007FFFF-> SPL.backup3 end | |-->0x00080000-> U-Boot start | | | |-->0x002BFFFF-> U-Boot end | |-->0x00260000-> ENV start | | | | | |-->0x0027FFFF-> ENV end | |-->0x00280000-> Linux Kernel start | | | | | | | | | |-->0x0077FFFF-> Linux Kernel end | |-->0x00780000-> File system start | | | | | | | | | | | | | | | | | | | | | | | | +------------+-->0x10000000-> NAND end (Free end)
一、串口烧入:
For example, to mark block 32 (assuming erase block size of 128Kbytes) as bad block - offset = blocknum * 128 * 1024:
U-Boot# nand markbad 0x400000
二、sd卡烧入:
2-1:
1)加载MLO到内存中。
U-Boot# mmc rescan
U-Boot# fatload mmc 0 0x82000000 MLO
2)从内存到nand falsh中。
U-Boot# nand erase 0x0 0x20000
U-Boot# nand write 0x82000000 0x0 0x20000
3)加载u-boot.img到内存中。
U-Boot# mmc rescan(mmc卡扫描,同挂载)
U-Boot# fatload mmc 0 0x82000000 u-boot.img(读取文件从mmc卡中的u-boot.img文件到0x82000000地址中)
4)从内存到nand falsh中。
U-Boot# nand erase 0x80000 0x40000
U-Boot# nand write 0x82000000 0x80000 0x40000(从0x82000000读取并写入到起始地址为0x80000,偏移量0x40000)
2-2
可以建立uEnv.txt文件如下:(最后一行为空)
1)
bootargs=console=ttyO0,115200n8 root=/dev/mmcblk0p2 mem=128M rootwait
bootcmd=mmc rescan; fatload mmc 0 0x82000000 uImage; bootm 0x82000000
uenvcmd=boot
2)
命令