Windows CE.NET下ADC驱动开发设计

发布者:Asawen最新更新时间:2012-11-26 来源: 维库开发网关键字:WindowsCE  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”即是我们选择的设备的文件名前缀。[page]

  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 系统中,很多驱动都要通过设备管理器来查询注册表,再根据注册表项来加载驱动程序,所以必须在注册表中增加相应的驱动项。假定ADC.dll 为驱动程序,通常,注册项位于注册表的Root Key 下,一般为[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\ADC]。其中 ADC 是为我们驱动程序而添加的。我们需要在 ADC下建立必要的子键和键值,“Prefix”和“DLL”是2 个重要而且必须的键,分别描述了设备前缀名和驱动程序的动态连接库名。如果还有需要的话,可以建立驱动程序需要的其子他键。[page]

  [HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\ADC]

  "Index"=dword:1

  "Prefix"="ADC"

  "DLL"="ADC.dll"

  "Order"=dword:0

  "Irq"=dword:2

  4.5 修改.BIB 文件

  要想驱动的动态链接库加入 Windows CE 系统中,还必须修改Windows CE 二进制映像生成的文件platform.bib。在platform.bib 文件中加入:ADC.dll $(_ FLATRELEASEDIR) \\ ADC.dll NK SH

  5 驱动编译、加载和调用

  增加两个文件 makefile (定义了编译规则)和sources(使用的头文件,自定义函数库,系统函数库等),重新编译Windows CE, ADC 驱动程序即可加载进操作系统。把编译好的 WindowsCE 镜像NK.bin 下载到博创嵌入式开发平台(S3C2410 处理器),使用PB 的模块查看器,可以看到驱动程序adc.dll 已经被成功加载, 如图2 所示。


  搭建一个简单的电路,对S3C2410 处理器第六路ADC 输入一个电压信号,运行ADC_EXE。根据应用程序的运行结果,可以发现ADC.dll 被成功调用。以下是截取的是不同输入电压时的转换结果,如图3 所示。


  6 结束语

  通过本文介绍、分析Windows CE 下ADC 驱动程序的开发, 读者可以对Windows CE 的驱动程序的结构、编写以及实际应用能有一定的了解。本文作者创新点:在Windows CE.net系统下进行底层设备驱动开发,采用流接口的方式,实现了三星公司ARM9 内核的芯片S3C2410 ADC 驱动程序。

关键字:WindowsCE  ADC驱动  流接口 引用地址:Windows CE.NET下ADC驱动开发设计

上一篇:基于XIP技术的ARM Linux系统的研究与移植
下一篇:基于ARM的嵌入式RIFD读写器设计

推荐阅读最新更新时间:2024-03-16 13:14

用于工业级信号的精密单电源差分ADC驱动
   电路功能与优势   标准单端工业信号电平(±5 V、±10 V或0 V至+10 V)与现代高性能16位或18位单电源SAR型ADC的差分输入范围并不直接兼容,需要使用适当的接口驱动电路对工业信号进行衰减、电平转换和差分转换,使其具有与ADC输入要求相匹配的正确幅度和共模电压。虽然可以利用电阻网络和双通道运放来设计适当的接口电路,但电阻的比率匹配误差和放大器之间的误差会形成最终输出端的误差。特别是在低功耗水平上,实现所需的输出相位匹配和建立时间可能非常困难。   图1所示电路采用差分放大器 AD8475 执行衰减、电平转换和差分转换,无需任何外部元件。其交流和直流性能兼容18位、1 MSPSAD7982 PulSAR®
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved