1. Sabre Lite i.MX6 Board Uboo消失变砖(unbricking)问题

本文介绍了SabreLite i.MX6开发板在变砖后的恢复过程,包括使用imx_usb_loader工具进行Uboot临时加载、通过6x_upgrade脚本进行Uboot更新以及解决过程中遇到的SD卡读取问题。

  我拿到的Sabre Lite i.MX6 board开发板变成了砖,也就是在Ubuntu中启动sudo minicom的时候没有变化,画面一直停留在图1中。图1

图1

  第一感觉是Uboot在EEPROM因为未知原因被擦除掉了。于是便去板子的官网 [1]去搜索有关变砖恢复 [2]的办法。
  按照官网提示进行了如下的步骤:

~$ sudo apt-get install libusb-1.0-0-dev pkg-config  
~$ git clone git://github.com/boundarydevices/imx_usb_loader  
~$ cd imx_usb_loader/  
~/imx_usb_loader$ make cc -c imx_usb.c -o imx_usb.o -Wstrict-prototypes -Wno
-trigraphs -pipe -ggdb `pkg-config --cflags libusb-1.0` cc -o imx_usb imx_us
b.o -lusb-1.0  

  准备工作完成,接下来对开发板做准备工作
  如图2,将DIP SWITCH变为此状态,注意: SW1置为ON,SW2置为OFF。这将进入USB恢复模式USB recovery mode (OTG port)。将开发板与主机通过USB进行连接,通过串口线将开发板与主机连接,运行minicom。
图2

图2
  另起一个终端运行如下命令:
~/imx_usb_loader$ sudo ./imx_usb u-boot.imx 

  此时minicom将会启动一个Uboot(注:这个Uboot只是将一个文件临时加载到RAM中并执行,所以此时进入了UBoot,但是EEPROM中并没有烧写UBoot,这是我当时一直疑惑地,明明出现了successed图3,reset之后还是无法进入UBoot)。
图3

图3

  此时官方给了一个明确的说明,大意就是这时只是 临时启动了一个UBoot,但可以使用这个UBoot进行upgrade来进行更新(烧写)。
  依照官方提供的upgrade步骤 [3]
  首先官方直接提供了编译好的文件 [4]可以直接下载对应开发板的uboot和6x_upgrade,直接下载即可
  或者按照如下步骤

~$ sudo apt-get install gcc-arm-linux-gnueabihf  
~$ git clone https://github.com/boundarydevices/u-boot-imx6 -b boundary-v201
6.03  
~$ cd u-boot-imx6  
~/u-boot-imx6$ find . -name "nit*defconfig"  
~/u-boot-imx6$ export ARCH=arm  
~/u-boot-imx6$ export CROSS_COMPILE=arm-linux-gnueabihf-  
~/u-boot-imx6$ make nitrogen6q_defconfig  
~/u-boot-imx6$ make all  
~/u-boot-imx6$ ./tools/mkimage -A arm -O linux -T script -C none \  
-a 0 -e 0 -n "update script" \  
-d board/boundary/nitrogen6x/6x_upgrade.txt 6x_upgrade  
~/u-boot-imx6/$ cp ./u-boot.imx ./u-boot.nitrogen6q

  将6x_upgrade和u-boot.nitrogen6q拷贝(cp)到 SDCARD(指大卡) 的Boot分区下(一般为/media/{user}/Boot/)。
  这时直接在临时的UBoot中运行

Hit any key to stop autoboot:  0 
=> run upgradeu  

  顺利的话,UBoot就烧写成功了。但不幸的是,我这边运行的时候出现了很费劲的问题,图4。
图4

图4

  接下来就是一段查找问题的时间,看输出信息说no card present,但我明明已经插sd卡了,会不会是DIP设置的不对,去查找开发板的文档[5],最后找到了,但是也没有指明我如何从SDCARD中启动,只说了一个如何进入MFG TooL的下载模式(这个试了,没搞明白,一个可视化的windows应用,配合putty监视串口,但我的uboot都没得,监视啥鬼),还有一个Boot from SPI-NOR,也没啥用,我这SPI-NOR里的uboot已经没了啊。
  后来查到一个跟我遇到类似问题的提问[6],这老哥也是找不到SD Card,结果换了一个SD Card就行了???我咋换也不行呢。
  注意这里是大卡,插到背面的SD3,不是SD4小卡。 (我一开始使用的小卡插在了SD4上,不管一开始还是使用下面的方法都会报错MMC: no card present)。
  功夫不负有心人,终于让我翻到了一个解决办法[7](当然这个SD card也卡了我很久,如此的话SD4就为Micro SD或TF卡)。

U-Boot > fatload mmc 0 ${loadaddr} u-boot.nitrogen6q  
U-Boot > sf probe  
U-Boot > sf erase 0 0xc2000  
U-Boot > sf write ${loadaddr} 0x400 ${filesize}  
U-Boot > reset  

  重启开发板,UBoot成功烧写了进去!
成功

参考

[1] https://boundarydevices.com/product/bd-sl-i-mx6/

[2] https://boundarydev2.wpengine.com/unbricking-nitrogen6x-sabre-lite-i-mx6-board/

[3] https://boundarydev2.wpengine.com/u-boot-v2016-03/

[4] http://linode.boundarydevices.com/u-boot-images/

[5] http://www.farnell.com/datasheets/1830763.pdf?COM=PrimaryPlatforms

[6] https://community.nxp.com/t5/i-MX-Processors/iMX6-sabre-lite-always-in-download-mode/td-p/537102

[7] https://boundarydev2.wpengine.com/wiki/u-boot/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值