如何破坏开发板iNand中的uboot?
以下内容源于网络资源的学习与整理,如有侵权请告知删除。
一、X210开发板的SD/inand启动步骤
第一层启动从SD0(即板载的inand)启动,当inand启动做校验和时失败才会转为启动SD2(接近复位键的那个卡槽)。
我们做裸机实验时是通过SD2来提供裸机程序镜像的,因此需要先破坏内部inand的uboot才可以强迫开发板从SD2启动去执行我们的裸机程序。
二、两种情形下破坏uboot的方法
1、uboot环境下擦除开发板inand中的uboot
连接串口2(接近启动介质选择的那个串口),打开SecureCRT,进入uboot控制台,输入movi命令确认一下,如下。
然后输入“movi write u-boot 0x30000000”,表示将内存地址0x30000000的内容(应该全是0)写入到inand中的u-boot分区。
重启X210,发现串口中输出如下,这表明头部校验和失败,已经转入SD卡通道启动了。再插入烧好的SD卡,即可启动。
2、linux或android系统下擦除inand中的uboot
待X210完全启动进入系统后,先后在SecureCRT中输入以下命令:
busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
sync
此命令把板载inand的第1个扇区用全0来填充,即擦除它,则板载inand的uboot的第1个扇区就被破坏了。将来启动时iROM还是先从inand中读取前16KB,然后计算校验和,但因为有1个扇区被擦掉了,校验和不能通过,因此启动失败,从而转到SD2去启动。
破坏板载inand的uboot后,如果不插入外部SD卡,启动时串口得到:SD checksum Error。