关闭

关闭

封号提示

内容

首页 基于STM32处理器和PC主机的USB通信协议的实现(硕士论文)(可编…

基于STM32处理器和PC主机的USB通信协议的实现(硕士论文)(可编辑).doc

基于STM32处理器和PC主机的USB通信协议的实现(…

上传者: 陈功立 2017-10-13 评分1 评论0 下载0 收藏0 阅读量710 暂无简介 简介 举报

简介:本文档为《基于STM32处理器和PC主机的USB通信协议的实现(硕士论文)(可编辑)doc》,可适用于个人文书领域,主题内容包含基于STM处理器和PC主机的USB通信协议的实现(硕士论文)(可编辑)基于STM处理器和PC主机的USB通信协议的实现(硕士论文)山东大学硬士学位论符等。

基于STM处理器和PC主机的USB通信协议的实现(硕士论文)(可编辑)基于STM处理器和PC主机的USB通信协议的实现(硕士论文)山东大学硬士学位论文摘要随着协议的推出以及其在主机上的广泛应用,慢慢的各种电子产品的数据通信接口都开始使用通信协议进行通信,像我们使用的盘、移动硬盘的数据口、数码相机的数据口、手机的数据口等大部分都是使用接口遵循通信协议进行数据通信。它的广泛应用源于它的各种优点,特别是它对各种标准设备类的支持,这也意味着它的规范相当的全和复杂【】。本文通过解析通信协议及其标准设备类,在意法半导体推出的基于公司的架构设计的处理器上设计了一套基于标准设备类的通信协议,然后在主机上利用微软提供的驱动程序,自己编写了一个文件,实现了处理器和主机的基于标准设备类的通信。随后又在处理器上用两个通信节点设计了一个基于自己通信特点的半双工通信,在主机上利用和微软提供的基于驱动开发包自己开发了一个驱动程序,并编写了一个。文件,最终实现了基于自己通信特点的通信协议的实现。关键词:处理器驱动开发山东大学硕士学位论文,,,,,,,,,:原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。期:上匹早』山论文作者签名:』盈盈一关于学位论文使用授权的声明本人完全了解山东大学有关保留、使用学位论文的规定,同意学校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅本人授权山东大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段保存论文和汇编本学位论文。保密论文在解密后应遵守此规定导师签名:论文作者签名:堕丝山东大学硕士学位论文第章绪论系统设计背景及意义随着协议的推出以及在主机的广泛应用,慢慢的各种电子产品的数据通信接口都开始使用通信协议进行通信,像我们使用的盘、移动硬盘数据口、数码相机的数据口、手机的数据口等大部分都是使用接口遵循通信协议进行数据通信。它有如下优点:、支持热插拔,也就是说在不管的情况下可以安全的插上和断开设备,动态的加载驱动程序。其他普通的外围连接标准,如设备等必须在关掉主机的情况下才能增加或移走外围设备。、硬件接口简单,携带方便。总线就四根线,其中两根电源线,且设备大多以“小、轻、薄”见长,对用户来说,同样的硬盘,硬盘比硬盘要轻一半的重量,在想要随身携带大量数据时,当然硬盘会是首要之选了。、提供了相当全的标准通信协议,就像他的名字一样通用串行通信总线,基本使用的设备都可以被涵盖,因此简化了开发人员对其开发的流程。、可扩展性强,每一个主机最多可以携带个从设备。、通信速度较快。相对与以前的串行通信协议,像、等,的通信速度是非常快的,在中,最快可以达到。在现在的电力系统中,电表的数据传输还是依靠传统的总线的方式进行传输,而且在现场施工过程中对采集终端进行程序升级的过程中更多的还是使用传统的进行数据通信,这些传统的通信方式因为其开发简单而被广泛使用,但慢慢的其弊端就暴露出来,如总线和挂载的设备数目有限,而且其通信速度很慢,因此在现场施工中对采集终端进行程序升级时会浪费很多时间,而且总线就两根数据线,没有统一的接口,串口的接口线数目太多,不利于小型终端产品使用,而规定了统一的接口标准,而且其总线只有条,山东大学硕士学位论文包括两根电源线,数据通信线就两条,因此,在现在的电力采集系统中有很广泛的应用前景【。因此,该系统在详细解析了通信协议的基础上,针对意法半导体最新推出的基于公司架构的处理器上设计了它与主机的通信协议,先利用标准设备类进行了通信实验,然后在此基础上又自己编写驱动程序,最终实现了具有自己通信特点的通信,并提供了很好的伸缩性,可以在此基础上进行进一步的开发。设计主要实现的内容针对传统通信的缺点设计了基于的串行数据通信系统,在针对标准设备类的开发过中在操作系统下,将设备虚拟成了口,也就是可以在上位应用程序中可以像操作口来与处理器进行通信,这样就可以和以前基于口开发的上位应用程序统一结合起来使用,上面有口方便操作的通信的优点,下面有快速通信的优点,既兼容了以前通信的优点又保留了本身的一部分优点。在开发完基于标准设备类的程序后,考虑到往往设备通信过程中可能会遇见一些别的通信特点,比如在传输大量数据过程既想有时能传输大量数据可以不考虑准确性,又想可以传输准确性高的数据,这两个通信特点在现有的通信设备类中没有支持的,这就需要根据自己的特点来开发自己的上位驱动程序,并且为用户层程序留出接口来调用,因此在此基础上自己开发了一个简单的半双工通信特点的通信,在此基础上可以进行进一步的扩充和缩减。论文的组织结构第章绪论部分主要介绍了系统设计背景及意义提出了本文的讨论的内容及主要目标,最后说明了论文的整体结构。第章系统分析及总体设计山东大学硕士学位论文本章概要地描述了系统的总体功能和设计框架,分别从处理器和主机上两方面简单的说明了系统的各部分的功能,最后简单的说明二者的通信过程。第章在处理器上协议的实现详细的介绍了在处理器上怎样实现了它的架构,以及详细的程序流程图。第章在主机上协议的实现详细的介绍了在主机上协议的实现,并且详细的介绍了在上如何进行驱动程序的开发和实现。第章通信功能的实现与测试将处理器和主机相连后进行了数据通信的实验和测试,详细介绍了数据在处理器和主机间的通信过程。第章设计结论本章是全文工作的总结和对进一步工作的展望。山东大学硕士学位论文第章系统总体设计处理器上协议设计处理器概述处理器的内核是公司为要求高性能、低成本、低功耗的嵌入式应用专门设计的内核,它具如下特占’采用了哈佛结构,拥有独立的指令总线和数据总线,可以同时进行取指与数据访问。有完全基于硬件进行中断处理,最多可减少个时钟周期数,在实际应用中可减少中断。在支持传统的基础上更采用了新型的单线调试技术,专门拿出一个引脚来做调试,从而节约了大笔的调试工具费用。中还集成了大部分存储器控制器,这样工程师可以直接在外连接,降低了设计难度和应用障碍。处理器采用架构,它包括所有的位指令集和基本的位指令集架构,处理器不能执行指令。处理器支持两种处理器的操作模式,还支持两级特权操作,大大提高了系统的安全性和稳定性。他内部集成了硬件乘法器和除法器,在运算效率上大大提高。山东大学硕士学位论文门圈处理嚣照片匿图处理器内部棱结构如上图为处理器的照片,图为处理器内部的基于的的核心架构。做为公司最新推出的一款内核其性能比以前的山东人学硕士学位论文核心优秀很多,在上面已经介绍了它的优点,而且价格上比以前的同等性能的处理器要便宜很多。它内部集成了除以外的很多单元,为了调试的方便特别做了一个单线的调试接:,当然接口还是保留的【。通信协议的硬件结构图设备框图如上图所示,是集成在处理器内部的外围的框图,它主要有以下特征:符合全速设备的技术规范可配置到个端点山东大学硕士学位论文循环冗余校验生成校验,反向不归零编码解码和位填充支持同步传输支持批量同步端点的双缓冲区机制支持挂起恢复操作帧锁定时钟脉冲生成关于其内部的具体细节将在翻译中进行介绍。图外接电路如上图所示,是从控制器引出后的外接电路,其主要是在线上接了一个的上拉电阻,表明这个从设备是一个全速设备,当跳线帽断开时,只要将该电路接入到主控制器下的集线器上,集线器就能检测到该设备,当跳线帽插上时,可以通过引脚控制设备的连接和断开【】。通信协议的软件结构不论是在进行标准设备类的设计实现还是后来进行的根据自己的通信特点设计的设备类,都是采用了一样的设计架构,分层的设计架构,这样便于程序的移植开发,因为底层的硬件都是一样的,所以在这两个设备类上开发时底层的程序即硬件抽象层程序不需要改变,只是应用层的程序根据具体的功能来实现了一些具体的函数改变了一些特性,所以在两个设备类进行软件设计时改动并不是很大,基本结构框图如图所示。在该从设备的开发中采用了分层的设计方案,便于以后的二次开发,山东大学硕士学位论文开发过程中使用的语言是语言,编译环境是。下面分别从软件结构图和软件流程图两个方面对从设备的软件开发进行介绍。图软件结构图的库被分成了两层:库核心层:这一层直接和的硬件进行通信,并且兼容的规范,是从固件库中分离出来的库。应用程序接口层:这一层为用户应用程序提供和底层的库核心进行交互的接口。表列出了库核心的各个模块山东大学硕士学位论文表库核心模块描述文件在所有的文件中用到的基本数据类型的重定义硬件抽象层,中断处理例程的初始化,,的协议处理和详细文档说明的第章兼容数据传输控制,传输中的一些数据结构的定义应用程序接口模块提供了一个开发模板,需要根据不同的应用程序进行不同的裁剪。表列出了应用程序接口中用到的各个模块。表应用程序接口模块文件描述中断处理函数,配置文件应用程序专门定义的属性。,非控制端点的中断处理函数电源管理模块描述符主机上的协议设计设备在主机上硬件连接图设备在上的挂载山东大学硕士学位论文图展示了设备在机上的挂在情况,它被连接在位于主控制器内部的根集线器上,该主控制器被连接在总线上。因此在编写上的驱动程序时会包括设备驱动程序、总线驱动程序、主控制器驱动程序,他们之间相互协作,共同完成主机和设备间的数据传输,在操作系统下,总线驱动程序和主控制器的驱动程序微软都已经提供了,一般不用自己再进行开发,而设备驱动程序,如果不是标准设备的话往往需要自己编写驱动程序,这些具体细节在第章中进行详细描述【。在主机上软件结构在进行标准设备类的软件设计时因为是标准的设备类,所以微软提供了驱动程序来跟从硬件设备进行通信,开发人员只需要进行文件的编写,以便主机识别底层设备并正确的给他加载相应驱动程序,而在根据自己的特点设计通信时则需要自己编写驱动程序来识别自己的设备,因此在此主要简单的介绍一下根据自己的通信特点在上的驱动程序的软件结构以及用户层的软件结构。图在主机上的驱动程序结构山东大学硕士学位论文设备所采用的驱动程序是一种典型的驱动程序。在驱动程序中,即插即用管理器负责通知操作系统何时添加或删除设备,并使用文件来查找新设备的驱动程序。驱动程序基本组成结构如图所示,包括以下部分:驱动程序的入口和卸载管理:驱动入口程序例程:处理驱动程序的初始化驱动程序的卸载则在函数中进行了处理,释放以前占用的系统资源。即插即用管理:对进行处理,处理设备的添加、删除和停止。读写文件管理:分发例程、、等,处理用户程序和系统内核发出的各种请求电源管理:处理电源管理请求。系统消息管理:,它是一种系统管理员报告管理信息的协议,这个协议能测量和管理消耗在本地客户机上的资源信息【另外,在驱动程序的加载方面,不是通过驱动程序的名称来识别的,而是通过一个符号链接名或一个的全局惟一标识符来识别。运行平台支持两种模式:用户模式和内核模式。用户模式下,应用程序接口调用函数在一些例程的帮助下可完成向设备读写数据功能。操作系统创建一个称为请求包的数据结构,并将送入设备驱动的一个入点。而在内核模式下,设备驱动执行并最终完成与硬件的数据访问。驱动程序工作于内核模式,既可以直接访问硬件,也可以通过硬件抽象层提供的一些功能实现对硬件的访问。其功能相对来说没有驱动程序复杂,在此先不做介绍,编写用户程序的主要目的是进行系统的测试,其结构在第章再详细介绍。山东大学硕士学位论文第章在处理器上协议的实现虽然在系统的设计过程中设计了两种类型的通信方式,一种是基于标准设备类的通信方式,一种是根据自己的特点设计的一个半双工的通信方式,但在处理器上用的系统结构都是一样的,这在第二章已经简单介绍了,在设计这两种通信方式时,修改只是源文件中的一些函数,以及在中断处理函数中对应的修改,所以在系统的源文件详细说明和系统内部的程序流程图都是一样的,在此统一进行说明【‘。系统中定义源文件详细说明核心模块、这个文件定义了库中主要使用的数据类型,这些数据类型依赖于所使用的处理器。、,模块实现了硬件的抽象层,该文件以宏定义的方式提供了硬件内部各个功能模块的基地址和偏移量。、,模块提供了当有正确的数据传输过来时的中断处理例程,该模块提供了最终的中断处理代码。在设计过程中共设计了两个中断处理函数:低级中断处理:使用处理函数,主要用于处理简单的中断传输和块传输。高级中断处理:使用处理函数,主要用于快速传输,像同步传输。、,模块是编写的这个库的核心,我用他实现了所有的功能请求的函数,山东大学硕士学位论文像前面提到的中断处理函数的内部调用的函数都在这个文件中编写实现【。在该库中我根据的标准设备请求进行了相应的函数处理:、请求用于主机读取设备、接或端点的状态。表列出了其在事务字节数据包中的定义格式。在该请求的数据阶段,设备将向主机返回字节具有特定格式的数据。表请求的定义格式数据阶段设备状态接口接口状态端点端点状态字段中的“接口和“端点的取值分别对应设备中接口描述符的字段值和端点描述符的字段值。请求只在设备处于地址状态和配置状态时有效,如果它指向的接或端点不存在,设备将对其返回握手包【。当请求的接收方是设备时,其数据阶段所返回的字节数据中,只有位和位是有效的,其它位均被保留,如图所示。其中,位指明设备当前是否为自供电的,表示总线供电、表示自供电。位指明设备当前是否支持远程唤醒功能,表示该功能被禁止、表示该功能已被使能,其缺省值位,主机可以使用请求来更改位的值。远程唤醒自供电保留置保留置图请求的返回值或山东大学硕士学位论文当请求的接收方是接口时,其数据阶段所返回的字节数据全被保留,且必须置,如图所示。保留置保留置图请求的返回值当请求的接收方时端点时,其数据阶段所返回的字节数据中,只有位是有效的,其它位均被保留,如图所示。其中,位指明端点的停止特性,表示该端点已被停止,表示其未被停止。主机可以使用请求来设置或清除该位的值,其效果与硬件实现时相同。另外,当设备接收到凡玎或请求时,该位将被置。对于支持数据触发机制的端点,不管其是否处于停止状态,请求都会将其数据触发位初始化为缺省控制通道不必具有停止特性,但有时它可以使用位来表示一个错误状态,如果该位被置,除请求、请求和请求外,该管道将对其它所有标准设备请求返回握手包【。自供电保留置保留置图请求的返回值、请求用于清除或禁止设备、接口或端点的某些特性。表列出了其在事务字节数据包的定义格式。该请求无数据阶段。山东大学硕士学位论文表请求的定义格式数据阶段特性选择符接口无端点字段指明设备、接口或端点特性选择符的值,以清除或禁止相应的特性,它必须与请求的接收方相对应。也就是说,如果该请求的接收方时设备,则该字段只能使用设备特性选择符的值如果接收方时接口,则只能使用接口特性选择符的值如果接收方时端点,则只能使用端点特性选择符的值。表列出了当前支持的标准特性选择符及其取值。其中,对应端点的停止特性,对应设备的远程唤醒功能,用于设备的测试模式,它不能由请求来清除或禁止。现在还没有用于接口的特性选择符。表标准特性选择符特性选择符接收方值端点设备设备请求只在设备处于地址状态和配置状态时有效,如果它指定的特性不能被清除或它指向的接口或端点不存在,设备将对其返回握手包。、请求用于设置或使能设备、接口或端点的某些特性,它与请求相对应。表列出了其在事务字节数据包中的定义格式。该请求无数据阶段。山东大学硕士学位论文表请求的定义格式数据阶段测试选择特性选择符无符接口端点当字段值为时,字段的高位字节指明设备测试选择符的值,其地位字节必须为这时请求将置设备的上行端口于特定的测试模式,其到测试模式的转换操作发生在该请求的状态阶段结束之后,且必须在内完成。高速设备在缺省状态、地址状态和配置状态时都必须支持该请求。表列出了当前支持的测试选择符及其取值。表测试选择符测试选择符值测试选择符值’除高速设备在缺省状态下也能支持外,请求只在设备处于地址状态和配置状态时有效,如果该请求所指定的设备特性不能被设置,或它所指向的接口或端点不存在,则设备将对其返回握手包,以表示请求处理失败。、请求用于为设备分配一个唯一的设备地址。表列出了其在事务字节数据包中的定义格式。该请求无数据阶段。表请求的定义格式数据阶段设备地址无字段指明新的设备地址,其取值范围为。当设备接收到山东大学硕士学位论文请求时,其必须在内完成对该请求的处理,并结束其控制传输的状态阶段之后再经过的恢复时间,则该设备将开始使用新的设备地址。也就是说,设备使用原地址完成对请求的处理,而其改变地址操作是在该请求状态阶段结束之后才完成的,这一点不同于其它标准设备请求。在设备处于缺省状态时,如果其接收到字段值为的请求,则它将仍停留在缺省状态如果其接收到字段值不为的请求,则它将进入地址状态。在设备处于地址状态时,如果其接收到的字段值为的请求,则它将仍停留在地址状态,但会使用这个新地址。在设备处于配置状态时,请求无效。、请求用于主机读取指定的描述符。表列出了其在事务字节数据包中的定义格式。在该请求的数据阶段,设备将向主机返回指定的描述符。表请求的定义格式数据阶段类型和索引或语言描述符长度描述符字段的高位字节指明主机所读取描述符的类型值地位字节指明描述符的索引值,其只对配置描述符和字符串描述符有效,对于其它描述符低位字节应置。描述符的索引值适用于设备中存在多个同种类型描述符的情况,其取值范围为至该类型描述符的个数减。字段指明字符串描述符的语言,对于其它描述符该字段应置。字段指明该请求所返回的字节数,如果描述符的长度大于该字段值,则设备只返回该描述符,并以一个小于最大长度的数据包或一个空数据包来结束该控制传输的数据阶段。请求仅支持三种类型的描述符:设备描述符、配置描述符和字符串描述符。接口描述符、端点描述符、设备类定义描述符和供应商自定义描述符都将做为配置信息,由请求随配置描述山东人学硕士学位论文符一起返回,且返回顺序一般为配置描述符、第接口的接口描述符和端点描述符、第接口的接口描述符和端点描述符、设备类定义描述符、供应商自定义描述符。请求在设备处于缺省状态、地址状态和配置状态时均有效,如果它指定的描述符不存在,设备将对其返回握手包。、请求用于更新设备已有的描述符或向其添加新的描述符。表列出了其在事务字节数据包的定义格式。在该请求的数据阶段,主机将向设备发送指定的描述符【】。表请求的定义格式数据阶段类型和索引或语言描述符长度描述符字段的高位字节指明主机所读取描述符的类型值低位字节指明描述符的索引值,其中只对配置描述符和字符串描述符有效,对于其它描述符该低位字节应置。字段指明字符串描述符的语言,对于其它描述符该字段应。置。字段指明该请求将向设备发送的字节数请求仅支持三种类型的描述符:设备描述符、配置描述符和字符串描述符。接口描述符和端点描述符都将作为设备配置的一部分在设置配置描述符请求中设置。另外,请求时可选的,且它仅在设备处于地址状态和配置状态时有效。如果不支持该请求,设备将对其返回握手包,以表示请求处理失败。、请求用于主机读取设备当前的配置值。表列出了其在事务字节数据包中的定义格式。在该请求的数据阶段,设备将向主机返回字节的配置值。表请求的定义格式数据阶段配置值山东大学硕士学位论文在设备处于地址状态时,其将对~请求返回值在设备处于配置状态时,其将返回当前配置描述符中字。段的值在设备处于缺省状态时,请求无效【、请求用于为设备选择一个合适的配置。表列出了其在事务字节数据包中的定义格式。该请求无数据阶段。表请求的定义格式妒沥数据阶段配置值无字段的低位字节指明设备的配置值,其必须与某一描述符中的字段值相匹配,也可以为字段的高位字节保留】。在设备处于地址状态时,如果其接收到字段值为的请求,则它将仍停留在地址状态如果其接收到字段值不为的瓜请求,则它将使用该配置,并进入配置状态。在设备处于配置状态时,如果其接收到字段值为的请求,则它将进入地址状态如果其接收到字段值不为的请求,则它将仍停留在配置状态,但会使用这个新配置。在设备处于缺省状态时,砒玎请求无效。请求用于主机读取指定接口的当前可替换设置值,即、其接描述符中字段的值。表列出了其在事务字节数据包中的定义格式。在该请求的数据阶段,设备将想主机返回字节的可替换设置值。请求只在设备处于配置状态时有效。在地址状态,设备将对其返回、握手包。表请求的定义格式数据阶段接口可替换设置值、请求用于为指定接口选择一个合适的可替换设置。表列出了其在事务字节数据包中定义格式。该请求无数据阶段。山东大学硕士学位论文表请求的定义格式数据阶段可替换设置值接口无当设备的一个接口在多个可替换设置时,请求使得主机可以为其选择所需要的可替换设置。如果设备的某一接口只支持一个缺省的可替换设置,则它将在该请求的状态阶段返回握手包。请求只在设备处于配置状态时有效,如果它指定的接。口或可替换设置不存在,设备将对其返回握手包【应用程序接口模块、在模块编写了一个函数,用来从宏观上处理中断,判断是哪种中断类型,然后调用相应的中断处理函数,其判断过程在下面的程序流程图。中对其处理过程进行了详细的介绍【对每一种中断类型我编写了一个回调函数,以命令,例如。、文件是用来定义通信过程中用于发送数据的缓冲表和所有节点在中的地址并且在这个文件中定义了中断掩码来规定哪些中断可以开启那些中断关闭。、模块定义了除端点以外的所有其余个端点的中断回调函数,这个函数对应的是在有数据正确传输时产生的中断对应的处理,、,模块用来定义在模块中各个标准响应函数用到的数据结构如、等。、,这个模块用于管理设备的电源问题。总共编写了四个函数:山东大学硕士学位论文:在设备电源打开时进行的相应中断处理:在设备电源关闭时进行的相应中断处理:在设备挂起时进行的相应中断处理:在设备唤醒时进行的相应中断处理、,这个文件中包含了所有的描述符,根据我的设备特点定义了所有的设备描述符【。的标准的设备描述符格式为:、设备描述符一个设备可以含有一个或多个配置,如设备的低功耗模式和高功耗模式就可分别对应一个配置。设备描述符用于指出设备的总体信息,其内容对该设备中同一传输模式下的所有配置都有效。一个设备只能有一个设备描述符,它由个字段组成,其长度为字节,见表。表设备描述符地址偏移量字段名长度字节说明描述符的长度字节:描述符的类型:设备规范版本号码类代码子类代码协议代码端点所支持的最大数据包长度供应商产品设备版本号码供应商字符串描述符的索引值产品字符串描述符的索引值设备序列号字符串描述符的索引值,所支持的配置数、配置描述符设备的一个配置可包含一个或多个接口,且每个接口都可以相互独立地工作,如光盘驱动器就可以具有大容量存储接口和音频接口。主机使用请求位设备选择一个合适的配置代表非的配山东大学硕十学位论文置值使用请求读取设备当前的配置值。所有的设备都要至少支持一个配置描述符。设备的每个配置都必须由一个配置描述符,以指出其配置信息。配置描述符有个字段组成,其长度为字节,见表。当主机请求配置描述符时,其所有相关的接口描述符和端点描述符都将被返回:如果其包含设备类定义描述符或供应商自定义描述符,它们也会跟在配置描述符的后面一起返回【。表配置描述符地址偏移量字段名长度字节说明描述符的长度字节:描述符的类型:配置配置信息的总长度所支持的接口数配置值配置字符串描述符的索引值配置特性所需的最大总电流、接口描述符设备的接口是一个端点的集合,它负责完成该设备的特定功能。接口可以包含一个或多个可替换设置,它们能够在设备处于配置状态时,改变当前接口所含端点的个数和特性,其缺省值为可替换设置。主机使用请求为接选择一个合适的可替换设置代表可替换设置值,使用请求读取接口当前的可替换设置值。设备同一配置的各个接口间不能使用相同的端点,但同一接口的各个可替换设置间可以使用相同的端剧。值得注意的是,主机不能使用请求来单独读取接口描述符,它只能作为设备配置信息的一部分在请求中返回,同时其所含端点的端点描述符也会一并返回。其格式如表所示。山东大学硕士学位论文表一接口描述符地址偏移量字段名长度序节说明描述符的长度字节:描述符的类型:接接口号可替换设置值所使用的端点数不包括端点类代码子类代码协议代码接口字符串描述符的索引值、端点描述符端点描述符用于指出设备端点的特性,如其所支持的传输类型、传输方向等信息。除端点外,设备的每个端点都必须有一个端点描述符。值得注意的是,主机不能使用请求来单独读取端点描述符,其只能作为设备配置信息的一部分在请求中返回。端点描述符由个字段组成,其长度为个字节,见表。表端点描述符地址偏移量字段名长度字节说明描述符的长度字节:描述符的类型:接端点号及传输方向端点特性最大数据包长度访问间隔、字符串描述符字符串描述符用于保存一些文本信息,如供应商名称、产品序列号等,它是可选的,在设备的其它描述符中,可以含有指向字符串描述符的索引值,如设备描述符的字段,如果其值为,则表示其引用的是第一个字符串描述符如果其值为,则表示该字段没有引用任何字符串描述符。字符串描述符由个字段组成,其长度是变化的,见表。其中,山东大学硕士学位论文是编码的字符串,它不是以来结尾的,其长度可通过将字段值减得到。表字符串描述符地址偏移量字段名长度字节说明描述符的长度字节:描述符的类型:字符吕编码的字符串系统内部的程序流程图否图系统初始化过程由东大学硕士学位论文图中断处理例程山东大学硕士学位论文将接收到的数据存储在上,将中的数据拷贝到的发送端点对应缓冲区中设置发送计数器值为设置端点的发送有效土终端结束图中断处理例程以上三个流程图只是分别从系统初始化,中断类型分析以及的中断处理例程进行了说明,实际在设计光判断传来的设备请求就费了很大劲,下面简单的说明了标准的设备请求格式【】:设备请求是在事务的数据阶段传送的,其结构如下表所示括号中的数字表示字节数,首字母,,分别表示位图、字节,双字节:山东大学硕士学位论文表数据段格式偏移量大小数值描述交量第位:数据方向位字节位图主机到设备设备到主机第位:类型标准类厂商自定义保留第枷位:接收者对设备的请求对接口的请求对管道端点的请求其他保留字节数值请求类别字节数值不同请求含以不同,字节数值不同请求含义不周字节数值表示需要有多少数据返回:请求命令代码,在标准的命令中,每~个命令都定义了编号,编号的值就为字段的值,编号与命令名称如下要注意这里的命令代码要与其他字段结合使用,可以说命令代码是标准请求命令代码的核心,正是因为这些命令代码而决定了个标准请求命令:表标准设备请求功能请求名请求号读取设备、接口或端点的状态清除或禁止设备、接口或端点的某些特性设置或使熊设各、接口或端点的某些特性飞分配设备地址读取指定的描述符。更新已有的描述符或添加新的描述符读取设备当前的配置值鼻为设备选择一个合适的配置读取指定接口的当前可替换设置值为指定接口选择一个合适的可替换设置读取同步端点所指定的帧序号山东大学硕士学位论文不论是标准设备请求还是各种自定义请求,它们都只能使用控制管道来进行传输。当设备在控制传输的事务中返回握手包后,它就可以开请始处理这些请求所指定的操作了,且必须在状态结束之前完成求例外,它是在状态阶段结束之后才改变其设备地址的。但有些请求所需的设备操作费时较多,而不能由状态阶段来标识结束,这时需另外定义一种方法,如请求产生的复位操作要持续才能完成,而当集线器端口复位刚刚开始时,其状态阶段就结束了,这时集线器使用端口状态的改变端口被使能来标识该复位操作的完成【。当设备接收到这些控制请求后,应及时做出处理。对于不需要数据阶段的控制请求,设备必须在接收到该请求后的内完成其指定的操作并结束该控制传输的状态阶段。对于需要向主机返回数据的控制请求即包含数据阶段,设备必须在接收到该请求后的内返回第一个数据包,之后的数据包必须在其前一数据包传输结束后的内返回,且设备必须在其返回最后一个数据包后的内完成该控制传输的状态阶段。对于需要向设备发送数据的控制请求即包含数据阶段,它们必须在内完成所有的传输,包括设备接收到主机发出的全部数据包,并完成该控制传输的状态阶段。另外,某些设备类定义请求和供应商自定义请求也可不遵循上述完成时间的限制。当设备接收到无效的或其不支持的控制请求时,它会对该事务处理的数据阶段和状态阶段返回握手包,该错误状态会在其接收到新的令牌包时自动恢复,这属于“协议”。但如果出现某种错误,而导致设备不能使用缺省控制管道与主机进行通信时,该设备必须被复位才能清除其错误状态。山东大学硕士学位论文第章在主机上协议的实现在主机上的的驱动详细设计过程系统模块文件说明、,在这个文件中主要进行了驱动程序的初始化操作以及设备的卸载,该文件中定义了三个函数‘】::实现了驱动程序的初始化,主要工作是进行了各个对对应到处理函数应的处理函数的映射,如垂数,该函数的实现是在模块中。:在该函数中的主要工作是创建了一个设备,因为一个驱动程序可以对应多个设备,在初始化中只创建了一个设备。:在驱动程序卸载的时候进行的一些对内存的回收工作,、,模块实现了对类型的的响应处理,处理的主要是一些对设备的操作,这些和单纯的数据通信是相对应的,如系统要复位设的,其对应的控制码备,则会发送一个为,对这个控制码会有专门的处理函数。、,这个模块主要对这个进行相应的处理,在设备的启动,停止,状态的查询等都有相应的处理函数对应,主要在设备插入和删除时起作用。、,这个模块是对类型的的处理,主要工作是对设备的电源管理的请求。的电源管理,处理系统和用户发送过来的、,该文件主要是通信过程中对从用户层和该层下面设备驱动程序发送过来的读写请求进行的相应处理,其主要工作就是进行上层和底层通信提供了一个接口。、山东大学硕士学位论文主要定义了全局控制码,用来为用户层程序提供设备链接的接口。、,该模块是编写的设备驱动程序必须的,他以日志的方式记录了系统发送的一些控制消息‘。驱动程序软件流程设计图系统初始化过程如上图所示,用流程图的方式简单的说明了一下驱动程序的初始化过程,每一个会对应一个处理函数,主下面会有对应的或控制码,这些或控制码中每一种都会有对应的处理函数,而且这些的发送可能会出现同步问题,内存的调用在内核模式下需要设为非分页内存,非分页的内存资源非常宝贵,因此要很好的进行回收,否这会导致系统的内存不足而崩溃我在这讲清楚的话涉及的知识面太多了,包括一些内存的分页与非分页,以及的同步问题等都需要详细的说明,因此在这不进行介绍了,这些知识都可以参看相应的内核编程书进行说明【。山东大学硕士学位论文在主机上用户层详细设计过程对主函数中传过来的形参进行解析否舔否是以否是读取台否式写数据配置描述符~澍根据自己定义的以文件的方式以文件的方式打开设备打开设备获得打开设备获得获得其句柄其句柄其句柄一为要读的数据设备分配相应内存空间获德其设备描述符分配相应内存空间进行打印显示并将要写入的数据写入发送发送获得其接口描述符类型到底层驱的到底层驱动进行打印显示动等待其返回等待的返回回是否月功获釜糟毒釜剽进行打印显示:三“~“‘龟是否成奄砌将读数据成功的消将写数据成功的消息在屏幕上打印显息在屏幕上打印显示示将分配的读内存释将分配的写内存释放掉放掉结束图用户层程序流程图山东大学硕士学位论文因为本设计的主要目的是实现和通信协议,所有用户层的系统设计主要是用于测试的,所以没考虑界面的问题,以后在实际应用中会根据具体要求做可视化的界面,便于交互,在该层上使用了控制平台进行的开发,很好的实现了和底层的驱动程序的交互【,其详细的设计流程见上图其主功能代码在至数中实现了,另外还包括以下处理函数::用于解析函数中传过来的形参,根据这些形参判断应该如何进行操作。:用于打印显示关联的设备的配置信息。实现了打开设备的具体详细操作过程。:获得所打开的设备的名称调用函数打开设备。:根据获得设备链接的名字。:在中输入的形参有错误时会调用这个函数打印出具体的形参格式。:以字符串形式返回所有描述符的信息。:以字符串形式返回所有状态属性信息。:打印输出设备的配置描述符。打印输出设备的接口描述符。:打印输出设备的端点描述符。:利用传输方式来和设备进行数据通信。山东大学硬士学位论文第章通信功能的实现与测试基于标准设备类的实现测试过程当第一次插入一个新设备时会提示加载相应的驱动文件图显示的就是在插入设备后加载的驱动程序。在操作系统下它将该设备识别成了一个虚拟的串口即。图中还有一个驱动工具加载在过滤层的驱动程序,是为了抓取通,是信过程中的数据包而加载的驱动,对的通信没什么影响四。图加蔽驱动如下图所示,演示了一个通过端口发送数据到处理器,然后处理器又将接收到的数据通过口发送回主机的一个通信过程。山东大学硕士学位论文霉鼍譬鼍紫熙黑霉曼曼罡旦到蒯圳堕旦堕里倒刿亘碰惭丽声而『『旷图经发送的数据在接收到如下图所示,演示了一个通过端口发送数据到处理器,然后处理器又将接收到的数据通过接发送回主机的一个通信过程。厂图经发送的数据在接收到山东大学硕士学位论文自定义的设备类的实现测试过程驱动程序实现测试过程在驱动程序开发过程中因为其内部的发送都是通过操作系统来转发的,这些对程序员是不可见的,所阻在开发过程中遇到了很多问题很难解决就是因为其不支持在线调试功能,幸好有一些比较专用的内核调试工具像,可以将内核中所有的打印信息捕获显示出来,在这我介绍一下我调试驱动程序时用到的调试工具::可以详细的查看驱动程序在硬件设备上的挂载情况:可以查看所有的驱动对象创建的驱动名和给用户程序暴露的设备名称:可以捕获到内核中驱动程序内部打印出来的调试信息:可咀很好的跟踪系统给选定设备发送的的来源,结束,等信息,是我调试过程中现在发现的最好用的追踪工具。:可以查看设备的具体的描述符信息。:可以用它来抓取数据在选定设备上的传输情况,不过都是队十六进制格式给出的,所以解析起来比较麻烦。圈~插入自定义的设各后加载的驱动程序山东人学硕士学位论文如上图所以,显示了我的驱动程序已经成功加载。在设备管理器中我让它显示的名字是。誊囊重耍燕直二、’蠢、亩日嗣文尊彝日、々抽一札一‘‰“《::』”~日一,“::日一口埘,”“四:::口,日“::盼删一盯一艇。口甜::。:,删::一一四一附口柚:,”:一:肿四女肿删々々,,《图从驱动程序打印出来的调试信息上图显示了用显示在我刚插入设备时,从驱动程序内部打印出的各个功能模块的运行调试信息,就是凭借这些调试信息在调试驱动程序的过程中可以判断那些模块的加载是否成功从而判断驱动程序是否有错谡。这些打印出的调试信息的都是我预先在驱动程序中写好的,如果以后程序运行无误,可以将这些打印的调试语句都注释掉因为驱动程序不支持在线调试,因此在调试阶段只能用这些打印的调试信息来调试我的驱动程序。

类似资料

该用户的其他资料

2013管理类联考综合能力真题答案及解析范文.doc

基于WSN的高速列车运营周边山体滑坡监测方案设计.doc

非关税贸易壁垒.doc

以行业作风为重点以强化服务为宗旨建立起工商机关迅捷高效的运作机制(范文).doc

2015-1-20产房优质护理实施方案.doc

职业精品

精彩专题

教您如何写好一份策划书

教您如何写好一份策划书,为您提供策划书格式、范文、模板。营销方案策划书,公司活动策划书,创业策划书模板...写好这些策划书不再是难事。

用户评论

0/200
    暂无评论
上传我的资料

精选资料

热门资料排行换一换

  • 连环画《曹雪芹.pdf

  • 机电一体化课程设计指导书.pdf

  • 拍卖理论.pdf

  • 数控折弯机DNC880数控系统_…

  • 八大菜系.ppt

  • 王念孙父子的_连语观_及其训解实…

  • 金融资产.ppt

  • 龙纪『小刀会』赵宏本,王亦秋.p…

  • 我如何弄跨巴林银行·尼克李森自传…

  • 资料评价:

    / 38
    所需积分:0 立即下载

    意见
    反馈

    返回
    顶部