1 / 18

Windows CE 驱动程序

Windows CE 驱动程序. Windows CE 驱动程序. Windows CE 驱动程序模型 Windows CE 驱动程序的宿主 Windows CE 驱动程序的类型 Windows CE 驱动程序的分类 示例驱动程序的代码. Windows CE 驱动程序模型. 桌面 Windows 驱动程序模型 操作系统在启动后对硬件进行延迟加载,但依然把驱动程序加载道操作系统的内核空间中。驱动程序工作在系统的地址空间内,实现了驱动的动态加载。. Windows CE 驱动程序模型. Windows CE 驱动程序模型

Télécharger la présentation

Windows CE 驱动程序

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows CE驱动程序

  2. Windows CE驱动程序 • Windows CE驱动程序模型 • Windows CE驱动程序的宿主 • Windows CE驱动程序的类型 • Windows CE驱动程序的分类 • 示例驱动程序的代码

  3. Windows CE驱动程序模型 • 桌面Windows驱动程序模型 • 操作系统在启动后对硬件进行延迟加载,但依然把驱动程序加载道操作系统的内核空间中。驱动程序工作在系统的地址空间内,实现了驱动的动态加载。

  4. Windows CE驱动程序模型 • Windows CE驱动程序模型 • 在Windows CE下,所有的驱动程序都以用户态下的DLL文件形式存在。 • 编写Windows CE驱动程序用到的方法及工具与编写其他任何一个普通的DLL一样。 • 与所有的Win32 DLL一样,Windows CE驱动程序DLL中的代码被一些进程动态加载到地址空间,运行在用户态下。

  5. Windows CE驱动程序模型 • Windows CE驱动程序作为用户态的DLL来实现的优点: • 给操作系统和驱动程序带来了很大的灵活性。操作系统可在运行时动态地加载所需要的驱动程序,可轻松实现外设的即插即用(Plug & Play)。 • 驱动程序放在用户态而不是核心态来实现,也增强了系统的稳定性。驱动程序的崩溃不会影响到操作系统内核。 • 驱动程序放在用户态下可给驱动开发人员提供便利。

  6. Windows CE驱动程序的宿主 • 如果要运行DLL中的代码,那么必须先有一个EXE进程,把该DLL加载道自己的地址空间内,然后才可执行DLL中的代码。 • Windows CE的驱动程序也必须被其他EXE——宿主加载 • Device.exe 又称做设备管理器。负责加载和管理Windows CE下绝大多数的设备驱动程序。 • GWES.exe负责加载一些与图形界面相关的I/O设备驱动。 • FileSys.exe在系统中负责管理Windows CE中的对象存储和文件系统。负责加载所有的文件系统驱动程序。

  7. Windows CE驱动程序的类型 • Windows CE驱动程序的类型 • 单层驱动程序 • 分层驱动程序

  8. 单体驱动程序 • 单体驱动程序:就是所有的驱动程序——包括中断处理、I/O操作及硬件控制等都放在了一起。 • DDI接口(Device Driver Interface):单体驱动程序暴露的接口,是操作系统与驱动程序交互的接口协议。 • 优点: • 代码不作分层处理,驱动程序的代码相对紧凑。 • 选用单体驱动程序会提高驱动的性能。 • 对于一些较简单的硬件设备驱动程序,使用单体驱动程序模型,可更加清晰明了。

  9. 分层驱动程序 • 分层驱动程序把驱动程序的代码分为两层: • 模型设备驱动(Model Device Driver,MDD):包含某一类型的驱动程序所通用的代码。 • 平台相关驱动(Plat Dependence Driver,PDD):包含特定的硬件或平台专用的代码。

  10. 分层驱动程序 • MDD和PDD之间还需要一个接口协议。这样,在分层驱动程序中,就有两类接口函数 • 在操作系统与MDD之间的DDI(Device Driver Interface) • MDD和PDD之间的DDSI(Device Driver Service provider Interface)

  11. 分层驱动程序 • MDD 具有下列特征: • 包含给定类型的所有驱动程序所共有的代码。 • 调用 PDD 函数以访问硬件。 • 链接到 PDD 层,并且定义MDD 期望在该层中调用的设备驱动程序服务提供程序接口 (DDSI) 函数。 • 向操作系统 (OS) 公开设备驱动程序接口 (DDI) 函数。 OS 的其他部分可以调用这些函数。 • 处理中断处理。 • 可供开发人员重用。 • 可以链接到多个 PDD。 • 通常不需要进行更改。 如果进行了更改,则在将驱动程序迁移到将来的版本时可能会遇到麻烦。 • 包含任何中断服务线程 (IST)。

  12. 分层驱动程序 • PDD 具有下列特征: • 由硬件平台特有的代码组成。 • 对于不同的硬件产品或标准,有不同的实现。 • 只能与某一类MDD协同工作。 • 实现MDD所需要的DDSI函数

  13. 分层驱动程序 • 优点 • 驱动程序分层带来了一定的灵活性,使驱动程序的编写更为清晰、简单。 • 驱动程序的移植也会变得相对简单,只需对PDD层的代码进行修改。 • 缺点 • 分层后,MDD层对PDD层的函数调用会给驱动程序带来额外的性能开销。

  14. Windows CE驱动程序的分类 • Windows CE 整体上将设备驱动分为三种: • 内置驱动 • 总线驱动 • 流接口驱动

  15. 内置驱动 • 硬件所必须的驱动程序,这些驱动程序通常由设计OEM厂商进行设计。 • 如:键盘,触摸屏,音频设备。 • 可能不支持一般的驱动接口,也有可能带有扩展的接口或者完全提供一个用户自定义的接口。 • 内置驱动通常需要针对具体的操作系统进行小幅改动。

  16. 总线驱动 • 管理系统总线如PCI总线等。 • 负责处理总线上硬件的询问,以及资源的分配。 • 同时也请求设备管理器为总线上的硬件安装适当驱动程序。

  17. 驱动分类 – 详细 • Audio Drivers • Battery Drivers • Block Drivers • Bluetooth HCI Transport Driver • Direct3D Device Driver Interface • DirectDraw Display Drivers • Display Drivers • DVD-Video Renderer • IEEE 1394 Drivers • Keyboard Drivers • Notification LED Drivers • Parallel Port Drivers • PC Card Drivers • Printer Drivers • Serial Port Drivers • Smart Card Drivers • Stream Interface Drivers • Touch Screen Drivers • USB Drivers 参见文档: http://msdn2.microsoft.com/en-us/library/aa447511.aspx

  18. 示例驱动程序的代码 • Platform Builder中自带了大量的驱动程序代码,可以通过阅读这些代码来学习编写驱动程序。 • 大部分驱动程序的代码放在目录%_WINCEROOT%\Public\Common\OAK\Drivers下,这些驱动程序都是与平台无关的。 %_WINCEROOT%\Platform\<BSP Name>\src\drivers\中,这些驱动都是与平台相关的。 • 从Windows CE5.0开始,微软引入了Production-Quality Device Driver的概念。主要是为了提高驱动程序代码的可靠性和稳定性。

More Related