为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于VxWorks操作系统的USB2.0驱动分析

2017-10-16 9页 doc 24KB 28阅读

用户头像

is_833902

暂无简介

举报
基于VxWorks操作系统的USB2.0驱动分析基于VxWorks操作系统的USB2.0驱动分析 基于VxWorks操作系统的USB2(0驱动分 析 2007年l1月 第26卷第ll期 基于VxWorks操作系统的USB2.0驱动分析 陈安军梁小琴 (中国电子科技集团公司第41研究所青岛266555) 摘要:现代智能仪器中已经开始使用USB接口作为标准输入输出接口;智能仪器 对实时性要求的提高,使得V文works操作 系统在其中得到了广泛应用.本文分析了VxWorks操作系统下USB2.0驱动程序 模型结构与功能,详细地说明了USB2.0 主机协议栈.在此...
基于VxWorks操作系统的USB2.0驱动分析
基于VxWorks操作系统的USB2.0驱动分析 基于VxWorks操作系统的USB2(0驱动分 析 2007年l1月 第26卷第ll期 基于VxWorks操作系统的USB2.0驱动分析 陈安军梁小琴 (中国电子科技集团公司第41研究所青岛266555) 摘要:现代智能仪器中已经开始使用USB接口作为输入输出接口;智能仪器 对实时性要求的提高,使得V文works操作 系统在其中得到了广泛应用.本文分析了VxWorks操作系统下USB2.0驱动程序 模型结构与功能,详细地说明了USB2.0 主机栈.在此基础上,给出了智能仪器中使用USB2.0主机栈来完成USB主机 功能的方法和注意事项. 关键词:VxWorks;嵌入式系统;通用串行总线;驱动程序 中图分类号:TM930.9文献标识码:A AnalysisonUSB2.0driverbasedon VxWorksoperationsystem ChenAnjunLiangXiaoqin (The41stResearchInstituteofCETC,Qingdao266555) Abstract:USBinterfacehasbeenappliedasastandardI/Ointerfaceinthemodernintelligence instrument.Asthein— creasingrequirementsofreal-timeperformanceforintelligentinstruments,VxworksOShas gotwidelyapplicationinit. ThispaperanalyzesthestructureandfunctionofUSB2.0drivermodule,andexplainshostpro tocolstackofUSB2.0in detail.FinallymethodsandsomenoticesofimplementoftheUSBhostfunctionsbyusingUS B2.0hoststackarealso given. Keywords:VxWorks,embeddedsystem;USB;driver 0引言 通用串行总线(universalserialbus)是一种计算机外 围串行通信接口,具有高速数据传输,热插拔,即插即用 (PnP),成本低等特点.随着USB规范的日趋完善和成 熟,测量仪器中也已经开始使用USB作为其标准的外围 接口.Vxworks操作系统以其良好的可靠性和卓越的实 时性在仪器仪表领域得到了广泛应用,本文针对Vx— Works操作系统下最新的USB2.0驱动程序进行了分 析,为基于Vxworks的仪器仪表使用USB2.0总线提供 了技术参考,并结合作者开发某仪器过程中遇到的问, 给出了使用注意事项. 1USB2.0驱动程序模型结构 USB体系结构是基于主从结构的,USB的驱动程序 指的是主机端的驱动程序.图1给出了Vxworks操 作系统下USB主驱动栈各模块之间的功能关系. 在栈最底层的是硬件:USB主控制器(USBhostcon— troller),USB主控制器在嵌入式主机系统中控制USB,实 现USB主机功能.目前,USB控制器主要有3类: (1)(UHCI,universalhostcontrollerinterface)通用 的主控制器,由Intel最先设计并制定相应规范; (2)(OHCI,openhostcontrollerinterface)开放的主 控制器,由Microsoft,Compaq和NationalSemiconductor 最先设计并制定相应规范; (3)(EHCI,enhancedhostcontrollerinterface)增强 的主控制器,该控制器支持USB2.0. 每一主控制器在其上都有相对应的主控制器驱动程 序(HcD),这些设备驱动程序与底层的硬件相关,为上层 提供统一的功能接口. USB主机驱动(USBD)与底层硬件无关,通过HCD 与底层控制器通信.USBD管理连接到主机上的每一个 USB连接,并提供高层与USB设备通信的通道.除此之 外,USBD还自动对USB设备进行电源管理和分配带宽. 在USB系统中,集线器(HUB)对USB系统的正常操作起 到关键性作用,因此USBD直接对集线器进行控制.这就 作者简介:陈安军(1980-),男,学士,主要从事智能测量仪器软件设计工作. 一 68, 己口口7年l1月 第己5卷第ll期 cIl1dearserusbTool USBExerciserUtility USB2.0HubusbKeyboardLibI ClassDriverUusb/v0useLib U…I usB.1ClassDrivers f IusBz.ohns-anonLayer —I承-nf一一一一,一一一I一一一一一一一L] 0SAL卜一lJJ,Device}JuS,BRequ.est_JZ— I 1UHCIHCDOHCIHCDEHCIHCD 1 ? 巳.壁1i,苎鬯一一一一一一一一一 lusbPciLibl /\\\ SystemHardwareUHCIorOHCIOrEHCI (forexample,PCIbuscontroller)HostController 图1USB2.0主驱动栈功能关系 意味着USBD还具有控制USB设备和集线器动态插拔的 能力. 在主机栈的最顶层是USB设备驱动程序.设备驱动 程序依赖USBD提供的通信通道,驱动连接到USB系统 中的USB设备. OsAL为USB主机栈提供了与Vxworks操作系统 相关的操作,包括任务管理,互斥及信号灯,内存分配以及 系统时钟. 通过图1的结构,可以看出USB主机栈的设计关键 是USB主机驱动(USBD)的设计,USBD为USB设备驱 动程序提供标准的USBDAPI;为主机控制器驱动提供 HCDAPI 2USB主机栈启动过程 USB主机栈的启动分为3步: (1)初始化USB主机驱动(USBD); (2)加载USB主控制器驱动(HCD); (3)加载USB设备驱动程序. 集成开发环境(IDE)下可以通过工具进行配置,其步 骤如下所述: (1)包含USB主机栈USBHostStack组件,通过在 工程中包含USB主机栈完成对USBD的支持.在系统启 动时对USB主机驱动进行初始化需要包含USBHost StackInit组件; (2)包含主机控制器(HC),根据具体设计选用相应的 控制器.一般在嵌人式模块的手册中都有其模块控制器 ?应用 的类别.在系统启动时对主机控制器进行初始化需要包 含相应控制器的初始化组件; (3)包含设备驱动,根据设计的需求选择相应的设备 驱动. 通过上述配置生成的Vxworks系统中带有USB主 机栈,可以完成USB2.0主机功能. 3USB主机驱动(USBD)分析 在使用USBD提供的接口之前,首先需要对USBD 进行初始化,USBD的初始化分为3步,其步骤如下: (1)调用USBD的人口usbdlnit(),usbdlnit初始 化USBD用到的数据结构; (2)调用USB集线器(HUB)的初始化函数usbHu— blnit(),初始化集线器驱动的数据结构; (3)使用函数usbHCDInit()挂接相应的主机驱动器. 对于每一个挂接到USBD上的主机驱动程序,集线器 驱动程序都会为其创建一个优先级为100的任务来监视 USB总线上的事件.这个任务一直处于睡眠状态,一旦 集线器上的某一个端口状态发生改变,该任务立即被激 活.由于该任务的优先级为100,可以立刻获得资源变为 运行状态将总线状态告知USBD. USB设备类驱动需要首先在USBD中注册,USBD 为每一个设备类维护着一个设备类结构,它的定义如下: Typedeftructusbhst— device—— driver { BOOLbFlagVendorSFlecific; UINT16uVendorlDorClass: UINT16uProductlDorSubClass: UINT16uBCDUSBorProtocol: USBHsT— STATUS(*addDevice) (UINT32hDevice,UINT8InterfaceNumber, UINT8uSpeed,void*pDriverData); Void(*removeDevice)(UINT32hDevice,void* pDriverData); Void(*suspendDevice)(UINT32hDevice,void* pDriverData); Void(*resumedevice)(UINT32hDevice.void* pDriverData); } USBHST— DEVICE— DRIVER,pUSBHST— DE— VICE_ DRIVER; 当USB设备插人或拔出USB系统时,集线器驱动程 序将USB设备插人或拔出的信息通知USBD,USBD根 据得到设备信息(例如:设备类号,子类号,协议号等)查找 设备驱动程序列表,查找到该设备的驱动程序后,调用 USB设备的相应函数,进行设备的相应操作. 当一个设备类不在系统中使用时,通过撤销函数来撤 销注册,该操作的实质是删除相应设备类的设备类结构. 一 69— 4结束语 天地 本文介绍的Vxworks操作系统下USB2.0驱动程序 已经成功在国内某高性能频谱分析仪中使用,在使用过程 中有以下几点注意事项: (1)通过分析USB主机栈启动过程,可以对USB主 机栈原理进行研究; (2)为考虑USB系统的可移植性,VxWorks提供的 源程序并没有基于平台做处理.当使用X86平台时,需 要修改相应的PCI设置以适应X86平台下的PCI机制. 具体方法:修改usbPciStub.c定义: #definelNTENABLE(i)sysIntEnablePIC(i) #definelNT_ DISABLE(i)syslntDisablePIC(i) (3)在使用EHC时,一定要注意系统中使用的 USB1.1的控制器是什么类型,并将相应的驱动程序组件 加到VxWorks的Image中. 2gg7年I1月 第己巨卷第1I期?_ 参考文献 [1]WindRiverSystemInc.HosTsTACKPROGRA MER'SGUIDE[Z].2004. [2]ANDERSONnUSB系统结构[M].北京:中国电力出版 社,2001. [3]孔祥营,柏桂枝.嵌入式实时操作系统VxWorks及其开 发环境TornadoFM].北京:中国电力出版社,2001. [4]邵高平.通用串行总线(UsB)及其开发方法[J].微计算 机信息,1999,15(3):10—13. [5]林宝如,张帆,陈怡.基于VxWorks操作系统的USB驱 动分析口].重庆建筑大学,2005,27(3):98—100. [6]朱泽诚,王兴元,李洁.Vxw0rks实时操作系统的USB 驱动程序原理与分析[J].计算机工程与应用,2003,39 (22):122—125. (上接第34页) N 匦 一 70一 I停止内部计数器l,2 读出计数器值I J计算时间误差 ' I显示 图3系统流程图 3结束语 本文采用该系统对不同标准频率进行测试后,得到该 系统的频率测量准确度:?0.15PPM,日误差准确度? 10ms.该系统采用多周期同步测量方法利用PIC单片机 实现了复费率电能表误差检定仪的设计,具有体积小,重 量轻,稳定可靠,易于操作,测量精度高的特点,实现了复 费率电能表的误差检定. 参考文献 [1]李友红.多功能电能表计量应用的现状与展望[J].电测 与仪表,2007,44(4):32—35. [2]俞盛荣.电子式电能表应用中的技术导向[J].电测与仪 表,2004,41(8):25—28. [3]周渭,朱根富.频率及时间计量[M].西安:陕西省出版 社,1986. [4]马凤呜.时间频率计量[M].北京:中国计量出版 社,1990. [5]窦振中,汪立森.PIC系列单片机应用设计与实例[M]. 北京:北京航空航天大学出版社,1998. [6]郝莹,申亚芳,金文.PIG单片机实现的字符与图形液晶 显示口].实验室科学,2007(1):114-115. [7]何立民.单片机高级教程一应用与设计[M=].北京:航空航 天大学出版社,2000.
/
本文档为【基于VxWorks操作系统的USB2.0驱动分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索