欧宝平台安全吗_WinCEUSB驱动开发

本文摘要:伴随着USB2.0设备的大大减少,USB设备驱动产品研发在内嵌式产品研发中变的更为最重要。

伴随着USB2.0设备的大大减少,USB设备驱动产品研发在内嵌式产品研发中变的更为最重要。WindowsCE抵制USB2.0称得上对这一波新技术应用的浪潮造成巨大的拓张。最近我部门管理一个那样的新项目,在WinCE下产品研发USB模块的外场设备驱动。

那时候保证这一新项目花销了我非常多的時间和活力,错回首很多歪路使我精疲力竭。  新项目市场的需求是在已调好的ARM9木板上产品研发USBWiFi无线网卡的驱动程序,确立回绝是驱动程序服务平台是WinCE,CPU种类抵制ARM架构,要能比较便捷地重置到X86;驱动接口方式是USB2.0和Wlan802.11b。之后由于相接高效率依然有什么问题,就东改西改成,最终改成的是一塌糊涂。

所幸老总比较重视,给了我充裕的時间和抵制,这儿将有关USB驱动产品研发的点点滴滴讲解与大伙儿共享资源。  1.什么叫WinCE设备驱动程序?  (1)从驱动读取方法来区别  在深入分析WindowsCE所抵制的外场设备驱动程序以前,再作了解在WinCE服务平台上用以的二种设备:内辟设备和可改装设备。因而,从驱动读取方法看来WinCE可分成本费机设备驱动(Built-InDriver)、可读取驱动(LoadableDriver)及其复合型驱动。

  ①该设备设备驱动  该设备设备驱动即NativeDeviceDrivers。WinCE设计方案成可必需用以内辟设备,这种设备由该设备驱动过程管理,而该设备驱动程序又与WinCE的关键部件紧密联接。这种驱动相匹配的设备一般来说在开机启动时,在GWES的过程室内空间内被读取,因而他们并不是以独立国家的DLL方式不会有,也因而回绝每一个该设备驱动程序都必不可少与称之为设备驱动程序模块(DDI)的特殊模块完全一致。

  该设备设备就是指整合入服务平台的设备,在其中还包含说明、碰触控制面板、声频、串行通信埠、LED、充电电池和PC卡电源插座等。假如没这种该设备设备全部系统软件就没法和客户信息沟通交流,比如碰触控制面板和说明等。该设备驱动程序一般设计方案为动态链接库,但有两个特别注意:充电电池和LED驱动程序因为小而设计方案为静态数据库(当建立CE图象时与GWES模块连接)。这种设备适度的驱动程序是在WinCE服务平台产品研发全过程中由OEM产品研发的,他们存储在ROM或储存器内。

一般来说仅有OEM才不容易对该设备设备驱动程序进行修改,其他支配权设备制造商只获得可选择的硬件配置设备,对该设备设备驱动程序会出现过多涉及。  ②可读取设备驱动  可读取设备是所说可与服务平台相接和提取的第三方模块设备,可由客户随时随地改装和维修。

这类外场设备的驱动也称之为流驱动,这种驱动能够在开机启动时或是和起动后的任何时刻由设备管理工具动态性读取。一般来说这类驱动是以DLL动态链接库的方式不会有,系统软件读取后这种驱动程序也仅仅以客户态的人物角色经营。

可读取驱动程序是根据文档作业者API来从设备管理工具和应用软件获得指令。在WinCE典型性的可读取驱动有:PCMCIAdriver(PCMCIA.dll)、Serialdriver(SERIAL.dll)、ATAFLASHdriver(ATA.dll)、Ethernetdriver(NE2000.dll,SMSC100FD.dll)。

  与该设备驱动程序各有不同的是,全部可读取流驱动程序都共享一个公共模块。该模块由每一个驱动程序内的10个作用或纪录点组成,这种作用与应用软件常用的文档API中的作用给出。因而,操控可读取设备的流模块驱动程序一般由应用软件读取,流模块驱动程序由一个相近文档来将设备作用展示出给应用软件的,该文件可被合上、载入、加载和再开。

比如,客户将一个GPS设备与服务平台联接后,就可起动有GPS作用的应用软件来读取并用以该设备。WinCE是用以了解的API来让应用软件读取这种驱动程序,而不是建立新的API。  (2)从驱动程序层级上归类  一般能够分为独立国家驱动和层级型驱动两大类。

独立国家驱动程序是所说将驱动程序自传式另外包含ModelDeviceDriver(MDD)和PlatformDependentDriver(PDD)层的独立国家驱动。用以独立国家驱动的好处取决于能够省去MDD和PDD层驱动中间的信息内容传输,这一点在并行处理中十分最重要。

独立国家驱动的编码还包含终断服务例程和服务平台涉及到处理函数。此外,假如设备的作业者和MDD驱动层的模块描述相符合,用独立国家驱动程序能够提高应急处置特性。

  层级型驱动就是指分为双层,较顶层的MDD和比较下一层的PDD。MDD搭建的是和服务平台涉及的作用,它描述了一个规范化的驱动程序架构;而PDD是和硬件配置及其服务平台涉及到的编码组成。MDD启用PDD中特殊的模块来出示硬件配置涉及到的信息内容。

当用以层级型驱动的情况下,一般只务必根据类似的样佩驱动程序,对于特殊的硬件配置只修改PDD程序流程,MDD建立的架构可以后用以。但因为层级间接口的逐层启用及其信息的传输,促使响应速度相对性于独立国家驱动程序要快。因而,在内嵌式动态性回绝苛刻的自然环境下,层级型驱动越来越并不是很适合。

  比较简单的讲到,独立国家驱动是把PDD与MDD写成在一起,没保证苛刻的区别,一般来说这类驱动非常简单,例如ATADISK。对于该设备驱动和读取式流驱动是指驱动与系统软件其他模块(调用者)的模块方式上做的归类。因此 ,一个读取式驱动程序能够是独立国家的流式的驱动,比如ATADISK;还可以是层次的流式的驱动,比如OHCI。换句话说,独立国家和层次是驱动搭建方法上的归类,而该设备和读取流式的则是驱动实体模型上的归类。

说白了该设备驱动便是电脑操作系统有享有专业的模块,而读取流式的驱动就是指编写DLL文件给出各种各样流式的接口函数的模块。  2.USB读取式流模块驱动关键点剖析  为了更好地抵制各有不同种类的外场设备,WinCE服务平台获得了具有自定模块的流模块驱动程序实体模型。由于绝大多数USB外场设备因为多功能性更为适合流模块驱动的构造,因此 一般都应用读取式流模块驱动程序实体模型来产品研发USB设备驱动程序。

  (1)USB体系结构剖析  WinCE下USB系统由双层组成:较高USB设备驱动程序层和较低的USB涵数层。较低的USB涵数层自身又由两一部分组成:较高的规范化串行总线驱动程序(USBD)模块和较低的主控制板驱动程序(HCD)模块。根据HCD模块作用和USBD模块搭建高层住宅的USBD接口函数,USB设备驱动程序就能与外场设备进行通信。  在传输数据的全过程中,作业者步骤一般来说按下述的顺序进行:①USB设备驱动程序进行传输数据的复位,即根据USBD接口函数给USBD模块传送数据传送的督促。

②USBD模块将该督促分成一些分离的事务管理。③HCD模块代谢事务管理顺序。

④主控制板硬件配置执行事务管理。这儿务必警示的是,全部的事务管理都是指服务器接到的,外场设备基本上是处于被动拒不接受型的。  (2)USB设备驱动程序通道点函数  从结构特征大家由此可见,全部的USB设备驱动程序必不可少在他们的DLL库设定一定的通道点与USBD模块进行必需的互动。设定通道点函数有两个具有:一是促使USBD模块能与外界设备互动;二是促使驱动程序能开创和管理方法一切有可能务必的备案键。

  下边详尽解读涉及到涵数的具有:USBDeviceAttach是当USB设备相接到主电子计算机时经营,USBD模块不容易启用这一涵数复位USB设备,得到 USB设备信息内容和配置USB设备,而且申报人务必的資源。USBInstallDrive是在第一次读取USB设备驱动程序时最先被启用,它促使驱动程序能开创务必的备案键,作为将一个驱动程序需要的注册表文件信息内容加载到HKEY_LOCAL_MACHINEDriversUSBClientDrivers文件目录下,比如设备名字等。务必注意的是,USB设备驱动程序不用以规范的注册表文件涵数,只是用以RegisterClientDriverID()、RegisterClientSettings()涵数来备案适度的设备信息内容。

  USBUninstallDriver是在客户清除USB设备驱动程序时启用,部门管理清除备案键并出狱其他涉及到資源。它根据启用UnRegisterClientSettings()和UnRegisterClientDriverID()涵数来清除由驱动程序的USBInstallDriver()涵数开创的全部备案键。因而,我们在驱动程序中就务必苛刻依照这三个涵数的原形来搭建,不然就没法为设备管理工具所识别。

  3.USB设备流模块驱动的搭建流程  从WinCEUSB设备驱动实体模型及结构特征中,我们可以明确的看到服务器和外接设备中间的搭建方法。在服务器尾端,根据USBD模块和HCD模块用以环境变量的PIPE访谈一个规范化的逻辑性设备,本质上就是USBD和HCD是一组访谈全部USB设备的逻辑性模块,他们部门管理全部USB设备的相接、读取、除去、传输数据和规范化配置。

在其中HCD是服务器操控驱动,是为USBD获得最底层的作用访谈服务项目,USBD是USB系统总线驱动,位于HCD的顶层,运用HCD的服务项目获得较高层次人才的作用。因而,搭建USB读取流驱动程序大致务必顺利完成下列流程:  (1)随意选择意味着设备的文件名后缀。后缀名十分最重要,设备管理工具在注册表文件中根据后缀名来识别设备。

另外,在流模块取名时也将这一后缀名做为通道点函数的后缀名,假如设备后缀名为XXX,那麼流模块相匹配为XXX_Close,XXX_Init等。  (2)设定驱动的每个通道点函数。说白了通道点就是指获得给设备管理工具的标准文件I/O模块。

在溶解一个DLL后,就用设备文件名后缀拆换姓名中的XXX。因而,每一个读取式流模块驱动程序必不可少搭建XXX_Init()、XXX_IOControl()及其XXX_PowerUp()等一组规范的涵数,用于顺利完成规范的文档I/O涵数和电池管理等。  (3)建立.DEF文档。当设备管理工具复位USB设备c语言编译器出去的流接口函数后,还必不可少建立一个.def文档。

DEF文档界定了DLL要给出的模块集,并且读取式流驱动大多数是以DLL方式不会有的,因此 不可将DLL和DEF的文件夹名称统一一起。DEF文档对他说连接程序流程务必键入哪些的涵数,最终将驱动程序c语言编译器到核心中去,那样这一USB设备流模块驱动程序就可以被应用软件启用。  (4)在注册表文件中为驱动程序创建表项。在注册表文件中建立驱动程序通道点,那样设备管理工具才可以识别和管理方法这一驱动。

除此之外,注册表文件中还能储存附加的信息内容,这种信息内容能够在驱动经营以后被用以到。  在此次USB驱动产品研发全过程中,错回首很多歪路使我叫苦连天。我感觉深达的是因为WinCE获得了规范化串行总线驱动程序(USBD)模块、USBD接口函数合集、样版服务器控制板驱动程序(HCD)模块。

因此 ,大家只务必依据USB设备硬件配置特点,运用USBD获得的各有不同涵数,搭建流接口函数与外场设备的互动。在没特别是在的状况下,我仅次的进帐工作经验是把这种公共的源代码如出一辙回来,能非常大的增加开发进度,进而能更为比较慢地进行内嵌式产品研发。

本文关键词:欧宝平台安全吗

本文来源:欧宝平台安全吗-www.zhanmingjiaju.com

相关文章