Windows CE.NET下ADC驱动开发设计
1 前言
Windows CE 是为各种嵌入式系统和产品设计的一种压缩的、高效的、可升级的操作系统。多线性、多任务、全优先的操作系统环境是专门针对资源有限而设计的,它的模块化设计使嵌入式系统开发者和应用者能够将其应用于各种产品,例如家用电器、专门的工业控制和嵌入式通信设备等。Windows CE 支持各种硬件外围设备及网络系统,应用领域极为广阔,是微软专门为信息设备、移动通讯、电子产品、嵌入式应用等非 PC 领域而专门设计的一种战略性操作系统产品。
2 Samsung ARM 系列S3C2410 处理器
S3C2410 是Samsung 公司推出的基于ARM920T 核的32 位RISC 微处理器芯片。S3C2410具有低功耗、低成本和高性能的特点,已成为PDA、智能手机、网络计算机终端以及智能设备的终端产品等的热门解决方案之一。
S3C2410 内部资源丰富、结构复杂、接口众多,具有相互独立的16kB 指令缓存和16kB数据缓存,带有MMU 虚拟存储单元和AMBA 总线接口。S3C2410 支持的内外围设备包括外部存储控制器、中断控制器、LCD 控制器、8 通道10bit 精度的ADC 和触摸屏控制器、SD/MMC 卡控制器、4 通道DMA、4 通道具有PW 入1 功能的定时器、具有日历功能的实时时钟、看门狗定时器、3 通道UART(包含IRDA 红外线数据通讯口)、USB 主机/设备接口、I2C 总线接口、IIS 数字音频总线接口、2 通道SPI 总线接口、通用I/O 端口以及具有锁相环功能片上时钟发生器等。同时,也可以根据需要进行功能扩展从而支持以太网接口、PCMCIA接口以及IDE 接口等。
3 Windows CE.net 下的驱动程序
目前基于 Windows CE.net 的两种模型是本机设备驱动程序和流接口驱动程序。本机设备驱动程序用于低级、内置设备,提供一组定制的接口可通过移植、定制微软提供的驱动样例来实现。流接口驱动程序实现一组固定的流接口函数,所有的CE 设备皆可使用此模型实现。开发工具Platform. Builder 中包含的样本设备驱动程序分为两种:单片驱动程序和分层的驱动程序如图1 所示。单片驱动程序基于单个码片,该码片直接把硬件设备的功能传递给操作系统。与弹片驱动程序相比,分层驱动程序由两个设置好的层组成,上层是模型设备驱动程序(Model Device Driver,MDD),下层是依赖平台的驱动程序(Platform. Dependent Driver,PDD)。大多数的样本设备驱动程序都配置成分层的。
分层驱动程序要利用微软提供的与应用程序通信的上层,这是一个与硬件平台无关的上层,称为模块驱动程序层MDD(Model Device Driver),MDD 层通过设备驱动程序接口DDI(Device Driver Interface)与应用程序通信,开发驱动程序通常不修改MDD 层,主要关心与具体硬件相关的下层,依赖平台的设备驱动程序层PDD(Platform. Dependent Driver),PDD层通过设备驱动服务接口DDSI(Device Driver Service Interface)直接管理硬件。单片驱动程序所驱动的设备通常与微软提供的应用程序没有直接的关系,如LCD 背光条开关的驱动。通常要求单片驱动程序提供一个特定DDI 接口如上层应用通信,通过编写相应的动态链接库DDL 实现这个功能。
4 基于 Windows CE 的流驱动程序的实现
4.1 选择代表设备的文件名前缀
设备前缀名在系统中必须唯一,并且文件前缀名必须是 3 个字母,若有多个同类设备,则通过后缀1 个阿拉伯数字区分,例如COM1、LPT3 等等。文件前缀名将会在驱动的标准接口函数中体现,比如XXX_Init、XXX_Close 等,其中的“XXX”即是我们选择的设备的文件名前缀。
4.2 实现驱动的各个标准接口函数
需要实现的函数在前文已经论述,现在只需按照其功能编写具体的代码。下面给出ADC_Init、ADC_Read、ADC_Write 部分程序代码。
4.3 导出接口函数集
流驱动一般以 DLL 形式存在,与在windows 98/2000/XP 系统下用VC++开发DLL 工程一样,如果我们愿意把DLL 中的某些函数暴露给应用程序或者操作系统调用,就需要将这些函数导出,否则外部程序将不能调用 DLL 中的函数。DEF 文件定义了DLL 需要导出的接口函数集,且名称与设备驱动名称相同[DEF 示例文件]
LIBRARY ADC
EXPORTS
ADC_Open
ADC_Close
ADC_Init
ADC_Deinit
ADC_Read
ADC_Write
本示例表明从 ADC.dll 中导出ADC_Init 等函数,其中 ADC 即为我们选择的代表设备的文件名前缀,DLLEntry 是驱动程序的入口函数。
4.4 在注册表中增加驱动项
注册表是一个庞大的数据库,它记录了用户安装在机器上的软件和每个程序的相互关联信息;它包含了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备说明、状态属性以及各种状态信息和数据。在 Windows 系统中,很多驱
- 嵌入式操作系统特点分析(06-06)
- 一种基于嵌入式WindowsCE的GPS数据导航系统设计(06-10)
- 基于ARM处理器的GPS移动设备设计(01-07)
- Windows CE 嵌入式网络监控系统的设计(08-06)
- WindowsCE环境下无线网卡的自动安装(04-12)
- 初探WindowsCE异常和中断服务程序(10-31)