您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:97 来源:vckbase.com

本文章共5354字,分4页,当前第1页,快速翻页:
 

Windows CE下驱动开发基础

作者:付林林

  这是我从1月6日开始主持天极网论坛嵌入式开发版以来第一次发表文章,加上以前琐碎的文章共计30篇。研究的越多就越感觉自己懂的太少,其实在驱动开发方面我还是个菜鸟,我是想再次抛砖引玉,让做驱动有N年经验的人奉献一点出来,让大家减少一些研究驱动源码而又缺少注释所带来的痛苦。
逆@风@者
  我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驱动部分,头脑中仍然一片茫然。要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)中初始化过程为线索简单讲一讲驱动开发的基础知识。
  Windows CE下的串口驱动程序能够处理所有I/O行为类似串口的设备,包括基于16450、16550 UART(通用异步收发芯片)的设备和一些采用DMA的设备,常见的有9针串口、红外I/O口、Modem等。在%_WINCEROOT%\Public\Common\OAK\Drivers\Serial目录下,COM_MDD2子目录包含新的串口驱动MDD层函数代码。COM16550子目录包含串口驱动PDD层代码。SER16550子目录包含的一系列函数专用于控制与16550兼容的UART,这样PDD层的主要工作就是调用SER16550中的函数。还有一个ISR16550子目录包含的是串口驱动程序专用的可安装ISR(中断服务例程),而很多硬件设备驱动程序采用CE默认的可安装ISR giisr.dll。一般串口设备相应的注册表设置例子及意义如下:

意义 "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(TAPI Service provider)DLL "Prefix"="COM" 串口1的流接口的前缀 "Dll"="com16550.Dll" 串口1的驱动程序DLL

  SysIntr由CE在文件Nkintr.h中预定义,用于唯一标识中断设备。OEM可以在文件Oalintr.h中定义自己的SysIntr。常见的预定义SysIntr有SYSINTR_NOP(中断只由ISR处理,IST不再处理),SYSINTR_RESCHED(重新调度线程),SYSINTR_DEVICES(由CE预定义的设备中断ID的基值),SYSINTR_PROFILE、SYSINTR_TIMING、SYSINTR_FIRMWARE等都是基于SYSINTR_DEVICES定义的。IoBase是串口1的IO地址空间的首地址,IoLen是IO空间的大小。IO地址空间只存在于x86平台,如果在其它平台硬件寄存器必须映射到物理地址空间,那子键的名称为MemBase和MemLen。在x86平台更多硬件的寄存器由于IO空间的局限也映射到物理地址空间。DeviceArrayIndex是设备的索引,用于区分同类型的设备。Prefix是流驱动程序的前缀,当应用程序调用CreateFile函数传递COM1:参数时,文件系统负责与串口驱动程序通信,串口驱动程序是在CE启动时由device.exe加载的。
 

本文章更多内容1 - 2 - 3 - 4 - 下一页>>
相关文章

编写、加载和存取插件程序(Plug-Ins)
通过串口收发短消息(下)
一个打印报表的简单的类
QQ界面的模拟实现(下)
USB有关的编程
杂谈:人与软件
通用权限管理模块的设计与实现
基于TCP的局域网多用户通信、文件传送程序详
通用图像类算法扩充库
ASP.NET 专栏:编写高性能 Web 应用程序的1
介绍一种数据库远程备份方案
QQ魔法表情实现原理
支持数据项查找功能的树控制(CTreeCtrl)类
把 C# 语言开发的控件内嵌在网页里面
使用免费界面换肤软件 USkin
一个关于#include的问题
如何用代码动态添加控件
C 程序的外部变量与函数
通过串口收发短消息(上)
更改屏幕显示数据的作弊程序

相关评论


本文章所属分类:首页 VC++

  热门关键字: