启动过程
u-boot信息
hisilicon # reset
resetting ...
U-Boot 2010.06 (Mar 10 2015 - 15:17:40)
NAND: Check nand flash controller v610. found
Special NAND id table Version 1.36
Nand ID: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
No NAND device found!!!
0 MiB
Check spi flash controller v350... Found
Spi(cs1) ID: 0xC2 0x20 0x19 0xC2 0x20 0x19
Spi(cs1): Block:64KB Chip:32MB Name:"MX25L 256/257 35 E/F"
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
hisilicon # printenv
bootdelay=1
baudrate=115200
ethaddr=00:00:23:34:45:66
bootfile="uImage"
filesize=4B40D0
fileaddr=82000000
netmask=255.255.255.0
ipaddr=192.168.1.10
serverip=192.168.1.50
bootcmd=sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000
bootargs=mem=256M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),27M(rootfs)
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06 (Mar 10 2015 - 15:17:40)
Environment size: 463/262140 bytes
信息解读:
常用u-boot命令解析,获取:
- 环境变量
下面针对Hi3516A的升级文档来解析:
- sf probe 0含义,测试
sf probe 0——32768 KiB hi_sfc at 0:0 is now current device
sf probe 1——32768 KiB hi_sfc at 0:1 is now current device
勘测与初始化sf
可见,返回sf设备的大小、名字;这样我们下面就可以根据此信息来进行mtd分区
- mw.b 82000000 ff 100000,解析:
用指定数据(0xff)填充内存(从0x82000000地址开始,共填充100000个“单元”,每个单元为bit)(内存是指Flash),相当于初始化的作用
也有其子类命令,mw.[b/w/l]
- tftp 0x82000000 u-boot-hi3516a.bin
从tftp服务器里面下载文件(u-boot-hi3516a.bin)到起始地址为(0x82000000)的内存里面(这内存是指SDRAM内存,也就是DDR,毕竟还没有真正的写入Flash)。
对应:本起始地址一定是跟上面2的地址一致,不然不能完全覆盖
- sf erase 0 100000
重新将Flash的内存擦除,擦除位置是从0x0地址开始,连续擦除100000个单元
对应:单元大小如同2所指定的大小,也就是bit,同时,擦除单元数量一定是2所指定的大小,也就是100000
- sf write 82000000 0 100000