180 likes | 313 Views
Windows CE 驱动程序. Windows CE 驱动程序. Windows CE 驱动程序模型 Windows CE 驱动程序的宿主 Windows CE 驱动程序的类型 Windows CE 驱动程序的分类 示例驱动程序的代码. Windows CE 驱动程序模型. 桌面 Windows 驱动程序模型 操作系统在启动后对硬件进行延迟加载,但依然把驱动程序加载道操作系统的内核空间中。驱动程序工作在系统的地址空间内,实现了驱动的动态加载。. Windows CE 驱动程序模型. Windows CE 驱动程序模型
E N D
Windows CE驱动程序 • Windows CE驱动程序模型 • Windows CE驱动程序的宿主 • Windows CE驱动程序的类型 • Windows CE驱动程序的分类 • 示例驱动程序的代码
Windows CE驱动程序模型 • 桌面Windows驱动程序模型 • 操作系统在启动后对硬件进行延迟加载,但依然把驱动程序加载道操作系统的内核空间中。驱动程序工作在系统的地址空间内,实现了驱动的动态加载。
Windows CE驱动程序模型 • Windows CE驱动程序模型 • 在Windows CE下,所有的驱动程序都以用户态下的DLL文件形式存在。 • 编写Windows CE驱动程序用到的方法及工具与编写其他任何一个普通的DLL一样。 • 与所有的Win32 DLL一样,Windows CE驱动程序DLL中的代码被一些进程动态加载到地址空间,运行在用户态下。
Windows CE驱动程序模型 • Windows CE驱动程序作为用户态的DLL来实现的优点: • 给操作系统和驱动程序带来了很大的灵活性。操作系统可在运行时动态地加载所需要的驱动程序,可轻松实现外设的即插即用(Plug & Play)。 • 驱动程序放在用户态而不是核心态来实现,也增强了系统的稳定性。驱动程序的崩溃不会影响到操作系统内核。 • 驱动程序放在用户态下可给驱动开发人员提供便利。
Windows CE驱动程序的宿主 • 如果要运行DLL中的代码,那么必须先有一个EXE进程,把该DLL加载道自己的地址空间内,然后才可执行DLL中的代码。 • Windows CE的驱动程序也必须被其他EXE——宿主加载 • Device.exe 又称做设备管理器。负责加载和管理Windows CE下绝大多数的设备驱动程序。 • GWES.exe负责加载一些与图形界面相关的I/O设备驱动。 • FileSys.exe在系统中负责管理Windows CE中的对象存储和文件系统。负责加载所有的文件系统驱动程序。
Windows CE驱动程序的类型 • Windows CE驱动程序的类型 • 单层驱动程序 • 分层驱动程序
单体驱动程序 • 单体驱动程序:就是所有的驱动程序——包括中断处理、I/O操作及硬件控制等都放在了一起。 • DDI接口(Device Driver Interface):单体驱动程序暴露的接口,是操作系统与驱动程序交互的接口协议。 • 优点: • 代码不作分层处理,驱动程序的代码相对紧凑。 • 选用单体驱动程序会提高驱动的性能。 • 对于一些较简单的硬件设备驱动程序,使用单体驱动程序模型,可更加清晰明了。
分层驱动程序 • 分层驱动程序把驱动程序的代码分为两层: • 模型设备驱动(Model Device Driver,MDD):包含某一类型的驱动程序所通用的代码。 • 平台相关驱动(Plat Dependence Driver,PDD):包含特定的硬件或平台专用的代码。
分层驱动程序 • MDD和PDD之间还需要一个接口协议。这样,在分层驱动程序中,就有两类接口函数 • 在操作系统与MDD之间的DDI(Device Driver Interface) • MDD和PDD之间的DDSI(Device Driver Service provider Interface)
分层驱动程序 • MDD 具有下列特征: • 包含给定类型的所有驱动程序所共有的代码。 • 调用 PDD 函数以访问硬件。 • 链接到 PDD 层,并且定义MDD 期望在该层中调用的设备驱动程序服务提供程序接口 (DDSI) 函数。 • 向操作系统 (OS) 公开设备驱动程序接口 (DDI) 函数。 OS 的其他部分可以调用这些函数。 • 处理中断处理。 • 可供开发人员重用。 • 可以链接到多个 PDD。 • 通常不需要进行更改。 如果进行了更改,则在将驱动程序迁移到将来的版本时可能会遇到麻烦。 • 包含任何中断服务线程 (IST)。
分层驱动程序 • PDD 具有下列特征: • 由硬件平台特有的代码组成。 • 对于不同的硬件产品或标准,有不同的实现。 • 只能与某一类MDD协同工作。 • 实现MDD所需要的DDSI函数
分层驱动程序 • 优点 • 驱动程序分层带来了一定的灵活性,使驱动程序的编写更为清晰、简单。 • 驱动程序的移植也会变得相对简单,只需对PDD层的代码进行修改。 • 缺点 • 分层后,MDD层对PDD层的函数调用会给驱动程序带来额外的性能开销。
Windows CE驱动程序的分类 • Windows CE 整体上将设备驱动分为三种: • 内置驱动 • 总线驱动 • 流接口驱动
内置驱动 • 硬件所必须的驱动程序,这些驱动程序通常由设计OEM厂商进行设计。 • 如:键盘,触摸屏,音频设备。 • 可能不支持一般的驱动接口,也有可能带有扩展的接口或者完全提供一个用户自定义的接口。 • 内置驱动通常需要针对具体的操作系统进行小幅改动。
总线驱动 • 管理系统总线如PCI总线等。 • 负责处理总线上硬件的询问,以及资源的分配。 • 同时也请求设备管理器为总线上的硬件安装适当驱动程序。
驱动分类 – 详细 • 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
示例驱动程序的代码 • Platform Builder中自带了大量的驱动程序代码,可以通过阅读这些代码来学习编写驱动程序。 • 大部分驱动程序的代码放在目录%_WINCEROOT%\Public\Common\OAK\Drivers下,这些驱动程序都是与平台无关的。 %_WINCEROOT%\Platform\<BSP Name>\src\drivers\中,这些驱动都是与平台相关的。 • 从Windows CE5.0开始,微软引入了Production-Quality Device Driver的概念。主要是为了提高驱动程序代码的可靠性和稳定性。