




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
USB2.0设备的开发,荣峰,一USB基础知识二USB设备开发的前期工作三USB2.0设备的开发,一USB的基础知识,1.1USB的发展过程。Access.bus(雏形)USB1.0(成长)1.5Mbit/sUSB1.1(完善)12Mbit/sUSB2.0(高速模式)480Mbit/s主要竞争对手:IEEE-1394400Mbit/s最高可达到3.2Gbit/s,1.2USB的优势与局限性,真正的即插即用。速度的提升。价格合理。性能稳定。USB协议从多方面考虑了保障措施。局限性:带宽的限制;对旧硬件支持不足;点对点的通信;距离的限制。,二USB设备开发的前期工作,1.了解USB的总线结构在USB中采用的是层叠星型拓扑(TieredStarTopology)结构。如图21所示:2.USB的逻辑结构USB中的逻辑结构是主机与设备交换的基础。同时,所有这些设备都在共享同一条数据通道(在连入同一根集线器的情况下),在这个数据通道中最多可以容纳127个小管道,每个小管道的终点就是一个USB设备。,3.USB开发步骤(1)硬件的设计:主要考虑控制器与主机的连接,与外设的匹配以及它们之间的协调关系。(2)USB控制芯片固件的实现。(3)Windows驱动的编写,包括检测设备时系统要用到的引导文件,设备信息文件。(4)应用程序的实现。根据不同的工程编写不同的客户应用文件。,4.必要设备的准备元件主要包括以下几个方面:合适的USB设备控制芯片相应的支持USB设备的计算机相关外设所需的硬件工具主要包括以下几个方面:开发USB控制器固件所需的软件平台开发Windows驱动程序所需的系统开发应用程序所需的编译工具硬件电路设计的软件平台硬件电路组装的硬件工具必要的开发板,模拟器调试工具,三USB2.0设备的开发,3.1初步计划初步计划也可以说时一些准备工作,虽然很细小,但是却决定了以后的工作。(1)决定USB设备的一些属性。如数据传输量的大小以及传输的速率,由此决定采用USB协议的版本和传输的类型。此外设备的耗电量是我们决定设备采用总线供电还是设备自供电的主要依据。(2)决定是否购买某个厂家的USB开发包,以节约时间。一般USB设备的开发包内都带有驱动程序,还有固件的范例程序以及主机的应用程序,这对于我们开发自己的USB设备有很好的借鉴作用。如EZ-USBFX2的开发包内就带有已经编好的固件程序框架,用户只需在框架中添加自己的代码即可。这样可以加快对USB设备的感性认识。,3.2硬件计划最重要的工作就是选择USB控制芯片。两种:需外接MCU的芯片不需外接MCU的芯片(包括专门为USB设计的USB控制芯片)芯片的文档;固件范例;驱动程序;调试工具,3.3硬件设计这里以Cypress公司的CY7C68013为例来介绍USB接口的设计。对于像这种带有通用微控制器内核的USB控制芯片来说。USB接口电路设计相对很简单。如下图:,3.3硬件设计USB接口电路设计完后,用户再根据需要设计微控制器的外围电路。,3.4固件(Firmware)设计,固件的定义固件是在USB接口芯片加电后,由其它设备加载到CY7C68013中并在其中运行完成接口数据传送功能的一段程序。其作用是辅助或者说控制硬件来完成预期的设备功能。由此可见固件设计是USB设备开发过程中的重要环节,同时也是一个难点。下面仍然以Cypress公司的CY7C68013为例来介绍USB的固件设计,固件的主要功能,初始化工作。辅助硬件完成设备的重新列举(ReNumeration)过程,对主机的设备响应做出适当的响应。对中断的处理。数据的接受与发送。外围电路的控制。,固件程序框架,这个程序框架按照结构化的程序设计方法,将整个程序分为几个不同的功能模块,分别是初始化,重新列举和响应设备请求。初始化:主程序一开始首先进行一些全局变量的初始化工作,之后地调用TD_Init()函数。用户在该函数中添加自己的初始化代码以配置I/O端口。初始化工作还包括开中断,清除所有等待的USB中断请求等。Sleep;Rwuen;Selfpwr;GotSUD;Confirguration,重新列举:初始化之后,固件程序将会检测是否收到设置数据(GOTSUD标志位是否为真),如果没有,程序会以1s为间隔,软件模拟设备的断开和连接,直到收到设置数据为止。响应设备请求例:switch(SETUPDAT3)/判断请求类型caseGD_DEVICE:SUDPTRH=MSB(pDeviceDscr);/SUDPTR可以指向主机请求的描述符的首地址SUDPTRL=LSB(pDeviceDscr);break;,描述符定义:用户必须为自己的设备定义描述符,从而使主机通过描述符来识别和配置设备。设备描述符;配置描述符;接口描述符;端点描述符;字符串描述符;Device_Qulifier描述符(高速设备独有)顺序存放,便于寻址。,DeviceDscr:dbDSCR_DEVICE_LEN;DescriptorlengthdbDSCR_DEVICE;Decriptortypedw0002H;SpecificationVersion(BCD)db00H;Deviceclassdb00H;Devicesub-classdb00H;Devicesub-sub-classdb64;Maximumpacketsizedw0103H;VendorIDdw6000H;ProductID(SampleDevice)dw0000H;ProductversionIDdb1;Manufacturerstringindexdb2;Productstringindexdb0;Serialnumberstringindexdb1;Numberofconfigurations,中断处理,EZ-USBFX2的中断包括与标准8051中断相同的中断,同时也包含一些FX2特有的中断,总数达到28个。由于在固件程序中提供了中断服务例程接口,开发者只须在需要处理的中断服务例程接口中加入自己编写的中断服务代码即可完成对相应中断请求的服务,这样就可以避免深入研究FX2的中断自动引导(InterruptAuto-vectors)的逻辑结构。,这些中断服务例程接口函数的形式为:voidISR_xxx(void)interrupt0/开发者中断服务代码EZUSB_IRQ_CLEARQ;USBIRQ=bmXXX;/清除该中断请求,固件的开发和调试工具,CYPRESS公司提供CypressControlPanel和KeiluVision2两种工具可以进行固件的开发和调试。KeiluVision2的主要作用是用来开发固件程序的,首先新建一个项目,在其中建立程序代码程序,描述表程序,USB控制程序,固件代码执行程序,再将上EZ-USB的库文件Ezusb.lib和目标文件USB-Jmp.OBJ。然后对文件进行编译和连接,检查是否有什么语法错误。如果没有错误则对项目进行编译,生成可下载的HEX文件。,CypressControlPanel的作用主要是用来下载并调试USB设备。它的功能主要有下载固件程序,得到设备中的各种描述符;验证固件程序中的描述符程序是否下载到设备中并且是否正确;向各个端点传送数据和接收数据,用来验证程序是否作正常。下图为主程序的界面:,3.5驱动程序,运行在核心态的USB驱动程序是基于WIN32驱动程序模型WDM(WindowsDriverModel)的,它采用分层驱动程序模型,由USB总线驱动程序和USB功能驱动程序两部分组成,总线驱动程序由操作系统提供,用户只需编写相应的功能驱动程序即可。,功能驱动程序通过向USB总线驱动程序发送URB(USBRequestBlock)的IRP(I/0RequestPacket),来实现USB外设之间的信息交换。IRP:驱动程序操作的中心,是一个数据结构,带有一组对它进行操作的I/O管理器例程。,URB:在USB设备驱动程序中用到的USB请求块。它的结构是一个联合体,含有16个不同的_URB_*结构,每一个功能代码使用其中的一个结构详细说明它的输入或输出参数。如:_URB_CONTROL_DESCRIPTOR_REQUEST使用这个函数可以从设备读取任何的描述符。,具体过程:当主机应用程序要对USB设备进行I0操作时,它调用WindowsAPI函数对win32子系统进行win32调用,由IO管理器将此请求构造成一个合适的IRP,并把它传递给USB设备驱动程序。USB设备驱动程序接受到这个IRP后,根据IRP中的包含的具体操作代码,构造响应的URB并把它放到一个新IRP中,然后把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所包含的URB执行响应的操作,并把操作结果通过IRP返还给USB设备驱动程序。USB设备驱动程序接受到此IRP后,将操作结果通过IRP返还IO管理器。最后,IO管理器将此IRP中的操作结果返还给应用程序,至此应用程序对USB设备的一次IO操作完成。,3.1编写驱动程序Windows2000DDK(含USB批量传输的驱动程序源代码)DriverStudio,Windriver,Vtoolsd等一些辅助开发工具。使用C或C+语言编写,尽量避免使用汇编语言以保证可读性和移植性。,可以把一个完整的驱动程序看成是一个容器,它包含很多例程,当操作系统遇到一个IRP时,它就调用容器中的例程来执行该IRP的各种操作。,以USB块传输为例说明WDM驱动程序的主要内容:初始化模块I/O模块即插即用管理模块电源管理模块,初始化模块在初始化模块中,包括有每一个设备驱动程序都有的一个初始化入口点:DriverEntry例程,每次设备驱动程序启动时该例程被系统自动调用,其最重要的功能是设置驱动程序对应于I/O请求的主功能代码(MajorFunction)的回调例程。DriverEntry例程如下所示,I/O模块I/O模块由读写例程Read和Write,以及设备控制流程I/OControl构成。读写两个例程用于实现批量数据传输。用户程序使用DeviceIOControl函数传递一个称为I/O控制代码的参数,I/O例程使用这个参数来确定应执行的功能。,即插即用PnP管理模块USB设备具有多种设备运行状态,PnP管理器能够随时检测USB设备的当前状态,并根据情况向功能驱动程序发送不同的PnP消息,使其在不同的状态之间转换。PnP消息使用相同的主功能代码IRP_MJ_PNP,每个消息使用不同的次功能代码MinorCode和不同的PnP参数。设备只有处于“启动”状态时才能正常响应用户的I/O请求。,电源管理模块功能驱动程序中的电源管理模块负责设备的挂起与唤
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 日间照料中心老年人健康促进实施效果总结方案
- 品牌国际化语言适应方案
- 罢工事件职工权益保障与劳动关系和谐方案
- 2024年火电电力职业鉴定全真模拟模拟题含完整答案详解(各地真题)
- 2025年高职单招全真模拟模拟题完整版附答案详解
- 自考专业(会计)检测卷(完整版)附答案详解
- 2024年保安员考试自我提分评估及参考答案详解一套
- 2023年度职称计算机考前冲刺练习试题含完整答案详解【考点梳理】
- 2025年自考专业(建筑工程)题库含完整答案详解【有一套】
- 2025年押题宝典执业药师之《西药学专业一》题库及参考答案详解(b卷)
- 高中生纪律教育主题班会
- 《中国近现代史纲要》课程教学大纲
- 康复专转本试题及答案
- 2025基于人工智能的智慧公路应用技术研究报告
- 【艾青诗选】22《雪落在中国的土地上》思维导图+批注
- 精神科护理学见习
- 版高空作业培训内容
- 《销售技巧实战培训》课件
- 2024年秋季学期新苏科版七年级上册数学课件 2.4 有理数的加法与减法-2.4.1 有理数的加法
- 《坚持的主题班会》课件
- T-HNSGJXH 0032-2024 涟源涟红 柑橘低效果园改造技术规程
评论
0/150
提交评论