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

news2024/11/16 17:47:55

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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虽然比较小,但是特别容易插坏。所以建议大家在开始今天的实验之前,先准备一个转接器。这样,接口不容易坏,也方便进行后面的实验。

2、原理图

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

3、设备树

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

&ehci0 {
	status = "okay";
};

&ohci0 {
	status = "okay";
};

&usb_otg {
	dr_mode = "host";
	status = "okay";
};

&usbphy {
	usb0_id_det-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
	status = "okay";
};

        需要修改的就是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设备插入的打印通知,这样方便我们调试和测试,

5、编译烧入版本和zImage

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

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

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

6、开始测试

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

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

# [   21.667407] usb 1-1: new high-speed USB device number 2 using ehci-platform
[   21.868861] usb 1-1: New USB device found, idVendor=14cd, idProduct=1212, bcdDevice= 1.00
[   21.877061] usb 1-1: New USB device strings: Mfr=1, Product=3, SerialNumber=2
[   21.884244] usb 1-1: Product: Mass Storage Device
[   21.888984] usb 1-1: Manufacturer: Generic
[   21.893084] usb 1-1: SerialNumber: 121220160204
[   21.899255] usb-storage 1-1:1.0: USB Mass Storage device detected
[   21.906033] scsi host0: usb-storage 1-1:1.0
[   22.968591] scsi 0:0:0:0: Direct-Access     Mass     Storage Device   1.00 PQ: 0 ANSI: 0 CCS
[   23.064178] sd 0:0:0:0: [sda] 61454336 512-byte logical blocks: (31.5 GB/29.3 GiB)
[   23.072773] sd 0:0:0:0: [sda] Write Protect is off
[   23.078959] sd 0:0:0:0: [sda] No Caching mode page found
[   23.084289] sd 0:0:0:0: [sda] Assuming drive cache: write through
[   23.095959]  sda: sda1
[   23.102516] sd 0:0:0:0: [sda] Attached SCSI removable disk

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

# lsusb
Bus 003 Device 001: ID 1d6b:0002
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 002: ID 14cd:1212
Bus 002 Device 001: ID 1d6b:0001

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

# mount /dev/sda1 /mnt

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

# ls -l /mnt
total 584048
-rwxr-xr-x    1 root     root      27081744 Jan  9  2023 3-3-01???2022?FPGA???????.pdf
-rwxr-xr-x    1 root     root     145642597 Apr 10  2023 ???.zip
-rwxr-xr-x    1 root     root         13024 Mar 10  2023 ?????????.docx
drwxr-xr-x    2 root     root         16384 Jun  7  2023 ARM????
-rwxr-xr-x    1 root     root      32690417 Dec 31  2022 CH32V307EVT.ZIP
-rwxr-xr-x    1 root     root        391262 Mar  3  2018 KH_Navikit??SDK??????.pdf
-rwxr-xr-x    1 root     root     390483857 Dec  2  2022 MounRiver_Studio_Setup_V183.exe
drwxr-xr-x    2 root     root         16384 Oct 30  2022 System Volume Information
-rwxr-xr-x    1 root     root       1570645 Jul 12  2022 TCP&UDP????.rar
drwxr-xr-x    2 root     root         16384 May 16  2023 boost_arm
drwxr-xr-x    2 root     root         16384 Dec 10  2022 keil5
drwxr-xr-x    2 root     root         16384 Dec 10  2022 quartus
-rwxr-xr-x    1 root     root          1390 May 31  2023 tcp_mess.txt
drwxr-xr-x    2 root     root         16384 Mar 28  2023 zynq

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

# umount /mnt

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库原理与应用第2章作业

数据库原理与应用第2章作业 一.单选题(共15题&#xff0c;45分)二.填空题(共5题&#xff0c;25分)三.简答题(共1题&#xff0c;10分)四.计算题(共1题&#xff0c;20分) 一.单选题(共15题&#xff0c;45分) 1.(单选题&#xff0c;3分)关系数据库管理系统应能实现的专门关系运算…

chatgpt赋能python:Python怎么让输出换行?

Python怎么让输出换行&#xff1f; 对于有10年python编程经验的工程师&#xff0c;输出换行是一项基本的操作。在本篇文章中&#xff0c;我们将讨论Python中的换行方法&#xff0c;以便您可以更好地控制输出。 什么是Python的换行符&#xff1f; 在Python中&#xff0c;换行…

SPI总线

目录 声明 1、 SPI简介 2、 SPI特点 2.1采用主-从模式(Master-Slave) 的控制方式 2.2采用同步方式(Synchronous)传输数据 2.3数据交换(Data Exchanges) 2.4 SPI有四种传输模式 2.5 SPI只有主模式和从模式之分。 3、 工作机制 3.1概述 3.2 Timing 声明 转自&#xf…

多层感知机与深度学习算法概述

多层感知机与深度学习算法概述 读研之前那会儿我们曾纠结于机器学习、深度学习、神经网络这些概念的异同。现在看来深度学习这一算法竟然容易让人和他的爸爸机器学习搞混…可见深度学习技术的影响力之大。深度学习&#xff0c;作为机器学习家族中目前最有价值的一种算法&#…

6.compute部署nova服务

Nova-compute 是一个非常重要的守护进程&#xff0c;负责创建和终止虚拟机实例&#xff0c;即管理着虚拟机实例的生命周期&#xff0c;在计算节点上运行&#xff0c;负责管理节点上的实例Instance&#xff0c;例如&#xff1a;创建、关闭、重启、挂起、恢复、中止、调整大小、迁…

chatgpt赋能python:Python计算圆的周长

Python计算圆的周长 Python是一种简单易学的编程语言&#xff0c;被广泛应用于各种领域&#xff0c;包括科学、数据分析、网站开发等等。在本文中&#xff0c;我们将介绍如何使用Python计算圆的周长。 什么是圆的周长 圆的周长是指圆周的长度&#xff0c;也就是圆内任意两点…

chatgpt赋能python:Python计算加法-简单易学,快速实现

Python计算加法 - 简单易学&#xff0c;快速实现 介绍 Python是一种高级编程语言&#xff0c;因其优雅简洁的语法和强大的功能而备受开发者的喜爱。Python不仅可以应用于数据科学领域&#xff0c;也广泛用于Web开发、网络编程、图形界面和游戏等领域。在这篇文章中&#xff0…

Java之异常

Java之异常 异常 抛出异常 所有标准异常类都有两个构造器&#xff1a;一个是默认构造器&#xff0c;另一个是接收字符串作为参数的构造器。使用throw关键字来抛出异常对象。可以抛出任何类型的Throwable对象&#xff0c;它是异常类型的根类。但是通常来说&#xff0c;我们对于…

【IC设计】数字IC设计读书笔记

文章目录 《专用集成电路设计实用教程》集成电路系统的组成集成电路的设计流程综合转化逻辑优化映射同步电路和异步电路亚稳态单时钟同步设计的时序约束目标库和初始环境设置DC如何计算每个逻辑单元的延迟&#xff08;Cell Delay&#xff09;&#xff1f;target librarylink li…

举个栗子~Tableau 技巧(255):文本表中高亮最新日期的数据

对于需要每天查看业务数据的分析用户来说&#xff0c;在刷新工作簿的数据之后&#xff0c;如果能高亮显示当天的数据&#xff08;如下图&#xff09;&#xff0c;就可以事半功倍了&#xff01; 那么&#xff0c;在 Tableau 中该如何高亮文本表最新的数据呢&#xff1f;今天的栗…

什么是HMI和SCADA?两者有什么区别

前言 几十年来&#xff0c;工业控制系统在工业自动化中发挥了重要作用&#xff0c;它允许过程制造商从生产车间采集、分析、处理数据。 在当今瞬息万变的工业环境中&#xff0c;制造商和公用事业公司必须采用现代HMI/SCADA和数字化转型&#xff0c;以跟上变化的步伐&#xff0…

阿里云云主机:ECS/轻量/虚拟主机/GPU/云电脑详解

阿里云云主机分为云虚拟主机、云服务器ECS、轻量应用服务器、GPU云服务器、弹性裸金属服务器、专有宿主机、FPGA云服务器、高性能计算E-HPC、无影云电脑等&#xff0c;阿里云百科来详细说下阿里云云主机详解&#xff1a; 目录 阿里云云主机 云服务器ECS 轻量应用服务器 云…

Java之面向对象

Java之面向对象 一切皆对象。 编译型语言&#xff1a;编译器会将我们编写的源码一次性地编译成计算机可识别的二进制文件&#xff0c;然后计算机直接执行。如c、c等。 解释型语言&#xff1a;在程序运行时&#xff0c;解释器会一行行读取我们的代码&#xff0c;然后实时地将这…

重学图结构

图 图的描述 G (V, E)&#xff0c;一个偶对V&#xff1a;顶点&#xff08;数据元素&#xff09;组成的有穷非空集合{E}&#xff1a;边的有穷集合、图的逻辑结构&#xff1a;多对多 相关术语 无向图&#xff1a;每条边都是无方向的&#xff0c;如下图1 有向图&#xff1a;…

信息技术专业标准体系框架设计研究与思考

为了支撑企业数字化转型智能化发展工作&#xff0c;近期对信息技术专业标准体系进行了简单的梳理&#xff0c;借助ChatGPT进行分类设计分析&#xff0c;并对国际、行业及其他公司的信息技术专业标准体系进行了调研学习&#xff0c;最终形成了信息技术专业标准体系框架的思考建议…

【备战秋招】每日一题:4月23日美团春招第三题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检&#xff0c;为了更好的阅读体检&#xff0c;&#xff0c;可以查看我的算法学习博客第三题-农村大亨 在线评测链接:P1247 题目内容 塔子哥是一个喜欢种田类的游戏的人&#xff0c;他觉得这样的游戏可以让他体验到农民的乐趣&#xff0c;同时也可以锻炼他的…

MYSQL中 find_in_set() 函数用法详解

MYSQL中 find_in_set() 函数用法详解 官方涵义&#xff08;MySQL手册中语法说明&#xff09; FIND_IN_SET(str,strlist) &#xff1a; str 要查询的字符串&#xff0c;strlist 需查询的字段&#xff0c;参数以”,”分隔&#xff0c;形式如 (1,2,6,8,10,22)&#xff1b;该函数的…

分布式存储与并行处理环境配置:Hadoop、HBase和Spark等

本文介绍Linux系统中配置Hadoop、HBase和Spark环境&#xff0c;包括安装Java运行环境、下载安装包、进行配置和测试。通过这种方式&#xff0c;可以搭建一个强大的分布式计算环境&#xff0c;用于处理大规模数据集。为了成功配置Hadoop、HBase和Spark环境&#xff0c;需要理解它…

chatgpt赋能python:Python实现输出在同一行的技巧

Python实现输出在同一行的技巧 介绍 在Python中&#xff0c;我们经常需要将一些文本或者变量输出到控制台上&#xff0c;以便查看或者进行交互式调试。但是默认情况下&#xff0c;每次输出都会换行展示&#xff0c;这在某些情况下可能会让输出显得比较混乱&#xff0c;尤其是…

Ubuntu安装及使用教程

Ubuntu安装及使用教程 一、基本介绍二、vmware下安装ubuntu系统三、ubuntu系统使用 回到目录   回到末尾 一、基本介绍 对于ubuntu而言&#xff0c;就是linux操作系统的具体&#xff0c;而linux对于ubuntu来说就是他的抽象&#xff1b;在linux操作系统中&#xff0c;因为应用…