问题描述:烧写系统的时候将uboot烧写坏了,出现mmc读取或写入失败,等待状态更新等
问题分析:因为uboot类似于BIOS,能够引导启动内核,就是从flash中读取内核,放到内存中,进而启动内核,所以应该是uboot出错了,需要重新烧写内核。
问题解决方案:
方案一:应该有方法可以更改uboot状态让uboot恢复原样,从汇编层或者其他直接更改的办法,因能力有限,所以留坑,以后再说。
方案二:如标题所言,直接将uboot重新烧写进去,这样就可以直接更换uboot了,可能更直接粗暴简单点。
1、工具:
PC(虚拟机,Ubuntu,SSH,超级终端)、读卡器,TF卡(需提前格式化)
u-boot-iTOP-4412.bin (需要与硬件版本对应,pop or scp)
iTop4412_uboot_20151119.tar.gz(版本没什么问题,16,17都行)
(以上两个文件附件)
2、步骤
a、将 iTop4412_uboot_20151119.tar.gz通过SSH拷贝到Ubuntu,随便放在一个新文件夹下,解压该文件,得到 iTop4412_uboot 文件夹。
解压命令 tar -vxf iTop4412_uboot_20151119.tar.gz
b、将u-boot-iTOP-4412.bin 通过SSH移动到 iTop4412_uboot。
c、将格式化好的TF卡插入电脑,打开虚拟机(有的虚拟机插上U盘或者读卡器就会死机,解决办法请参考)在Ubuntu终端进入到 iTop4412_uboot文件夹下,制作启动TF卡。
root@ubuntu:/home/topeet/ubootinstaller/iTop4412_uboot# ./mkuboot /dev/sdc
注意需要先查看U盘在Ubuntu下的分区并且分区下的数字不能带
root@ubuntu:/home/topeet/ubootinstaller/iTop4412_uboot# ./mkuboot /dev/sdc
Fuse iTOP-4412 trustzone uboot file into SD card
/dev/sdc reader is identified.
u-boot-iTOP-4412.bin fusing...
1029+1 records in
1029+1 records out
527104 bytes (527 kB) copied, 3.80896 s, 138 kB/s
u-boot-iTOP-4412.bin image has been fused successfully.
Eject SD card
TF卡启动制作完成。
d、Win10下TF卡分区
将TF卡取出,插入开发板,并将拨码开关1与2拨到0与1位置,也就是TF卡启动模式,连接好USB转串口线
打开超级终端,进行分区,依次执行以下命令
fdisk -c 1
fatformat mmc 1:1
ext3format mmc 1:2
ext3format mmc 1:3
ext3format mmc 1:4
e、建立sdupdate文件夹
将TF卡插回电脑,此时TF卡应该被分成4个区,在能够进去的区创建sdupdate文件夹,将u-boot-iTOP-4412.bin拷贝到该文件夹下。
f、烧写uboot
此时开发板应该还是TF卡启动模式,重新启动超级终端,执行命令sdfuse flashall,就烧写成功了
g、测试
重启开发板,将1与2开关拨到0与1,即emmc启动模式,打开超级终端,能够获得正确打印信息
参考博客链接: