1

全志V3S嵌入式驱动开发(基于usb otg的spi-nand镜像烧入)

 1 year ago
source link: https://blog.csdn.net/feixiaoxing/article/details/131337408
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

全志V3S嵌入式驱动开发(基于usb otg的spi-nand镜像烧入)

original.png
嵌入式-老费 newUpTime2.png 已于 2023-06-22 14:21:31 修改 articleReadEyes2.png 117

#2023 博客之星评选已开启--成为城市领跑者#

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面我们说过spi nand驱动,但是这个驱动是建立在linux系统从sd卡加载的情况下进行的。开发测试的情况下,这么做或许是可以的,但是如果是最终量产的话,我们应该怎么做呢,肯定不可能要求客户再买一个sd卡进行操作处理了。所以这个时候,v3s的手册上提醒我们,完全可以通过usb otg的方法进行镜像烧入。

1、再次学习v3s的系统启动方式

d918558af242460b88308571192a9b69.png

         上面这张图,我们已经看过几次了。但凡遇到boot方面的问题,这张图总要被拿出来说一说。从图中很明显的看出,v3s会在两种情况下进入usb boot状态。第一种,就是查看到v3s的一根pin状态为0的时候;第二种就是sdc0、spi0 nor、spi0 nand都失败的情况下,也会进入到usb boot状态。所以,对于我们来说,最好的方法就是拉低v3s的一根pin,直接进入usb boot operation。

8282dd2c571b4e4a8ff7e493b485ca7c.png

         从电路图上可以看出,这里有一个s6开关,如果需要v3进入usb状态,那么这一个s6肯定是需要按下的。所谓的SPI_MISO,其实就是master in slave out,这个master就是v3s,而slave就是spi nandflash。因此一旦s6被按下之后,信号接地,默认是0,那么v3s就没有办法从spi nandflash读取到数据,因为读不到数据,系统启动也就无从谈起了。

f1f52ebc15604477848ed907907b1ee5.png

        对于v3s来说,进入usb状态之后,一方面它会从usb otg获取数据,另外一方面可以把数据通过spi烧入到nand flash上面。大家可以把这个过程看成是v3s有一段默认的固化逻辑,这部分是芯片自带的流程,不需要外界的参与。

2、实操让v3s进入usb boot状态

        我们的v3s是利用usb进行供电的,不管这种供电是来自于type c,或者usb otg,想让系统上电后马上就进入到usb boot状态,仅仅靠手快速按下s6,是很难实现的。所以,这个时候一般需要搭配上复位键一起操作。

7364e8520d1443b38a544c067cbdf81f.png

         为了保证v3s进入usb boot状态,最好按照下面这个操作步骤进行:

        1)拔掉sd卡;

        2)插入usb otg上电,系统启动,此时spi nand是否已经有镜像文件都不重要;

        3)按住复位键s5和spi键s6;

        4)先松开s5,让v3s复位;

        5)5秒钟之后松开s6,让v3s进入usb state。

        实际操作的时候,s5和s6同时按住不太容易,可以手搭在rj45的连接器上面,这样会比较方便一点。如果一切比较顺利的话,打开设备管理器,可以看到生成了一个新的设备节点,如下图黄色部分,只是这个设备还没有关联的windows驱动,

b0ea9b2300894423a15e160ccd55ddcf.png

3、安装PhoenixSuit软件

        为了给usb安装驱动,我们需要安装一下PhoenixSuit软件。这个软件不仅可以帮助安装usb驱动,最终下载也是利用的这个软件。PhoenixSuit的下载地址在这,

https://www.downkuai.com/soft/71844.html

         下载后,正常安装就可以了,中间如果提示驱动安装,选择默认即可。安装好了PhoenixSuit之后,就可以用它目录下的驱动文件进行usb驱动安装了。

        在设备管理器中选择好刚才未识别的设备节点,直接从指定目录安装驱动即可,这个目录就是PhoenixSuit软件在windows系统安装的一个位置,

2e98eaf18e8a40e098b487852d9d88ba.png

         安装后,如果没有大问题的话,就可以看到,新的usb节点已经被识别了,黄色的点也不见了,

025ddbc230d44cbaabcbe58479521f89.png

         上面VID_1f3a_PID_efe8这个设备,就是安装好驱动的usb节点。网上有很多提示,比如说用zadig安装驱动,这个方法其实不对。至少说,如果我们希望用PhoenixSuit进行镜像文件下载的话,最好还是选用PhoenixSuit提供的usb驱动,这样可以避免很多麻烦、少走很多的弯路。

        对这一过程不太熟悉的朋友可以反复练习一下,比如删除驱动,重新安装驱动,这样可以加深一下印象,

a02f1cf0c0924d70aecd9ba681d5d41e.png

4、安装下载镜像文件

        因为我们自己还没有准备好对应的、基于nandflash的镜像文件,所以这个时候可以直接参考之前淘宝商家提供的镜像,也就是cherrypi-v3s-linux-2020-07-14.img。使用PhoenixSuit下载image也很简单,首先就是打开PhoenixSuit,选择一键刷机,设置好img文件的位置,注意最好同时选择格式化,单击立即升级,中间弹出的各种告警信息都可以忽略,

f991163017224335a01bb71e0ef2944c.png

         同时按下s5和s6,先松开s5,让v3s进入到复位模式。几秒之后,松开s6,这样就可以进入usb状态了。因为我们之前已经在PhoenixSuit点击了升级命令,所以这个时候软件自动就开始准备image下载了,

7b2cf79c891e438a8b1fe1667777b2f9.png

         整个下载的过程还是很顺利的,一般的话几十秒钟就可以快速下载完。下载完之后,就可以拔掉sd卡,启动v3s系统,确认v3s是不是真的可以从spi nandflash启动。

57b0c685192e497d81226cd7b1d75140.png

        整个spi nandflash的下载有两个难点,第一个是如果正确地让v3s进入到usb状态;另外一个就是如何给usb节点安装正确的驱动。两者缺一不可,很容易犯错误。此外,由于整个开发板按键比较小,操作上面也着实不太方便,这个时候对练习的同学来说也是一种考验。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK