2022年WinCEUSB驱动开发 .pdf
《2022年WinCEUSB驱动开发 .pdf》由会员分享,可在线阅读,更多相关《2022年WinCEUSB驱动开发 .pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、WinCE USB 驱动开发随着 USB2.0设备的不断增加,USB设备驱动开发在嵌入式开发中变的越来越重要。Windows CE支持 USB 2.0 更是对这一波新技术浪潮产生巨大的推动。近期我负责一个这样的项目,在 WinCE下开发 USB接口的外围设备驱动。当时做这个项目花费了我相当多的时间和精力,错走许多冤枉路使我精疲力尽。项目需求是在已调好的ARM9 板子上开发 USB WiFi 无线网卡的驱动程序,具体要求是驱动程序平台是WinCE,CPU类型支持 ARM 构架,要能比较方便地移植到X86;驱动接口类型是 USB2.0和 Wlan 802.11b。后来因为连接效率一直有问题,就东改
2、西改,最后改的是一塌糊涂。幸好老板比较宽容,给了我充裕的时间和支持,这里将关于 USB驱动开发的点滴理解与大家分享。1.什么是 WinCE设备驱动程序?(1)从驱动加载方式来区分在深入探讨 Windows CE所支持的外围设备驱动程序之前,先了解在WinCE平台上使用的两种设备:内建设备和可安装设备。因此,从驱动加载方式来看WinCE可分为本机设备驱动(Built-In Driver)、可加载驱动(Loadable Driver)以及混合型驱动。本机设备驱动本机设备驱动即Native Device Drivers。WinCE设计成可直接使用内建设备,这些设备由本机驱动过程控制,而本机驱动程序又
3、与WinCE的核心组件紧密相连。这些驱动对应的设备通常在系统启动时,在GWES 的进程空间内被加载,因此它们不是以独立的DLL形式存在,也因此要求每一个本机驱动程序都必须与称为设备驱动程序接口(DDI)的特定接口一致。本机设备是指整合进平台的设备,其中包括显示、触摸面板、音频、串行埠、LED、电池和 PC卡插座等。如果没有这些本机设备整个系统就不能和用户信息交流,例如触摸面板和显示等。本机驱动程序一般设计为动态链接库,但有两个例外:电池和 LED驱动程序由于小而设计为静态库(当建立 CE图像时与 GWES 模块链接)。这些设备相应的驱动程序是在WinCE平台开发过程中由OEM 开发的,它们储存
4、在 ROM 或闪存内。通常只有 OEM 才会对本机设备驱动程序进行修改,其它自由设备生产商只提供附加的硬件设备,对本机设备驱动程序不会有过多涉及。可加载设备驱动可加载设备是指可与平台连接和分离的第三方接口设备,可由用户随时安装和卸载。这种外围设备的驱动也被称为流驱动,这些驱动可以在系统启动时或者和启动后的任何时候由设备管理器动态加载。通常这类驱动是以DLL动态链接库的形式存在,系统加载后这些驱动程序也只是以用户态的角色运行。可加载驱动程序是通过文件操作API 来从设备管理器和应用程序获得命令。在 WinCE典型的可加载驱动有:PCMCIA driver(PCMCIA.dll)、Serial d
5、river(SERIAL.dll)、ATAFLASH driver(ATA.dll)、Ethernet driver(NE2000.dll,SMSC100FD.dll)。与本机驱动程序不同的是,所有可加载流驱动程序都共享一个公用接口。该接口由每个驱动程序内的10 个功能或记录点组成,这些功能与应用程序所用的文件 API 中的功能匹配。因此,控制可加载设备的流接口驱动程序一般由应用程序存取,流接口驱动程序由一个特殊文件来将设备功能展现给应用程序的,该文件可被打开、读取、写入和关闭。例如,用户将一个GPS设备与平台相连后,就可启动有 GPS 功能的应用程序来存取并使用该设备。WinCE是使用已有的
6、 API 来名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 3 页 -让应用程序存取这些驱动程序,而不是建立新的API。(2)从驱动程序层次上分类一般可以分为独立驱动和层次型驱动两类。独立驱动程序是指将驱动程序编写成同时包含 Model Device Driver(MDD)和 Platform Dependent Driver(PDD)层的独立驱动。使用独立驱动的好处在于可以省去MDD 和 PDD 层驱动之间的信息传递,这一点在实时处理中非常重要。独立驱动的代码包括中断服务例程和平台相关处理函数。另外,如果设备的操作和MDD 驱动层的接口描述相吻合,用独立驱动程序可以提高处理性能
7、。层次型驱动是指分为两层,较上层的MDD 和比较下层的 PDD。MDD 实现的是和平台无关的功能,它描述了一个通用的驱动程序框架;而 PDD是和硬件以及平台相关的代码组成。MDD 调用 PDD 中特定的接口来获取硬件相关的信息。当使用层次型驱动的时候,一般只需要基于相近的样列驱动程序,针对特定的硬件只修改 PDD 程序,MDD 建立的框架可继续使用。但由于层次间接口的层层调用以及消息的传递,使得处理速度相对于独立驱动程序要慢。因此,在嵌入式实时要求苛刻的环境下,层次型驱动显得不是很适合。简单的说,独立驱动是把 PDD 与 MDD 写在一起,没有做严格的区分,通常这种驱动比较简单,比如ATADI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年WinCEUSB驱动开发 2022 WinCEUSB 驱动 开发
限制150内