3

全志V3S嵌入式驱动开发(u盘写读)

 1 year ago
source link: https://blog.csdn.net/feixiaoxing/article/details/131256270
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嵌入式驱动开发(u盘写读)

嵌入式-老费 已于 2023-06-17 05:49:14 修改 241

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

        对于现在的soc来说,基本上usb是标配的。它一般需要支持usb host、device和otg三种模式。简单解释下,host模式,就是v3s把自己当成了主机,其他设备都是从设备;device模式,相当于别人是主机,v3s是从设备,别人来访问它;otg模式,则可以把usb看成是一种传输媒介,比如可以把usb看成是一条虚拟网线,用usb模拟出网线的效果,实现相应的开发模式。v3s的开发板上面,usb口被做成了micro usb,优点是口变小了,缺点是不太好用,容易被搞坏。此外,对于v3s来说,usb也是spi nandflash镜像烧入最主要的方法。

1、准备一个micro usb转母usb的插口

        micro usb虽然比较小,但是特别容易插坏。所以建议大家在开始今天的实验之前,先准备一个转接器。这样,接口不容易坏,也方便进行后面的实验。

5f221ab4a429cc03a4bdbdaf4e01958d.png

2、原理图

2cc0139047354d2c83af98c83046d76d.png

         整个原理图的部分还是很简单,USB_P、USB_N都是直接链接v3 soc的。这里的USB_ID其实是一个gpio口,主要用USB口检测的,后面的设备树会看到这部分。

3、设备树

        在sun8i-v3s-licheepi-zero.dts文件当中,usb的配置部分都已经写好了,比如



newCodeMoreWhite.png

        需要修改的就是usb_otg中的drv_mode,之前是otg,这里需要修改成host。另外一个地方usb0_id_det-gpios就是之前说的USB_ID,从5和6两个配置看,说明对应的gpio连线是PF6。而原理图上PF6连接的是sd卡上面,这算是蛮有趣的一点。而原理图上面,gpio被连接到42引脚,即PB3。

        实际测试的时候,我们发现USB_ID配置成5和6,一点都不影响最终的测试。驱动代码中,主要也是usbphy用到这个gpio信息。

4、修改驱动配置

        和内核4.2.y配置项比较,升级后5.2.y中,配置的内容多了很多。大部分和usb、u盘相关的配置都已经被设置好,我们唯一需要做的,就能就是打开usb设备插入的打印通知,这样方便我们调试和测试,

fcd11609deef473f8922b512709aec20.png

5、编译烧入版本和zImage

        因为设备树、内核配置都发生了变化,所以这部分需要重新进行编译,即

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

        生成新的dtb文件和zImage文件后,就可以准备相应的烧入工作。

6、开始测试

        因为我们主要是测试usb的host特性,那么使用u盘来测试无疑是最简单的一个方法。测试的标准很简单,首先看u盘插进去的时候有没有打印提示;然后查看u盘的内容有没有办法mount到开发板;最后看有没有办法正常读写。

        当我们插入u盘的时候,可以看到这样的打印,



newCodeMoreWhite.png

        lsusb的时候,也可以查看到当前确实多了一个usb,

        除此之外,我们还看到设备还多了sda、sda1这样的设备节点。有了这些节点,就可以把u盘mount到目录上面了,

# mount /dev/sda1 /mnt

        这个时候ls -l /mnt就可以看到全部的u盘内容,



newCodeMoreWhite.png

        如果我们有数据拷贝的需要,只需要对/mnt进行操作即可。所有操作完毕之后,umount这个目录,

# umount /mnt

        上面就是v3s进行usb host模式测试的全部过程,大家可以根据自己的需要进行测试,同时加深一下对usb的相关认知。usb非常重要,很多v3s没有的驱动,都可以通过usb驱动来解决的。这或许就是usb最大的优点。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK