【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
关于v3s的镜像烧入,大约有五种方法。前面陆陆续续已经介绍了三种方法,实际工作中具体使用哪一种,大家可以根据自己的情况灵活进行决定。这几种方法,有的使用比较简单,但是不太好调试;有的稍微复杂一点,但是方便自己一步一步调试,所以使用的时候,可以多试一试,不要遇到一点问题就打退堂鼓。
1、基于sd卡的镜像烧入方法
这种方法,就是把uboot、dtb、kernel和rootfs都烧入在一张sd卡上面。它最大的好处就是只需要准备一张高质量的sd卡,将image通过win32diskimager烧入即可。详细的内容,可以参考之前这篇文章,
https://blog.csdn.net/feixiaoxing/article/details/130897035?spm=1001.2014.3001.5501
2、基于PhoenixSuit的镜像烧入方法
基于PhoenixSuit,本质上是通过usb otg数据输入,烧入到nand flash上面。它的好处就是,只需要一根usb otg连接线,就可以实现image的烧入。具体内容,我们之前已经讨论过,链接地址如下,
https://blog.csdn.net/feixiaoxing/article/details/131337408?spm=1001.2014.3001.5501
3、基于sunxi-fel工具的镜像烧入方法
前面我们做实验的时候,发现如果是spi nand flash,不能把image下载到nor flash上面。因此,为了解决这个问题,我们可以借助官方提供的sunxi-fel工具,来实现nor flash的烧入。同样,这个方法前面也介绍过,链接如下,
https://blog.csdn.net/feixiaoxing/article/details/131347010?spm=1001.2014.3001.5501
4、基于uboot和y modem的镜像烧入方法
在实际测试sunxi-fel的时候,我们发现,如果只是烧入简单的uboot bin文件,成功的概率还是很高的,但是如果烧入的文件很大,比如说整个文件有16M、32M,那么失败的风险很高。鉴于此,我们提出了使用uboot+y modem来实现镜像文件烧入的方法。
首先,还是需要sunxi-fel通过uboot子命令,将uboot加载到sram空间执行,
sudo ../ sunxi-tools-3s-spi/sunxi-fel uboot u-boot-sunxi-with-spl.bin
这个时候uboot已经起来了,下面就开始准备用uboot里面的loady命令实现文件传递。要实现这个目的,可以使用windows下面的secure crt软件,或者linux下面的minicom软件。因为安装了ubuntu虚拟机,所以我们选择了后者。
将usb串口接入到ubuntu虚拟机,
安装好minicom,
shell> sudo apt-get install minicom
确认设备节点已经被ubuntu找到,
shell> ls -l /dev/ttyUSB*
crw------- 1 root root 188, 0 6月 24 11:45 /dev/ttyUSB0
配置minicom,输入sudo minicom -s,选择“Serial Port Setup”,修改好端口名称,
保存为dfl,接着Exit from Minicom,
重新输入sudo minicom,这个时候,就可以进行串口通信了,
如果需要退出的话,输入ctrl + a、z,接着输入x即可。
有了minicom,uboot也起来了,接下来就可以用loady命令开始准备数据传递了,假设我们需要把dtb文件拷贝到0x41800000,那么首先输入loady 0x41800000,接着输入ctrl+a、s,选择y modem,
确认之后,通过上下移动选择文件,空格单击确认文件,单击回车后就可以开始传输了。如果是选择目录,那么空格双击就好了,
传输结束之后,就可以看到相应的提示信息,
当然这个操作,只是把数据从pc经过串口传递到了v3s的ddr空间。如果需要把镜像copy到flash上面,还需要sf命令的帮忙,这样才能真正烧入到nor flash或者nandflash当中。
sf probe 0
sf read
sf write
sf erase
sf update
5、基于sd卡和linux系统的镜像输入
这种方法基于linux系统,本身就是等sd卡完全启动之后,把nor flash或者nand flash当成系统的一个外设进行处理。所以,它有两个重要的依赖条件,一个是nor flash驱动被加载;另外一个就是nand flash驱动被加载,至于实际使用哪一种,根据具体情况来定。
好在前面我们已经处理好了nandflash驱动,链接地址在这,
https://blog.csdn.net/feixiaoxing/article/details/131239198?spm=1001.2014.3001.5501
也处理好了norflash驱动,链接地址在这,
https://blog.csdn.net/feixiaoxing/article/details/131353575?spm=1001.2014.3001.5501
有了这两个驱动,我们在设备启动后,只要确认mtd节点存在,就可以通过dd命令就可以实现镜像文件的写入了,类似于这样读取文件,
dd if=/dev/mtd0 of=4k.bin bs=4096 count=1
或者写入文件,
dd if=flashimg.bin /dev/mtd0