linux下usb大容量存储设备驱动研究和实现

linux下usb大容量存储设备驱动研究和实现

ID:5192364

大小:34.50 KB

页数:11页

时间:2017-12-05

linux下usb大容量存储设备驱动研究和实现_第1页
linux下usb大容量存储设备驱动研究和实现_第2页
linux下usb大容量存储设备驱动研究和实现_第3页
linux下usb大容量存储设备驱动研究和实现_第4页
linux下usb大容量存储设备驱动研究和实现_第5页
资源描述:

《linux下usb大容量存储设备驱动研究和实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、linux下USB大容量存储设备驱动研究和实现  【摘要】本文介绍了linuxUSB子系统架构及USB协议,重点分析了linux下USB大容量存储设备驱动程序,并结合U盘特点对设备驱动程序做了可靠的裁剪,以交叉编译和控制台调试的方式,在TQ2440ARM开发板上成功实现了设备驱动模块的加载与卸载,最终达到了U盘热插拔和读写的目的。【关键词】USB;大容量存储设备;设备驱动USB(universalserialbus)通用串行总线是一种高速、支持即插即用和热插拔的总线标准,由intel、microsoft等公司制定,适用于多种USB外围设备(U盘、USB键盘鼠标、USB摄像

2、头等)与主机之间的高速数据传输,USB2.0协议规定的最大传输速率可达480Mb/s,突破了传统串行总线的带宽限制。Linux作为一种性能稳定,可定制,兼容性强的开源操作系统,在嵌入式设备中得到了广泛应用,且开发者可以方便地获得linux社区提供的强大技术支持,从而能够大大降低开发成本。本文以天嵌公司的TQ2440ARM开发板为硬件平台,以linux2.6.30为操作系统内核,通过串口工具secure11CRT,使用金士顿U盘作为USB存储设备,的分析并实现了linux下USB大容量存储设备驱动。1.USB子系统类似于linuxscsi子系统,USB子系统也采用树形拓扑结

3、构,层级关系因系统功能的不同而不同,拓扑模型如图1所示。系统作为主机时拓扑层级为:USB设备驱动、USB核心、USB主控制器驱动;作为从设备时层级为:Gadget驱动、GadgetAPI、USB设备控制器驱动。本文以linux为主机系统,U盘为从设备,因此只讨论主机侧拓扑结构。USB设备驱动负责:向USB核心注册设备驱动、管理USB设备的探测与断开、实现与USB核心通信;USB核心提供一系列数据结构,宏定义和函数来抽象底层硬件设备,为设备驱动和主控器驱动提供特定的接口,读取并解析USB设备和配置描述符,为USB设备分配地址,转发设备驱动数据包,配置设备,维护设备链表和设备

4、驱动链表,维护设备信息;USB主控制器驱动负责:与核心层通信、管理主控制器与设备的实际通信。通常厂商提供主控制器驱动,而linux实现了USB核心(usbcore)部分,因此本文将研究USB设备驱动。2.USB协议2.1设备,配置,接口,端点11USB协议用设备(device)、配置(confi-guration)、接口(interface)、端点(endpoint)来描述设备的全部信息。每个设备有一个或多个配置(configuration),同一时刻只能有一个配置处于活跃状态;每个配置有一个或多个接口(interface);每个接口都有特定的设备驱动,例如USB音响有音

5、量调节旋钮和扬声器,则对应于旋钮驱动和扬声器驱动;每个接口有零个或多个端点(endpoint),端点是通信的末端,数据传输以管道(pipe)的形式在端点上实现,管道具有单向传输性,因此通常要为设备分配多个管道,读设备时使用上行管道,写设备时使用下行管道。2.2传输方式数据传输有四种方式:控制(control)传输用于非周期性的可靠传输,如USB鼠标键盘等;中断(interrupt)传输用于速率稳定的数据传输;批量(bulk)传输用于大量数据传输,对数据传输时间要求不高,如U盘、硬盘、软盘等;等时(isochronous)传输用于实时数据传输,且对数据传输误码率要求不高,如

6、摄像头、扬声器等。根据传输方式的不同,端点分为控制端点、中断端点、批量端点、等时端点四种,端点0缺省为控制端点,其它端点需分配设置。管道分为控制管道、中断管道、批量管道、等时管道。2.3传输协议11根据存储介质的不同,USB大容量存储(Massstorage)设备通常分为两类:scsi设备和floppy设备。传输协议关系如图2所示,主机与scsi设备之间采用BulkOnly方式传输数据,设备内部采用scsi命令传输;主机与floppy设备之间采用CBI(control/bulk/interrupt)方式传输数据,设备内部采用UFI(universalfloppyinter

7、face)协议传输。3.接口USB设备每个接口都有特定的设备驱动,设备驱动用接口描述符(interfacedescriptor)来描述设备接口属性及通信特征,代码清单如下:structusb_interface_descriptor{接口描述符包含三个重要域bInterfa-ceClass、bInterfaceSubClass、bInter-faceProtocol,分别对应于接口类型(cla-ss),接口子类型(subclass),接口协议(protocol)。U盘属于MassStorage类设备,所以bInterfaceC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。