Nand flash 烧写步骤
以下配置过程的环境
linux版本:fedora10
开发板:HI3515DMEB_VER_A
开发环境:Hi3515_SDK_V1.0.5.1.tgz
******************************************************
******************************************************
1、准备
先调整拨码开关:底板Sw7和Sw8均拨为0,表示nor flash boot。
复位单板,通过nor flash启动,进入u-boot之后,运行如下步骤。
2、擦除整个 nand flash
nand erase 0
3、烧写主uboot到nand
nand erase 0 100000
mw.b 0xC1500000 0xFF 0x100000 # 内存清除为0xFF;
setenv serverip 192.168.1.14
tftp 0xC1500000 u-boot.bin # 先把boot load到内存;
nand write 0xC1500000 0 0x100000 # 然后把内存中的boot烧写到flash上,参数0表示偏移地址,0x100000表示写入文件的大小;
若仅更新u-boot,可仅擦除 nand erase 0 100000
4、烧写主kernel到nand
nand erase 0x100000 0x200000
mw.b 0xC1500000 0xFF 0x200000
tftp 0xC1500000 kernel-hi3515v100_full_release.img
nand write 0xC1500000 0x100000 0x200000
# 注:若仅更新kernel,可仅擦除nand flash中kernel对应地址空间即可。擦除命令如下:
# nand erase 0x100000 0x200000
5 烧写yaffs2文件系统(nand上建议使用yaffs2文件系统)
mw.b 0xC1500000 0xFF 0x800000
tftp 0xC1500000 rootfs-FULL_REL-Flash.yaffs2
nand write.yaffs 0xC1500000 0xE00000 xxx
# 注:参数xxx应该是yaffs2文件系统镜像的实际文件长度(16进制表示)。
# 例如:rootfs-FULL_REL-Flash.yaffs2的大小(右键看属性里面显示的大小(不是占用空间)7001,280字节),转为16进制6ad4c0
# 则烧写命令应该是:nand write.yaffs 0xC1500000 0xE00000 0x6ad4c0
6、设置环境变量
setenv bootargs 'mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:3M(n1),123M(n2)'
saveenv
# 注: 这里由于我们的单板上都有nor flash,kernel启动中会自动探测nor flash,即使在mtdparts中没有nor分区,
# 如果kernel探测到nor,也会给nor flash分配一个分区,并且占据分区0,因此这里设置”root=/dev/mtdblock2”。
#nand分成2个区,前面3M用来存放uboot和内核,后面123M用来做文件系统。
# 如果单板上没有nor flash,只有nand flash,则应该设置root为”root=/dev/mtdblock1”。
7、设置自动启动
# nand 无法直接访问,必须load到内存。
setenv bootcmd 'nand read C1500000 0x100000 0x200000;bootm C1500000'
也可以改为setenv bootcmd 'nand read C1500000 0x100000 0x100000;bootm C1500000'
即只读取前面1M的内核镜像到内存就开始启动,这样启动速度会快些
saveenv
8、nand启动
调整拨码开关:底板Sw7拨0,Sw8 拨为1,表示 nand flash boot。
复位单板。
注:烧写完nand flash之后,从nand flash启动之前,先要调整单板上的拨码开关。将单板上8个控制组的拨码开关1、4、5、7
拨到OFF侧(即标有数字的那一侧),才能在下次启动时从nand flash启动!!