Windows CE下驱动程序开发基础

http://tech.ddvip.com   2007年05月11日    社区交流

本文详细介绍Windows CE下驱动程序开发基础

  研究的越多就越感觉自己懂的太少,其实在驱动开发方面我还是个菜鸟,我是想再次抛砖引玉,让做驱动有N年经验的人奉献一点出来,让大家减少一些研究驱动源码而又缺少注释所带来的痛苦。

  我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驱动部分,头脑中仍然一片茫然。要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)中初始化过程为线索简单讲一讲驱动开发的基础知识。

  WindowsCE下的串口驱动程序能够处理所有I/O行为类似串口的设备,包括基于16450、16550 UART(通用异步收发芯片)的设备和一些采用DMA的设备,常见的有9针串口、红外I/O口、Modem等。在%_WINCEROOT%PublicCommonOAKDriversSerial目录下,COM_MDD2子目录包含新的串口驱动MDD层函数代码。COM16550子目录包含串口驱动PDD层代码。SER16550子目录包含的一系列函数专用于控制与16550兼容的UART,这样PDD层的主要工作就是调用SER16550中的函数。还有一个ISR16550子目录包含的是串口驱动程序专用的可安装ISR(中断服务例程),而很多硬件设备驱动程序采用CE默认的可安装ISR giisr.dll。一般串口设备相应的注册表设置例子及意义如下:

以下是引用片段:
  [HKEY_LOCAL_MACHINEDriversBuiltInSerial_1]
  "SysIntr"=dword:13串口1的中断ID为十进制13
  "IoBase"=dword:02F8串口1的IO空间首地址为十六进制2F8
  "IoLen"=dword:8串口1的IO空间长度为8个字节
  "DeviceArrayIndex"=dword:0串口1的索引,是1的由来
  "Order"=dword:0串口1驱动的加载顺序
  "DeviceType"=dword:0串口1的设备类型
  "DevConfig"=hex:10,00....串口1在与Modem设备通讯时的配置,如波特率、奇偶校检等
  "FriendlyName"="COM1:"串口1在拨号程序中显示的名字
  "Tsp"="Unimodem.dll"串口1被用于与Modem设备通讯的时候要加载的TSP(TAPIServiceprovider)DLL
  "Prefix"="COM"串口1的流接口的前缀
  "Dll"="com16550.Dll"串口1的驱动程序DLL

责编:豆豆技术应用

正在加载评论...