Linux驱动USB学习笔记(一)

USB简介

USB(Universal Serial Bus)通用串行总线,是一种外部总线标准,用于规范电脑与外部设备的连接和通讯。

USB系统架构

usb系统拓扑结构:

USB主控制器:

USB主控制器负责处理主机与设备之间的电气和协议层的互联。创建的USB主控制器规格有:

OHCI:主要是非PC系统啥花姑娘的USB芯片

UHCI:大多是非Intel和Via主板上的USB控制器芯片,它们都是由USB1.1规格的。

EHCI:是有Intel等几个厂商研发,兼容OHCI、UHCI,遵循USB2.0规范。

USB HUB:

每个USB Host控制器都会自带一个USB Hub,被称为根(Root)Hub。这个根Hub可以接子(Sub)Hub,每个Hub上挂载USB设备最多可以连接127个设备。当USB设备插入到USB Hub或从上面拔出时,都会发出电信号通知系统。

USB设备逻辑结构:

在USB 设备逻辑结构组织中,包含设备、配置、接口、端点是个层次。设备通常有一个或多个配置,配置通常有一个或多个接口,不同的配置使设备表现出不同的功能;接口有零个或多个端点,接口代表一个基本功能,是USB设备驱动程序控制对象,一个功能复杂的USB设备可以有多个接口,而接口是端点的汇集。

USB设备中的唯一可寻址度分是设备端点,它位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。主机和设备的通信最终作用与设备上的各个端点,它是主机与设备间通信流的一个逻辑终端。

每个USB设备有一个唯一的地址,这个地址是在设备连上主机时,有主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时给定的。每个端点都是一个简单的连接点,或者支持数据流设备,或者支持其流出设备,两者不可兼得。每一个USB设备都有一个0号端点,用于主机对USB设备的控制。

USB设备描述符:

每一个USB设备内部,也包含类似于PCI配置寄存器这样国定格式的数据,通过这些数据,USB主机就可以获得USB设备类型、生产厂商等信息。这组固定格式的数据,我们称之为USB描述符。标准USB设备有5中USB描述符:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符。(一个设备只有一个设备描述符,一个设备描述符可以包含多个配置描述符,一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符)

USB设备描述符是18个字节;配置描述符占8个字节;接口描述符占8个字节;端点描述符占7个字节。

 

USB数据传输

针对设备对系统资源需求的不同,在USB股繁重规定了4中不同的数据传输方式:等待传输、中断传输、控制传输、批量传输。

控制传输主要用来传输设备控制指令、设备状态查询以及确认命令。当USB设备收到这些数据和命令后,将依据先进先出的原则按队列方式处理到达的数据。

中断传输传送数据量很小,但是这些数据需要及时处理,以达到实时效果,此方式主要用在键盘、鼠标以及游戏手柄等待外部设备上。当USB宿主要求设备传输数据时,中断端点会以一个固定的速率传送数据。

等时传输用来连接对数据的在正确性要求不高而对时间极为敏感的外部设备。等时传输方式以固定的传输速率,连续不断的在主机与USB设备之间传输数据,在传输数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。

批量传输用来要求正确无误的数据。

事务:

一次传输由一个或多个事务(stransaction)构成,事务可以分为in事务,out事务,setup事务。

包:

一个事务由一个或多个包(packet)构成,包可分为令牌包(setup),数据包(data),握手包(ACK)和特殊包。

域:

一个包由多个域构成,域可分为同步域(SYNC)、标识域(PID)、地址域(ADDR)、端点域(ENDP)、帧号域(FRAM)、数据域(DATA)、校验域(CRC)。

USB设备枚举

枚举是让HOST认得这个USB设备,并且为该设备准备资源,建立好主机和设备之间的数据传递机制。

设备枚举大致过程:

获取设备描述符->复位->设置地址->再次获取设备描述符->获取涉笔描述符->获取接口、端点描述符->获取字符串描述符->选择设备配置

 USB协议-软件层次

LinuxUSB架构

MassStorage

In computing,mass storage refers to the storage of large amounts ofdata int a persisting and machine-readable fashion.Stroage media for massstorage include hard disks,floppy disks,flash memory,opticaldiscs,magneto-optical discs,magnetic tape,drum memory,punched tapy(mostlyhistoric)and holograghic memory(experimental).Mess storage includes deviceswith removable and nonremovable media.It does not include random accessmemory(RAm),which is volatile in that it loses its contents after power loss.

在计算机、大规模存储数据和机器可读的方式中,存储媒介包括存储硬盘、软盘、闪存、光碟、磁光盘、磁条、鼓存储器、穿孔带和全息图存储器,它具有可移动和不可移动的媒介,不包括随机存储器,它是永久性的。

Mass Storage的支持:

General setup—>(支持热插拔)

         [*]Configure standardkernel features(for small systems)-->

                   [*]Support forhot-pluggable devices(NEW)

Device Driver—>(SCSI支持)

         SCSI device support—>

                   <*>SCSIdevice support

                   <*>SCSIdisk support

                   <*>SCSIgeneric support

Device Driver—>(USB支持)

         [*]USB support—>

                   <*>Supportfor Host-side USB主控制器支持

                   [*]USB devicefilesystem设备文件系统

                   <*>OHCIHCD support(OHCI驱动)

                   <*>USBMass Storage support

                   [*]USB Monitor

File systems-->(文件系统支持)

         DOS/FAT/NTFilesystems-->

                   <*>MSDOSfs support

                   <*>VFAT(Windows-95) fs support

                   (936)Defaultcodepage for FAT

                   (cp936)Default  iocharset for FAT

         Partition Types-->

                   [*]PC BIOS(MSDOS partition tables) support

         Natice LanguageSupport-->(语言支持)

                   <*>SimplifiedChinese charset (CP936,GB2312)

                   <*>NLSUTF8

USBHID

Usb HID是Human Interface Device的缩写,HID设备是直接与人交互的设备,例如键盘、鼠标、游戏杆等。只要符合HID累呗规范的设备都是HID设备。

Device Driver—>(USB支持)

         [*]USB support—>

         <*>OHCI HCD support(OHCI驱动)

         [*]HID Devices-->

                   <*>USBHumen Interface Device (full HID) support

RNDIS

远程网络驱动接口规范,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在TCP/IP,让USB设备看上去像一块网卡。

Device Driver—>(USB支持)

         [*]USB support—>

                   <*>USBGadget Support—>

                            USBPeripheral Controller (…………)

                            <M>USBGadget Drivers

                            <M>EthernetGaget (…………)

CDC/ACD

把USB模拟成串口

Device Driver—>(USB支持)

         [*]USB support—>

                   <*>USBModem (CDC ACM)support

                   <*>USBGadget Support—>

                   <*>SerialGadget (with CDC ACM …………..)

猜你喜欢

转载自blog.csdn.net/qq_35699583/article/details/80902894