【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
对于很多第一次学习嵌入式linux和开发板的同学来说,如何烧入镜像文件常常成为他们要面对的第一个难题。从拿到板子开始,他们可能还没学会虚拟机、没有学会基本的linux操作,就迫不及待地想测试下版本烧入,这也是可以理解的。鉴于此,我们也给出了三种基于windows平台的镜像烧入方法。
有的同学也许会说,为什么不用官方的PhoenixSuit软件?主要是因为PhoenixSuit需要pack命令的支持,但是pack命令是怎么建立img的,目前没有一个详细的文档,这对于开发者来说,十分为难。
1、利用sd卡烧入
这种方法最大的好处就是简单、稳定,它唯一的要求,就是多一张micro sd卡。这样,版本烧入就只和这张micro sd卡有关。鉴于之前已经写过相关的文章,有兴趣的同学可以参考这个链接,这里也不再赘述了,
https://blog.csdn.net/feixiaoxing/article/details/130897035?spm=1001.2014.3001.5501
2、利用xfel工具烧入
xfel工具我们并不陌生,刚刚spi-nand烧入的时候,我们就是用它在ubuntu的环境下面完成版本烧入的。其实,大家不熟悉的是,xfel也支持windows操作的,软件从这个地址下即可,
https://gitee.com/xboot/xfel/releases/tag/v1.3.1
下载好之后,在准备烧入之前,同样需要v3s进入usb otg模式。因为xfel主要是利用libusb来实现的,所以这里需要给v3s usb安装驱动。它和之前PhoenixSuit安装的驱动不同,所以第一步就要把之前的PhoenixSuit usb驱动删除,
接下来,就是用zadig软件安装usb驱动。zadig软件可以从这里下载,
https://zadig.akeo.ie/
打开zadig软件,选择要安装驱动的usb节点,直接安装libusbK即可。发现和检测到usb节点,这是使用xfel的前提,一定要注意下。另外,如果下次启动的时候,发现usb节点的驱动没有找到,再次安装即可,这个不用担心。
安装好之后,就可以使用xfel命令了。目前xfel同时支持 spi-nor和spi-nand,这对我们来说就十分方便了。此外,xfel在烧入的时候,不需要自己再次erase,直接write即可,这也是很方便的。操作时,如果写入的是spi-nor,那么输入下面这条命令即可,
./xfel.exe spinor write 0x0 flashimg.bin
同样,如果写入的是spi-nand,只需要把spinor修改成spinand就行,
./xfel.exe spinand write 0x0 flashimg.bin
当然,在实际的执行过程中,我们发现命令执行也有一定的失败机会,一般来说多测试几次就好了。成功的概率还是不错的。上面说的flashimg.bin都是整个镜像文件,里面包含了uboot、kernel、dtb和rootfs,烧录一次即可。
3、利用xfel+y modem安装
因为xfel有一定的失败率,所以另外一个比较好的烧入方法就是xfel+y modem。方法虽然有一点慢,也稍微有点繁琐,但是成功率几乎100%,没有失败的风险。它的操作步骤是这样,
第一步还是用xfel烧入uboot文件,
./xfel.exe spinor erase 0x0 0x100000
./xfel.exe spinor write 0x0 uboot.bin
第二步,烧入好uboot之后,我们就可以重启板子,让板子进入boot状态,这个时候可以用loady下载文件,比如zImage下载。注意,此时需要选用SecureCRT软件,而不是minicom软件。这主要是因为,SecureCRT支持windows平台,也支持y modem协议,使用比较方便,
第三步,下载到内存0x41000000之后,这个时候就可以借助于uboot的sf命令下载到spi-nor flash里面去了,输入下面这条命令即可,
sf write 0x41000000 0x120000 0x500000
这条命令的意思是说,将0x41000000开始的ddr 5M空间内容,全部下载到spi-nor flash偏移地址为0x120000的位置去。完成了kernel的下载,其他dtb和rootfs也可以按照这个方法去做。甚至后期,对于uboot的下载和更新,也可以使用这个方法,但是uboot最好还是慎重一些,不是特别紧急的变更,最好不要修改。
4、总结
目前在window是平台上面,这三种对image进行烧入的方法还是比较实用的,主要的sd卡、spi-nor、spi-nand也都涉及到了,操作上面也不复杂,大家在实际使用中可以多多测试下。中间有的方法比较快,但是有失败的风险;有的方法虽然慢一点,但是成功的概率很高,中间的取舍,大家根据自己的情况灵活进行决定和判断。