linux 下USB 大容量存储设备驱动分析与实现
【摘要】本文介绍了linux USB子系统架构及USB 协议,重点分析了linux 下USB 大容量存储设备驱动程序,并结合U 盘特点对设备驱动程序做了可靠的裁剪,以交叉编译和控制台调试的方式,在TQ2440 ARM 开发板上成功实现了设备驱动模块的加载与卸载,最终达到了U 盘热插拔和读写的目的。
【关键词】USB ;大容量存储设备;设备驱动
USB (universal serial bus)通用串行总线是一种高速、支持即插即用和热插拔的总线标准,由intel 、microsoft 等公司制定,适用于多种USB 外围设备(U 盘、USB 键盘鼠标、USB 摄像头等)与主机之间的高速数据传输,USB2.0协议规定的最大传输速率可达480Mb/s,突破了传统串行总线的带宽限制。
Linux 作为一种性能稳定,可定制,兼容性强的开源操作系统,在嵌入式设备中得到了广泛应用,且开发者可以方便地获得linux 社区提供的强大技术支持,从而能够大大降低开发成本。
本文以天嵌公司的TQ2440 ARM 开发板为硬件平台,以linux2.6.30为操作系统内核,通过串口工具secure CRT,使用金士顿U 盘作为USB 存储设备,的分析并实现了linux 下USB 大容量存储设备驱动。
1.USB 子系统
类似于linux scsi子系统,USB 子系统也采用树形拓扑结构,层级关系因系统功能的不同而不同,拓扑模型如图1所示。系统作为主机时拓扑层级为:USB 设备驱动、USB 核心、USB 主控制器驱动;作为从设备时层级为:Gadget 驱动、Gadget API 、USB 设备控制器驱动。本文以linux 为主机系统,U 盘为从设备,因此只讨论主机侧拓扑结构。
USB 设备驱动负责:向USB 核心注册设备驱动、管理USB 设备的探测与断开、实现与USB 核心通信;USB 核心提供一系列数据结构,宏定义和函数来抽象底层硬件设备,为设备驱动和主控器驱动提供特定的接口,读取并解析USB 设备和配置描述符,为USB 设备分配地址,转发设备驱动数据包,配置设备,维护设备链表和设备驱动链表,维护设备信息;USB 主控制器驱动负责:与核心层通信、管理主控制器与设备的实际通信。
通常厂商提供主控制器驱动,而linux 实现了USB 核心(usb core )部分,因此本文将研究USB 设备驱动。
2.USB 协议
2.1 设备,配置,接口,端点
linux 下USB 大容量存储设备驱动分析与实现
【摘要】本文介绍了linux USB子系统架构及USB 协议,重点分析了linux 下USB 大容量存储设备驱动程序,并结合U 盘特点对设备驱动程序做了可靠的裁剪,以交叉编译和控制台调试的方式,在TQ2440 ARM 开发板上成功实现了设备驱动模块的加载与卸载,最终达到了U 盘热插拔和读写的目的。
【关键词】USB ;大容量存储设备;设备驱动
USB (universal serial bus)通用串行总线是一种高速、支持即插即用和热插拔的总线标准,由intel 、microsoft 等公司制定,适用于多种USB 外围设备(U 盘、USB 键盘鼠标、USB 摄像头等)与主机之间的高速数据传输,USB2.0协议规定的最大传输速率可达480Mb/s,突破了传统串行总线的带宽限制。
Linux 作为一种性能稳定,可定制,兼容性强的开源操作系统,在嵌入式设备中得到了广泛应用,且开发者可以方便地获得linux 社区提供的强大技术支持,从而能够大大降低开发成本。
本文以天嵌公司的TQ2440 ARM 开发板为硬件平台,以linux2.6.30为操作系统内核,通过串口工具secure CRT,使用金士顿U 盘作为USB 存储设备,的分析并实现了linux 下USB 大容量存储设备驱动。
1.USB 子系统
类似于linux scsi子系统,USB 子系统也采用树形拓扑结构,层级关系因系统功能的不同而不同,拓扑模型如图1所示。系统作为主机时拓扑层级为:USB 设备驱动、USB 核心、USB 主控制器驱动;作为从设备时层级为:Gadget 驱动、Gadget API 、USB 设备控制器驱动。本文以linux 为主机系统,U 盘为从设备,因此只讨论主机侧拓扑结构。
USB 设备驱动负责:向USB 核心注册设备驱动、管理USB 设备的探测与断开、实现与USB 核心通信;USB 核心提供一系列数据结构,宏定义和函数来抽象底层硬件设备,为设备驱动和主控器驱动提供特定的接口,读取并解析USB 设备和配置描述符,为USB 设备分配地址,转发设备驱动数据包,配置设备,维护设备链表和设备驱动链表,维护设备信息;USB 主控制器驱动负责:与核心层通信、管理主控制器与设备的实际通信。
通常厂商提供主控制器驱动,而linux 实现了USB 核心(usb core )部分,因此本文将研究USB 设备驱动。
2.USB 协议
2.1 设备,配置,接口,端点