USB
文章平均质量分 87
一口Linux
《从零开始学ARM》作者,长期分享嵌入式、linux、网络、arm知识。
展开
-
USB的前世今生
另一个是高带宽需求,图像时代的来临对传输带宽有了更高的要求,这也让我们不得不重新思考怎么才能让主机和设备更好地连接,USB是一个理想的选择,它不仅拥有高达10Gb/s的带宽,而且USB标准扩展的各种设备类可以让众多的图像传感器直连USB主机,实时的图像传输变得非常方便。USB PD就是USB Power Delivery(USB电力传输),是目前主流的快充协议之一,这也是由USB-IF组织制定的,该规范可实现更高的电压和电流,输送的功率最高可达100W,并可以自由的改变电力的输送方向。...原创 2022-08-29 19:51:54 · 1338 阅读 · 2 评论 -
USB通讯原理
USB是轮询总线,USB主机与设备之间的数据交换都是由主机发起的,设备端只能被动的响应。USB数据传入或传出 USB 设备中的端点。USB 主机中的客户端将数据存储在缓冲区中,USB主机没有端点的概念。USB Host 和外围 USB Device 有不同的层,如下图所示。各层之间的连接是每个水平层之间的逻辑主机-设备接口。在逻辑连接之间使用USB Pipes传输数据。...原创 2022-08-04 23:48:13 · 7532 阅读 · 0 评论 -
有趣的USB接口和颜色分类
则是在某个标准实现下具体使用的物理接口(连接器),同一个标准会为不同的设备设计不同的接头。不过几家参与制定标准的大厂都是向着统一接口的目标努力的。每一种连接器有对应的公口和母口,并且我们用来连接两种不同设备的。)蓝色的USB接口是USB3.2Gen1(原USB3.0)其各自的小型化的连接器是。的是USB3.2Gen2(原USB3.1)版本中引入了支持正反面不区分插入的。线两端会用不同的连接器,这些内容在。从上面的内容中可以看出,所谓的。)关机后依然可以充电的接口。标准的命名,而所谓的。...原创 2022-08-01 23:03:50 · 18234 阅读 · 0 评论 -
STM32 USB Mass Storage 例程调试笔记
一、问题起因 近来有几个客户反映STM3210E的开发板的USB Mass Storage 例程有点问题,组长安排我来调试。Mass Storage例程在PC上实现两个U盘,一个是SD盘,一个是NAND Flash盘,把程序下载到开发板后,PC上能够检测到NAND Flash盘和SD盘,却提示磁盘要格式化,按照提示操作,格式化不成功,可用磁盘空间和已用磁盘空间都为0。调试前的准备二、调试前准备 调试之前花了三天的时间,大致的看了一下USB的框架,后来才发现,没什么必要,不过多学点知...原创 2021-03-05 18:26:21 · 2061 阅读 · 0 评论 -
USB设备---URB请求块
1.urb 结构体USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结构体。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23原创 2021-03-05 18:23:24 · 950 阅读 · 0 评论 -
监控USB设备插拔
最近做了UKey加密中设计到USB设备. 因UKEy是用来加密和执行PC与项目间通信加密的介质.从作用范围来讲不是传统意义上U盘作为存储介质来使用.其实熟悉网银驱动DR应该了解.在网银系统安全上一个最基本需求就是动态即时监控通信PC驱动以及设备列表通信变化.当然包括我们加密存储介质在PC上USB插拔.思路一.在WinFrom中通过拦截Windows 消息机制来实现. 类似定义MEssageForm窗体. 假如用鼠标左击一下窗体, 系统会收到一条 WM_LBUTTONDOWN 消息;当鼠标抬起, 系统又会原创 2021-03-05 18:22:47 · 1137 阅读 · 0 评论 -
USB HID 协议入门
USB HID设备类的应用场合 USB HID类是USB设备的一个标准设备类,包括的设备非常多。HID类设备定义它属于人机交互操作的设备,用于控制计算机操作的一些方面,如USB鼠标、USB键盘、USB游戏操纵杆等。但HID设备类不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。 USB HID设备的一个好处就是操作系统自带了HID类的驱动程序,而用户无需去开发驱动程序,只要使用API系统调用即可完成通信。USB HID设备类的通信管道 所有的HID设备通过U..原创 2021-03-05 18:21:38 · 2445 阅读 · 0 评论 -
Linux usb子系统 _写一个usb鼠标驱动
USB总线是一种典型的热插拔的总线标准,由于其优异的性能几乎成为了当下大小设备中的标配。USB的驱动可以分为3类:SoC的USB控制器的驱动,主机端USB设备的驱动,设备上的USB Gadget驱动,通常,对于USB这种标准化的设备,内核已经将主机控制器的驱动编写好了,设备上的Gadget驱动通常只运行固件程序而不是基于Linux, 所以驱动工程师的主要工作就是编写主机端的USB设备驱动。USB子系统框架下图表示了Linux中USB子系统的框架结构,和i2c一样,USB子系统也可分为三层:**设备原创 2021-03-05 18:20:55 · 407 阅读 · 0 评论 -
Linux usb子系统 _usb-skeleton.c精析
"./drivers/usb/usb-skeleton.c"是内核提供给usb设备驱动开发者的海量存储usb设备的模板程序, 程序不长, 通用性却很强,十分经典, 深入理解这个文件可以帮助我们更好的理解usb子系统以及usb设备驱动框架, 写出更好的usb海量存储设备驱动。匹配前既然是一个usb设备驱动的模板,那么就少不了构造一个usb_driver对象并将其注册到内核中,650 static struct usb_driver skel_driver = {651 .nam原创 2021-03-05 18:20:24 · 541 阅读 · 0 评论 -
Linux USB 鼠标驱动程序详解
USB 总线引出两个重要的链表!一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)的区别是什么?USB 设备驱动程序包含 USB 设备的一些通用特性,将与所有 USB 设备相匹.原创 2021-03-05 18:19:33 · 913 阅读 · 0 评论 -
Linux-写USB键盘驱动(详解)
1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的先来回忆下,我们之前写的鼠标驱动的id_table是这样:所以我们要修改id_table,使这个驱动为键盘的驱动,如下图所示:然后修改中断函数,通过printk()打印数据:我们先按下按键A为例,打印出0x04,如下图:我们再同时按下按键A和S,打印出0x04,0X16, 如下图:显然这些普通按键都是从buf[2]开始的,那第一个数组到底又存什么值?我们按完所有键盘按键,发现只有8个...原创 2021-03-05 18:18:56 · 1984 阅读 · 0 评论 -
Linux-USB鼠标驱动
本节目的: 将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键参考/drivers/hid/usbhid/usbmouse.c(内核自带的USB鼠标驱动)1.本节需要用到的宏如下:struct usb_device_id usbmouse_id_table []=USB_INTERFACE_INFO(cl,sc,pr); USB_INTERFACE_INFO()设置usb_driver驱动的id_table成员cl:接口类,我们USB鼠.原创 2021-03-05 18:17:14 · 828 阅读 · 1 评论 -
USB_4大描述符
在USB描述符中,从上到下分为四个层次:USB设备描述符(usb_device_descriptor)、USB配置描述符(usb_config_descriptor)、USB接口描述符(usb_interface_descriptor)、USB端点描述符(usb_endpoint_descriptor)、一个设置描述符可以有多个配置描述符一个配置描述符可以有多个接口描述符(比如声卡驱动,就有两个接口:录音接口和播放接口)一个接口描述符可以有多个端点描述符1.其中USB设.原创 2021-03-04 23:15:23 · 2277 阅读 · 2 评论 -
Linux-USB总线驱动分析
如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序为什么一插上就有会提示信息?是因为windows自带了USB总线驱动程序,USB总线驱动程序负责:识别USB设备,给USB设备找到对应的驱动程序新接入的USB设备的默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信。然后USB总线驱动程序都会给它分配一个地址(编号)PC机想访问USB总线上某个USB设备时,发出的命令都含有对应的地址(编号)USB是一种主从结构.原创 2021-03-04 23:14:36 · 652 阅读 · 1 评论 -
usb基础知识以及枚举过程介绍
一个USB设备有一个设备描述符,设备描述符里面决定了该设备有多少种配置,每种配置描述符对应着配置描述符;而在配置描述符中又定义了该配置里面有多少个接口,每个接口有对应的接口描述符;在接口描述符里面又定义了该接口有多少个端点,每个端点对应一个端点描述符;端点描述符定义了端点的大小,类型等等。由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描原创 2021-02-26 09:52:23 · 871 阅读 · 0 评论 -
Linux usb gadget框架概述
大大小小开发了四个与gadget相关的驱动,字符驱动、g_multi、g_ether、g_zero,在这里把自己对gadget的开发中自己的感悟记录之。想要了解gadget,必须了解其框架,知道composite、gadget、udc三者之间的联系,知道usb描述符的作用。一个usb device有一个设备描述符。有一个或者多个配置描述符一个配置描述符有一个或者多个接口(在gadget端,接口正式命名是usb_func)。一个接口有0个或者多个端点。编写gadget的关键..原创 2021-02-26 09:51:30 · 2480 阅读 · 0 评论 -
Linux usb子系统(二) _usb-skeleton.c精析
"./drivers/usb/usb-skeleton.c"是内核提供给usb设备驱动开发者的海量存储usb设备的模板程序, 程序不长, 通用性却很强,十分经典, 深入理解这个文件可以帮助我们更好的理解usb子系统以及usb设备驱动框架, 写出更好的usb海量存储设备驱动。匹配前既然是一个usb设备驱动的模板,那么就少不了构造一个usb_driver对象并将其注册到内核中,650 static struct usb_driver skel_driver = {651 .nam原创 2021-02-26 09:41:07 · 483 阅读 · 0 评论 -
Linux usb子系统(一) _写一个usb鼠标驱动
USB总线是一种典型的热插拔的总线标准,由于其优异的性能几乎成为了当下大小设备中的标配。USB的驱动可以分为3类:SoC的USB控制器的驱动,主机端USB设备的驱动,设备上的USB Gadget驱动,通常,对于USB这种标准化的设备,内核已经将主机控制器的驱动编写好了,设备上的Gadget驱动通常只运行固件程序而不是基于Linux, 所以驱动工程师的主要工作就是编写主机端的USB设备驱动。USB子系统框架下图表示了Linux中USB子系统的框架结构,和i2c一样,USB子系统也可分为三层:**设备原创 2021-02-26 09:40:34 · 694 阅读 · 4 评论