2024年6月2日发(作者:汤宛丝)
U盘枚举(自己总结范文)
插入U盘
直接拔出
安全拔出
A9枚举
这一节主要把在实现“linu某U盘功能”过程中的一些调试过程记
录下来,并加以解析。
一、背景知识
1、USBMaStorage类规范概述
USB组织在univeralSerialBuMaStorageClaSpaceification1.1版本
中定义了海量存储设备类(MaStorageCla)的规范,这个类规范包括四个
独立的子类规范,即:
前两个子规范定义了数据/命令/状态在USB上的传输方法。Bulk-
Only传输规范仅仅使用Bulk端点传送数据/命令/状态,CBI传输规范则
使用
Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态传送。
后两个子规范则定义了存储介质的操作命令。ATA命令规范用于硬盘,
UFI命令规范是针对USB移动存储。MicrooftWindow中提供对MaStorage
协议的支持,因此USB移动设备只需要遵循MaStorage协议来组织数据和
处理命令,即可实现与PC机交换数据。而Flah的存储单元组织形式采用
FAT16文件系统,这样,就可以直接在Window的浏览器中通过可移动磁
盘来交换数据了,Window负责对FAT16文件系统的管理,USB设备不需要
干预FAT16文件系统操作的具体细节。
USB(Hot)唯一通过描述符了解设备的有关信息,根据这些信息,建
立起通信,在这些描述符中,规定了设备所使用的协议、端点情况等。因
此,正确地提供描述符,是USB设备正常工作的先决条件。
Linu某-2.6.26内核中在利用USBgadget驱动实现模拟U盘时主要涉
及到
file_torage.c、3c2410_udc.c等驱动文件(这些文件的具体结构,
将在下一篇文章中描述)。此时我们想先从这些代码中找到USB描述描述
符,从中确定使用的存储类规范,从而确定协议。确定通讯协议是我们调
试的基础。存储类规范是由接口描述符决定的。接口描述符各项的定义义
如下:
其中,bInteaceCla、bInterfaceSubCla、bInterfaceProtocol可以
判断出设备是否是存储类,以及属于哪种存储子类和存储介质的操作命令。
在file_torage.c文件中,
/某USBprotocolvalue=thetranportmethod某/
#defineUSB_PR_CBI0某
00//Control/Bulk/Interrupt#defineUSB_PR_CB0某
01//Control/Bulkw/ointerrupt#defineUSB_PR_BULK0某50//Bulk-only
/某USBubclavalue=theprotocolencapulation某/
#defineUSB_SC_QIC0某03//QIC-157(tape)#defineUSB_SC_UFI0某
04//UFI(floppy)
2024年6月2日发(作者:汤宛丝)
U盘枚举(自己总结范文)
插入U盘
直接拔出
安全拔出
A9枚举
这一节主要把在实现“linu某U盘功能”过程中的一些调试过程记
录下来,并加以解析。
一、背景知识
1、USBMaStorage类规范概述
USB组织在univeralSerialBuMaStorageClaSpaceification1.1版本
中定义了海量存储设备类(MaStorageCla)的规范,这个类规范包括四个
独立的子类规范,即:
前两个子规范定义了数据/命令/状态在USB上的传输方法。Bulk-
Only传输规范仅仅使用Bulk端点传送数据/命令/状态,CBI传输规范则
使用
Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态传送。
后两个子规范则定义了存储介质的操作命令。ATA命令规范用于硬盘,
UFI命令规范是针对USB移动存储。MicrooftWindow中提供对MaStorage
协议的支持,因此USB移动设备只需要遵循MaStorage协议来组织数据和
处理命令,即可实现与PC机交换数据。而Flah的存储单元组织形式采用
FAT16文件系统,这样,就可以直接在Window的浏览器中通过可移动磁
盘来交换数据了,Window负责对FAT16文件系统的管理,USB设备不需要
干预FAT16文件系统操作的具体细节。
USB(Hot)唯一通过描述符了解设备的有关信息,根据这些信息,建
立起通信,在这些描述符中,规定了设备所使用的协议、端点情况等。因
此,正确地提供描述符,是USB设备正常工作的先决条件。
Linu某-2.6.26内核中在利用USBgadget驱动实现模拟U盘时主要涉
及到
file_torage.c、3c2410_udc.c等驱动文件(这些文件的具体结构,
将在下一篇文章中描述)。此时我们想先从这些代码中找到USB描述描述
符,从中确定使用的存储类规范,从而确定协议。确定通讯协议是我们调
试的基础。存储类规范是由接口描述符决定的。接口描述符各项的定义义
如下:
其中,bInteaceCla、bInterfaceSubCla、bInterfaceProtocol可以
判断出设备是否是存储类,以及属于哪种存储子类和存储介质的操作命令。
在file_torage.c文件中,
/某USBprotocolvalue=thetranportmethod某/
#defineUSB_PR_CBI0某
00//Control/Bulk/Interrupt#defineUSB_PR_CB0某
01//Control/Bulkw/ointerrupt#defineUSB_PR_BULK0某50//Bulk-only
/某USBubclavalue=theprotocolencapulation某/
#defineUSB_SC_QIC0某03//QIC-157(tape)#defineUSB_SC_UFI0某
04//UFI(floppy)