基于linux系统的usb host驱动程序设计与实现

基于linux系统的usb host驱动程序设计与实现

ID:11074640

大小:28.50 KB

页数:10页

时间:2018-07-09

基于linux系统的usb host驱动程序设计与实现_第1页
基于linux系统的usb host驱动程序设计与实现_第2页
基于linux系统的usb host驱动程序设计与实现_第3页
基于linux系统的usb host驱动程序设计与实现_第4页
基于linux系统的usb host驱动程序设计与实现_第5页
资源描述:

《基于linux系统的usb host驱动程序设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于Linux系统的USBHOST驱动程序设计与实现基于Linux系统的USBHOST驱动程序设计与实现张卓亮摘要:本文介绍了基于Linux系统的USB控制器驱动设计的一般方法.首先介绍USB控制器驱动的总体结构,而后逐一分析了各模块的功能和设计要点,最后给出了基于Phi1ips的ISP1161芯片驱动的设计实例.关键词:LinuxUSBHOST驱动ISP1161Abstract:ThispaperintroducesthedevelopmentofUSBhostcontrollerdriverbasedon

2、Linuxsystem.Theau—thorfirstlydescribestheframeworkofthedriver,andthenanalyzesthemodulesseparatelyindetm1.Intheendofthispaper,thePhilips'ISP1161driverthatisdevelopedbyauthorisgivenasthedemonstration.Keywords:LinuxUSBHOSTdriverISP1t611引言随着嵌入式系统应用的日益广泛,Linux系统

3、凭借其强大,稳定,免费以及对设备的广泛支持等特使其在嵌入式系统领域迅速得到了应用.Linux系统对设备的友好支持由来已久,随着USB接口的广泛使用,Linux系统的USB子系统也得到不断的发展.尽管Linux系统为USB设备(device)和主机(HC,HostControl1)提供统一的编程接口,但相对于USB设备,主机结构更复杂,开发难度更大.本文通过分析Linux系统的USB主机控制器(HC)编程框架,给出了USB控制器驱动程序的总体结构,并通过作者编写的ISP1161的实际程序说明各模块的设计要点.模

4、块,它为USB驱动(device和HC)提供了一个用于访问和控制USB硬件的统一接口.如图1所示:应用程序发出的USB请求块(urb)经过USB设备驱动和USBeore后到达USB主机控制器(HC),主机控制器解析urb后将数据发送到指定的USB设备匕来.艘一Ll0werAPlfUSBrUSB1rUSBlDeviceDriverllDeviceDriverIIDeviceDrh:::啪CO::f状沿HClfUSBHCIlDrive~JlDriverJ图1USB驱动结构具体说,主机控制器驱动程序实现的功能包括以

5、下几点:2kinux系统中USB驱动结构)解析,维护urb,根据不同的端点分类缓存urb.Linux中的usB子系统核心模块为usBc.re2)实现不同usB传输类型的调度工作.,''^,^…^-.^:……一ChiI…H巾国集成电路_I_I●_naIntegratedCircuit3)USB数据的实际传输工作.4)实现虚拟根HUB的功能.USB设备之间是通过USBHUB链接在一起的,主机控制器和USB设备之间一般通过根HUB相连,如图2所示.通常主机控制器芯片提供与根HUB相关的状态查询和控制单元.当有设备插

6、入时,在枚举过程中,主机控制器驱动通过查询和控制单元应答设备来伪装成一个HUB,所以通常称此HUB为虚拟根HUB.除上述功能以外,主机控制器驱动还要调用Linux提供的回调函数,协同操作系统完成urb的维护和传输.图2主机控制器拓扑结构3Linux-usb主机驱动结构主机控制器驱动程序按功能结构划分以下模块:URBREADY用于解析,维护和缓存urbUSBSCHEDULE用于USB传输调度;USB—COMM完成USB实际通信;USB_VRH实现主机控制器根HUB功能.3一URB—READY模块USB核心传送的

7、urb请求到达主机控制器后,驱动要缓存各urb以便后面的传输.驱动程序为USB控制器的每个活动端点都建立一个urb等待队列,收到的urb按照端点的不同缓存到不同的等待队列中,而后再进行调度传输.由于各端点都可以独立完成通信工作,互不影响,达到了最大的并行处理速度.h¨^.,^……^;…^…3.2USBSCHEDULE模块驱动程序在每个USB传输帧中都要安排调度.各传输类型占用的带宽要符合USB协议规定,这是由控制器芯片和驱动协同保证的.为方便调度,USB—SCHEDULE模块建立了4个调度队列,分别对应四种U

8、SB传输类型.调度模块首先扫描每个端点的urb缓冲队列,然后把每个队列的当前urb按照传输类型的不同链接到4种调度队列中.当帧中断到来时,驱动程序扫描调度队列,将队列中的urb数据传送出去.4个调度队列的优先级是按照USB规范中传输类型的带宽决定的.3.3USB.COMM模块USB_COMM模块完成USB设备之间的通信.大多数主机控制芯片内部都带有数据通信缓存区,驱动程序只要按照芯片的要求在系统内存

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

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

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