Windows CE下驱动程序开发基础.doc

Windows CE下驱动程序开发基础.doc

ID:49200421

大小:59.50 KB

页数:5页

时间:2020-03-01

Windows CE下驱动程序开发基础.doc_第1页
Windows CE下驱动程序开发基础.doc_第2页
Windows CE下驱动程序开发基础.doc_第3页
Windows CE下驱动程序开发基础.doc_第4页
Windows CE下驱动程序开发基础.doc_第5页
资源描述:

《Windows CE下驱动程序开发基础.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、作者:付林林我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驷动部分,头脑屮仍然一片茫然。要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)屮初始化过程为线索简单讲一讲驱动开发的基础知识。WindowsCE下的串口驱动稈序能够处理所有I/O行为类似串口的设备,包括基于16450、16550UART(通用异步收发芯片)的设备和一些采用DMA的设备,常见的有9针串口、红外I/O口、Modem等。在%_WINCEROOT%PublicCommonOAKDriversSerial目录下,COM

2、_MDD2TH录包含新的串口驱动MDD层函数代码。COM16550TH录包含串口驱动PDD层代码oSER16550T目录包含的一系列函数专用于控制与16550兼容的UART,这样PDD层的主要工作就是调用SER16550屮的函数。还有一个ISR16550子目录包含的是串口驷动程序专用的可安装ISR(屮断服务例程),而很多硬件设备驷动程序采用CE默认的可安装ISRgiisr.dlL一般串口设备相应的注册表设置例了及意义如下:[HKEY_LOCAL_MACHINEDriversBuiltlnSenal_1]键意义•'SyslntrM=dwor

3、d:13串口1的屮断ID为十进制13MloBase"=dword:02F8串口1的IO空间首地址为十六进制2F8”loLen“=dword:8串口1的IO空间长度为8个字节'•DeviceArraylndex*=dword:0串口1的索引,是1的山來MOrder=dword:0串口1驱动的加载顺序MDeviceTypeH=dword:0串口1的设备类型nDevConfigM=hex:10,00....串口1在与Modern设备通讯时的配置,如波特率、奇偶校检等,,FriendlyName',=HCOM1:”串口1在拨号程序中显示的名字"Tsp"

4、=”Unimodem.d『串111被用于-4Modem设备通讯的时候要加载的TSP(TAPIServiceprovider)DLL”Prefix”=”COM”串口1的流接口的前缀"DII”="com16550.DII”串口1的驱动程序DLLSyslntr由CE在文件Nkintr.h屮预定义,用于唯一标识屮断设备。OEM可以在文件Oalintr.h中定义自己的Syslntr。常见的预定义Syslntr有SYSINTR_NOP(中断只由ISR处理,1ST不再处理),SYSINTR_RESCHED(重新调度线程),SYSINTR_DEVICES(由C

5、E预定义的设备屮断ID的基值),SYSINTR_PROFILE、SYSINTR_TIMING、SYSINTR_FIRMWARE等都是基于SYSINTR_DEVICES定义的。loBase是串口1的IO地址空间的首地址,loLen是IO空间的大小。IO地址空间只存在于x86平台,如果在其它平台硬件寄存器必须映射到物理地址空间,那了键的名称为MemBase和MemLen。在x86平台更多驶件的寄存器由于IO空间的局限也映射到物理地址空问。DeviceArraylndex是设备的索引,用于区分同类型的设备。Prefix是流驱动稈序的前缀,当应用稈序调

6、用CreateFile函数传递COM1:参数时,文件系统负责与串口驱动程序通信,串口驱动程序是在CE启动时由device.exe加载的。下血从MDD层函数COMJnit开始探索串口驱动的初始化过程。COM」nit是在串口设备被检测示由设备管理器device.exe调用的,主要的作用是初始化设备,它的唯一参数Identifier是由device.exe传递的,其类型是一个字符串指许,字符串的内容是HLMDriversActivexx,xx是一个十进制数(device.exe会跟踪系统屮每个驱动程序,把加载的驱动稈序记录在Active键下)。

7、COM_lnit先分配一个HW_INDEP_INFO结构体,这个结构体是独立于串口硬件的头信息(MDD、PDD、SER16550都包含白己独特的结构体,具体的结构体定义请参见串口驱动源码),分配Z后再初始化结构体屮每个成员,初始化结构体后调用OpenDeviceKey((LPCTSTR)ldentifier)打开HLMDriversActivexxKey包含的注册表路径,在这里路径一般为HLMDriversBuiltlnSerial,即串口的驱动程序信息在注册表中所处的位置。COM」nit接着在HLMDriversBuiltl

8、nSerial下查询DeviceArraylndex^Priority256的值,Priority256指定了驱动程序的优先级,如果没有就用默认的优

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。