USB模块学习——USB设备
来源:互联网 发布:日本手机直播软件 编辑:程序博客网 时间:2024/05/19 08:40
USB设备
USB设备包含3部分内容:配置,接口和端点。它们之间的关系如下:
1)设备可以有一个或多个配置
2)配置可以有一个或多个接口
3)接口可以有一个或多个设置
4)接口可以有零个或多个端点
1,端点
一个USB端点的种类有4种,主要是用来描述数据是如何传送的。它们分别是:
1)CONTROL(控制):通常用来配置端点、获取设备信息、发送命令到设备或获取关于设备的状态信息。
2)INTERRUPT(中断):主要用在小数据传送方面。应用:键盘和鼠标。
3)BULK(块):主要用在大数据传送方面。应用:U盘。
4)ISOCHRONOUS(同步):主要用在实时数据传送方面,数据可能会丢失一些。应用:音频和视频。
1.1 端点数据结构
端点数据结构用struct usb_host_endpoint来表示,它包含了struct usb_endpoint_descriptor。usb_endpoint_descriptor主要用于描述真实端点信息。驱动人员需要关心的成员有bEndpointAddress(特定端点USB地址,端点方向)、bmAttributes(端点类型,同步、块、中断端点类型)、wMaxPacketSize(端点一次可处理的最大数据大小),bInterval(中断时间间隔)。
2,接口
USB端点被绑定在接口中。一个USB接口只处理一类USB逻辑连接。可以用多个接口来做预备设置。
2.1 接口数据结构
接口数据结构用struct usb_interface来表示。一个接口对应一个USB驱动。该结构是内核传递给USB驱动,并由USB驱动负责控制。驱动人员需要知道的成员有
struct usb_host_interface *altsetting((多套)端点预备设置)、unsigned num_altsetting(预备设置的个数)、struct usb_host_interface *cur_altsetting(当前的设置)、int minor(次编号)。
3,配置
USB接口被绑定到USB配置上。一个USB设置可以有多个配置以便改变设备的状态(不建议,Linux处理多配置USB不是太好)。
3.1配置数据结构
配置数据结构用struct usb_host_config来表示。USB设备数据结构用struct usb_device来表示。USB设备驱动通常不需要读写这些数据结构。
4 sys下SUB设备表示
/sys/devices/.../usb2/2-1表示的是USB设备;/sys/devices/.../usb2/2-1/2-1:1.0表示的是USB接口;下面是各个部分的意思:
usb2中的2表示的第2个根集线器。根集线器就是USB控制器(?)。2-1中的1表示的是设备插入的端口号1。2-1:1.0表示的是根集线器号-端口号:配置号.接口号。从这也可以很好的看出一个驱动对应一个接口。
- USB模块学习——USB设备
- USB学习总结3—USB gadget设备驱动实现(usb串口功能)
- USB自定义设备驱动模块
- USB学习系列之二——USB设备的插入检测
- USB学习系列之三——USB设备的枚举
- USB学习系列之三——USB设备的枚举
- USB学习系列之二——USB设备的插入检测机制
- USB学习总结2—USB host设备驱动实现(U盘、鼠标)
- STM32F107——OTG模块之USB设备之虚拟串口移植(一)
- STM32F107——OTG模块之USB设备之虚拟串口移植(二)
- STM32F107——OTG模块之USB设备之虚拟串口移植(三)
- STM32F107——OTG模块之USB设备之虚拟串口移植(四)
- USB 设备相关驱动模块(2.6内核)
- linux设备驱动——USB
- 《Linux设备驱动程序》——USB驱动程序
- USB设备
- usb设备
- 4.10 基于OHCI的USB主机 —— USB设备取得设备描述符
- 《java并发编程实战》基础构建模块(五)
- qt 笔记五(裁剪)
- easyui datagrid获取当前页码(分页情况下)
- ntp 服务编译安装 及 更改端口
- 用户空间与内核空间,进程上下文与中断上下文[总结]
- USB模块学习——USB设备
- ZA7783:MIPI转LVDS/MIPI转RGB888/RGB转LVDS
- Eclipse卸载Android-ADT插件及删除插件安装/更新地址
- java list<string>集合 传递值给js的数组
- STL之八 deque
- Cookie
- Docker: 现在和未来
- http请求头/http响应头详解
- 用命令行执行可执行文件笔记