能够从Uart把系统跑起来,基本上已经完成了移植工作的关键。但此时自动的引导流程还没有建立好,要想让系统能正常启动,必须将数据烧写到存储设备里去。烧写的原理对于所有的板子都是一样的,只是烧写数据的来源和目标有区别,掌握原理以后就可以自己灵活修改,不用拿着从ftp烧写的脚本对着USB烧写的需求一筹莫展。:-)你看到的是非授权版本!爬虫凶猛,请尊重知识产权!
转载请注明出处:http://conanwhf.github.io/2017/06/14/bootup-6-flasher/
BeagleBoneBlack的烧写
BeagleBoneBlack支持外部TF卡(emmc)烧写系统。它的流程是启动时长按某个button进入TF启动模式,然后修改init命令行参数让系统重新启动后自动运行烧写脚本。这个过程其实分几个步骤:
按住button调整启动模式。BeagleBoneBlack有两种顺序不同的启动模式:{SPI0,MMC0,USB0,UART0}和{MMC1,MMC0,UART0,USB0},按下时进入第二种模式。TF卡是外接在MMC1上,即意味着按下button时优先启动TF卡上的系统。注意这里的MMC0和MMC1是硬件意义上的,与进入系统后的设备结点mmc0,mmc1没有对应关系,可以不同。
BootROM在TF卡上寻找到uboot数据,进入uboot;然后uboot引导卡上的kernel,进入系统。
如果此时的init参数已经修改,则自动运行init指定的脚本,进行烧写系统的工作。
烧写完毕,系统自动断电,等待重新上电启动。
从这个过程我们可以推理出几件事:
因为引导系统的uboot也是来自于外部TF卡,这种烧写方法可以用在完全被破坏的无法启动的板子上,例如板载emmc被彻底擦除干净的设备。这就意味着你可以随意折腾你的板载系统,不用害怕,TF卡烧写是一种有效的救援措施
官方的烧写教程是让我们enable uEnv.txt中的一行代码cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh,这个flasher-v3.sh就是官方的烧写脚本。进入系统后手动运行效果也是一样的