Linux下USBMASSSTORAGE

上传人:痛*** 文档编号:84526266 上传时间:2022-05-04 格式:DOC 页数:5 大小:142.50KB
收藏 版权申诉 举报 下载
Linux下USBMASSSTORAGE_第1页
第1页 / 共5页
Linux下USBMASSSTORAGE_第2页
第2页 / 共5页
Linux下USBMASSSTORAGE_第3页
第3页 / 共5页
资源描述:

《Linux下USBMASSSTORAGE》由会员分享,可在线阅读,更多相关《Linux下USBMASSSTORAGE(5页珍藏版)》请在装配图网上搜索。

1、Linux下USB MASS STORA驱动的分析笔记1.USB MASS STORAGE 协议分析Sub Class协议名说明0x01Reduced Block Comma nds(RBC)通常为Flash Rom介质的存储设备使用0x028020i, MMC-2(ATAPI)通常为CD/DVD设备使用0x03QIC-157常用于磁带机设备0x04UFI常用于软磁盘设备(FDD)0x058070i常用于软磁盘设备或者其他设备0x06SCSI协议0X07-0XFF保留Sub Class可以在usb设备连入系统后获取。不同的通讯协议决定了usb驱动要用不同的命令和数据包格式和 u盘通讯。接口协议

2、 协议名号0x00Con trol/Bulk/l nterrupt协议(CBI)带有 comma nd completi on 中断0x01Con trol/Bulk/I nterrupt协议(CBI)不带有 comma nd completi on 中断 0x50Bulk-Only 协议0x02-0x4F保留0x51-0xFF保留接口协议号即InterfaceProtocol字段,在usb设备插入后可以从总线上获取。在实际usb mass storage设备工作时,设备驱动首先要做的是获得 该u盘的通讯协议和通讯方式,然后按照需要产生与目标设备兼容的控制命令, 并将该控制命令打包通过设备的通

3、讯传输方式发送至设备,完成一次对设备的读 写操作。对于上述6中数据通讯协议,均有很详细的说明文档,经过分析,他 们的命令有很大的相似之处,这也是通讯usb驱动能够实现的原因之一。2.自带驱动usb-storage的简要原理分析linux 内核中自带的usb mass storage 驱动位于内核源代码 目录 kernel/drivers/usb/storage/下,下表为该目录下各文件的功能说明:文件功能说明usb.c/.hUsb-storage的核心文件,是整个驱动的框架代码transport.c/.h实现了对于不冋通讯方式的支持函数scsiglue.c/.hScsi设备的模拟函数proto

4、col.c/.h实现了对于几种通讯协议的SCSI命令翻译函数initializers.c/.h对于某些设备的专用初始化函数unusual_devs.h对于非常规设备 ProductID和VendorID的支持shuttle_usbat.c/.h支持SCM Microsystems设备的驱动sddr55.c/.hSan Disk SDDR-55 SmartMedia reader 的驱动sddr09.c/.han Disk SDDR-09 SmartMedia reader 的驱动onetouch.c/.hMaxtor On eTouch USB hard drive 驱动支持libusual.

5、c对于常规设备的 ProductID和VendorID的支持karma.c/.hRio Karma设备驱动jumpshot.c/.hLexar Jumpshot Compact Flash reader 驱动isd200.c/.hISD200专属通讯协议支持freecom.c/.hFreecom USB/IDE转化器支持dpcm.c/.hDPCM-USB CompactFlash/SmartMedia reader 设备支持debug.c/.h用于调试的工具函数datafab.c/.hDatafab USB Compact Flash reader 驱动支持alauda.c/.hAlauda-

6、based card readers 驱动支持通过上述文件作用分析后,可以看出,对于常规的 usb设备,大部分代码 文件都是多余的,核心文件为上表的前4项。这就为进一步分析驱动已经对其进 行简化和仿制提供了可能。通 过对核心代码的分析,本驱动的工作机理是将自身模拟为 标准的SCSI设备,并向scsi管理器注册,这样对于上层系统而言,只需操作标 准的SCSI设备即 可。这样可以简化具体的文件读写功能。同时驱动接受到的 SCSI命令转化为对应u盘设备的通讯协议,并用对应设备的通讯方式进行发送, 并将结果回馈到SCSI管理器。下图展示了整个驱动的工作布局:usb-storagt图中 Transfer

7、 layer 和 protocol layer 分别对应了 transfer.c和 protocol.c文件,CommanTransfer Thread是usb.c在探测到有新设备接入后加载的线程, 他将不断轮询SCSI发来的消息命令,并负责将这些命令通过protocol layer提供的函数翻译并发送到u盘上,完成对u盘的读写操作。Delayed Device Scan是为了防止用户在设备插入后马上拔除,造成驱动在后续通讯中造成混乱。实现方式是创建一个专门线程。同时,usb.c在设备插入时会通过scsiglue.c 提供的SCSI 接口函数向SCSI管理器注册自身。3. usb-storag

8、e的传输协议Mass Storage类支持两种传输协议:1、Bulk-Only 传输(BOT2、Control/Bulk/Interrupt 传输(CBI)Mass Storage类规范定义了两个类规定的请求。Get_Max_Lun和Mass StroageReset,所有的Mass Storage设备都必须支持这两个请求。Mass Storage Reset (bmRequestType=00100001b and bRequest=11111111b 用 来复位Mass Storage设备及相关接口。Get_Max_Lu n(bmRequestType=00100001b and bReq

9、uest=11111110b用来确认设 备支持的逻辑单元数。 MaxLun 的值必须是 0 1 5。注意 Lun 必须是从 0 开始的。 主机不能向不存在的 Lun 发送 CBW。支持BOT传输的Mass Storage设备接口描述符要求如下:接口类代码 bInterfaceClass=08h ,表示为 Mass Storage 设备。接口类子代码 bInterfaceProtocol 有 3种: 0x00,0x01,0x50, 前两种使用中断 传输,最后一种使用批量传输( BOT)。支持 BOT的设备必须支持最少 3 个 endpoint:Control , Bulk-in , Bulk-o

10、ut。USB2.0的规范定义了控制端点0。Bulk-in端点用来从设备向主机传送数据, Bulk-out 端点用来从主机向设备传送数据。Bulk-Only 传输( BOT)像控制传输一样,Bot也是由comman阶段,可选的数据阶段和状态阶段组成。 所有的Comman命令都有可能没有Data阶段。下图说明了 BOT的Comman传输, Data-in , Data-out 传输及 Status 传输。FIGURE 3:COMMAND/DATA/STATUS FLOW IN BULK-ONLY TRANSPORTCommand Transport (CBW)Data-Out (from host)Data-In (to host)1l1StatusTransport(CSW)Bulk-only传输示意图CBW是由31个字节组成的短包。CW昏口后续的数据以及CSVW是从新封装包开始的。要注意的是所有的CBW传输都是little-endian模式。在 CBW中, dCBWsignature 必须是“ 43425355h”,表示是 CBV封装包。dCBWTag 是CB标签,会通过对应的CSW反馈回来。在 CSW中, dCSWSignature必须是“ 53425355h”,表示是 CSW装包。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!