给客户做好一个retail的release之后,需要验证。打算升级到调试板中,遇到一些问题,最后也很有技巧的解决了,所以在这里记录下来。
1:因为调试板中,已经存在failsafe程序,所以插入U盘,重启,进入u-boot,选择menu 4 - 即运行failsafe
但是出现:
==> Mounted sda1 on /media/disk
checksum ok
open partition /dev/mtd6 failed
checksum ok
open partition /dev/mtd7 failed
2:怀疑failsafe有问题,升级failsafe
A:把u盘/files/目录下的rootfs.failsafe.sum和auImage.failsafe.sum加上confirm后缀
重启并选择nfs启动
当然这之前,需要把trace版本的auImage拷贝至ftp目录,nfsroot的指向也需要变更到trace版本rootfs
结果发现: exStbUpgradeNormal不存在(这是在make_windows_usb_image时生成)
B: 把retail下的exStbUpgradeNormal拷贝至/rootfs/opt/nxp/bin目录
最后完成failsafe升级
结果错误相同
3:到u-boot下面检测mtdparts
#: name size offset mask_flags
0: Boot0 0x00020000 0x00000000 0
1: Boot1 0x00100000 0x00020000 0
2: Env 0x00080000 0x00120000 0
3: K0 0x00200000 0x001a0000 0
4: FS0 0x00800000 0x003a0000 0
5: User 0x00200000 0x00ba0000 0
active partition: nand0,0 - (Boot0) 0x00020000 @ 0x00000000
defaults:
mtdids : nand0=gen_nand
mtdparts: mtdparts=gen_nand:128k(Boot0),1M(Boot1),512k(Env),4M(Kernel),16M(Filesystem),128k(User)
错误就在这里,因为没有为kernel启动指定mtd6和mtd7,所以手动设置如下:
setenv mtdparts 'mtdparts=gen_nand:128k(Boot0),1M(Boot1),512k(Env),2M(K0),8M(FS0),512k(User),3M(K1),16M(FS1)'
之后选择failsafe运行ok!