0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Windows CE. net外部中断程序驱动的开发方法

电子设计 来源:郭婷 作者:电子设计 2019-07-23 08:11 次阅读

引 言

AD7854是一款高速、低功耗的12位并行接口模数转换芯片,其工作电压范围是3~5 V,采样频率最高为200 kHz。由于AD7854在正常的工作模式下功耗为5.4mW,在节电模式下功耗为3.6μW,因此在便携式设备中得到广泛的应用。当前,在先进的便携设备中,大量引进嵌入式操作系统对系统资源进行管理,因此开发硬件设备的驱动成为构建便携式系统的一个重要工作。S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器。该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。S3C2410处理器最高可运行在203MHz。核心板的尺寸仅相当于名片的2/3大小,尺寸如此小巧的嵌入式核心板是国内首创。开发商可以充分发挥想象力,设计制造出小体积,高性能的嵌入式应用产品

1 AD7854与S3C2410的扩展设计

为确保AD7854在S3C2410的控制下完成采样和模数转换,必须合理地设计接口电路。AD7854为12位并行模数转换芯片,S3C2410是32位微处理器,因此,一次读操作即可完成AD7854转换结果的读取。但是,对于AD7854校准寄存器的读操作以及对各寄存器的写操作都需要2个读或写操作。

为了提高S3C2410的驱动能力,在S3C2410与外设之间加入了一个双向数据缓冲器74LVCl6245。设计的A/D转换接口电路原理如图1所示。

Windows CE. net外部中断程序驱动的开发方法

2 WindOWS CE.Ret设备驱动简介

Windows CE.net设备驱动模型主要有两种:本机设备驱动与流接口设备驱动。不同的驱动模型只能通过它们的软件接口来区别,而不是它们适用的设备。驱动程序模型决定其输出的软件接口。

本机设备驱动程序适于集成到基于Windows CE.net平台的设备,如通用LED驱动电源驱动等。每种本机设备驱动程序都有精确的要求和特殊的目的,微软提供了定制接口的方式来支持内部设备驱动程序。一般来说,只有OEM开发商对本机设备驱动程序感兴趣,而独立硬件销售商只开发附加的硬件驱动程序。

流接口设备驱动程序是一般类型的设备驱动程序。它表现为用户一级的动态DLL,动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL 是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。用来导出一组固定的函数,称为“流接口函数”。应用程序可以通过文件系统接口函数(API)访问这些接口函数,从而调用驱动程序,驱动硬件设备进行工作。在流接口驱动程序中,驱动程序负责把外设抽象成一个文件,而应用程序则使用操作系统提供的API对外设进行访问。流接口驱动程序几乎支持任何类型的、可以连接到基于Windows CE.net平台的外部设备,例如打印机、调制解调器等。流接口设备驱动的体系结构如图2所示。

Windows CE. net外部中断程序驱动的开发方法

3 AD7854驱动设计与实现

由图l所示的硬件电路可知,AD7854被直接映射到系统的内存,它的物理地址是Oxl0000000,因此,该设备的驱动程序可以选用单片式流接口设备驱动模型。同时S3C24lO采用中断的方式对AD7854的转换结果进行读取并启动下一次的转换。因此,开发A/D驱动主要由两个部分组成:内核部分和流接口函数部分。内核部分主要完成中断的处理,包括物理中断到逻辑中断的转换,中断的使能、禁止,唤醒中断服务线程等工作。

3.1 AD7854中断在WindOWS CE中的处理

内核部分主要是修改Windows CE.net中与中断相关的内核文件,完成物理中断到逻辑中断的映射。由图1可知,AD7854占用外部中断0(EINTO)。为了让操作系统能够处理外部中断O,必须对其关于中断处理的内核代码进行修改。主要修改的内核文件如下:

①修改%WIN(2ER()0T%\PLATFORM\SMDK2410\INC\oalintr.h文件;

②修改%WINCEROOT%\PLATFORM\smdk2410\kernel\hal\arm\armint.c文件中的OEMInterrupt Han—dler()函数;

③在中断服务线程(IST)中调用InterruptEnable()、InterruptDisable()、InterruptDone()等函数对中断进行操作时,系统内核调用OEMInterTuptEnable()、()EMInter—ruptDisable()、()EMInterruptDone(),对中断寄存器进行设置,完成中断允许、中断禁止和中断完成操作。对这3个OEM函数的修改,是通过修改%WINCERO0T%\PLATFORM\smdk2410\kernel\hal\cfw.c文件完成的。

内核文件的修改可以参照内核文件函数的具体实现来完成。经过对Windows CE.net内核文件的修改,完成了物理中断EINTO到逻辑中断号SYSINTR_ADC的映射。

3.2 AD7854流接口函数的实现

流接口驱动程序实质上就是一个动态链接库,在Windows CE.net中,流接口函数一共有10个。这些流接口函数并不需要每个都要有具体的实现代码,关键是要根据设备的具体工作流程来完成相应的接口函数。本设计中开发的AD7854的驱动程序主要实现的接口函数为:XXX_Deinit、XXX_Init、XXX_Open、XXX_Close、XXX_Read、XXX_Write。XXX为设备文件名的前缀,由于开发的是模数转换芯片的驱动,故在此将该前缀命名为“ADC”。以下具体介绍在Platform Builder开发环境下AD7854驱动的开发过程。

首先,在Platform Builder4.2开发环境下为AD7854的驱动建立一个WCE Dynamic—Link Library工程,随后就可以在该工程下完成各流接口函数。

(1)AD7854的数据结构

在编写流接口函数之前,应该定义设备的数据结构,这是对现实设备的抽象。根据AD7854在操作中所涉及的CPU相关存储器以及AD7854内部操作的需要,现将AD7854抽象成以下结构类型:

Windows CE. net外部中断程序驱动的开发方法

AD7854的数据结构可以看作是与AD7854相关的逻辑体。通过WindowsCE.net提供的内存映射函数VirtualAl—loe()和VirtualCopy(),可以将逻辑体与具体的物理地址关联起来,完成对物理存储器的设置。

(2)流接口函数的开发

流接口函数为应用程序操作硬件提供统一的接口,完成对硬件的抽象工作。一个流接口函数实质上就是提供某一特定功能的模块,根据硬件的不同,各接口函数实现的内容千差万别。有的接口函数需要很多的代码,有的就是一个空的函数体。本文结合硬件具体介绍其实现过程:

①PADC_CONTEXT ADC_Init(LPCTSTR pCon—text,LPCVOID lpvBusContext)。该接口函数在驱动程序加载时,由设备管理器调用。在该函数中主要完成硬件初始化工作。

ADC_Init函数需按照一定的顺序完成驱动的初始化工作,其内部函数的调用顺序如图3所示。ADC_Init调用成功以后,将返回AD7854结构体的首地址——pADC,同时表明该驱动加载成功。

②DWORD ADC_Read(PADC_CONTEXT pADC,PUCHAR pBuffer,DWORD Count)。该接口函数主要完成对AD7854.的读操作,代码是对操作的抽象。为了更好地体现开发过程,首先介绍一下AD7854的读操作过程。AD7854一次输出16位数据,分成2次输出(高8位、低8位)。在读写时序中,除了通过对CPU的存储寄存器的相关配置以满足时间上的要求外,另一个重要的地方就是注意满足高字节使能输出引脚(HBEN)的需要。具体是在输出高字节时,该引脚应输入高电平。AD7854输出一次16位数据时有两种输出方式:其一就是高8位先输出,然后是低8位输出(与此相对应,HBEN引脚在AD7854读时序中第1个字节为高电平,第2个字节为低电平);其二刚好相反。

由图3可知,HBEN的电平由S3C2410的地址线O确定,因此在一个AD7854的读时序中地址线O应改变一次自己的状态。同时AD7854的片选与LnGCS2相连,这也就构成了AD7854的两个读物理地址:0x1000 0000和0x1000 0001。AD7854的读周期时序如图4所示。

Windows CE. net外部中断程序驱动的开发方法

Windows CE. net外部中断程序驱动的开发方法

由此可开发AD7854读接口函数,具体代码如下:

Windows CE. net外部中断程序驱动的开发方法

写接口函数DWORD ADC_Write(PADC_CON—TEXT pADC,PUCHAR pBuffer,DWORD Count),主要完成对。AD7854的写操作。AD7854的写操作过程和读操作很相似,代码的实现过程也基本相同,在此就不再赘述。

编写导出函数和注册表文件,编译生成d11文件,通过PB将其制作成CEC文件,在定制操作系统时可以将驱动程序加入操作系统中。

4 结 论

Windows CE .NET 是 Windows CE 3.0 的后续产品,它不仅是一个功能强劲的实时嵌入式操作系统,而且提供了众多强大工具,允许用户利用它快速开发出下一代的智能化小体积连接设备。借助于完善的操作系统功能和开发工具, Windows CE .NET 为开发人员提供了构建、调试和部署基于 Windows CE.NET 的定制设备所需的一切特性。平台开发工具 Platform Builder 是一个完全集成的开发环境( IDE ),并且包括一个软件开发工具包( SDK )导出工具。 Windows CE .NET 支持 Microsoft eMbedded Visual C++? 和 Microsoft Visual Studio? .NET ,为面向 Microsoft .NET Compact Framework ( Microsoft .NET Framework 的一个子集)的 Web 服务和应用程序开发提供了一个完整的开发环境。利用这些工具,开发人员可以迅速开发出能够在最新硬件上运行各种应用程序的智能化设计。Windows CE.net是多任务实时嵌入式操作系统,具有良好的图形界面,实时性良好、功能强大,适用于工业控制领域。本文以AD7854的驱动开发为例,阐述了Windows CE.net对外部中断的处理过程和流接口驱动的开发方法。该驱动程序已成功应用在所开发的作业环境监测与评价系统中,在微气候各指标的监测方面应用效果良好。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    446

    文章

    47746

    浏览量

    409042
  • 嵌入式
    +关注

    关注

    4981

    文章

    18271

    浏览量

    288307
  • 操作系统
    +关注

    关注

    37

    文章

    6278

    浏览量

    121866
收藏 人收藏

    评论

    相关推荐

    Windows CE.NET下触摸屏驱动程序开发

    首先简要介绍Windows CE.NET 操作系统的体系结构,以及中断机制;接着介绍了触摸屏控制器的内部结构以及工作原理,接着阐述了在WinCE 操作系统中编写设备驱动程序的过程与
    发表于 08-13 10:05 57次下载

    Windows CE.Net下基于流驱动的AD驱动设计与实现

    驱动程序是连接操作系统和硬件的桥梁。文中作者主要讨论在Windows CE.Net 操作系统下,如何设计实现S3C2410芯片具有AD接口的驱动程序;详细介绍
    发表于 08-25 09:18 19次下载

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

    本文利用工具Platform Builder、以ADC 驱动程序为例,探讨Windows CE.net 下的驱动程序开发,以及向平台添加AD
    发表于 01-06 16:13 12次下载

    Windows CE.NET的定制和裁剪

    介绍了微软嵌入式操作系统Windows CE. NET的体系结构。论述了Windows CE. NET
    发表于 06-27 10:51 41次下载
    <b class='flag-5'>Windows</b> <b class='flag-5'>CE.NET</b>的定制和裁剪

    基于S3C2410的Windows CE驱动开发

    文中阐述了设备驱动程序的概念和结构,介绍了Windows CE. NET 环境下开发驱动程序的特
    发表于 06-27 16:17 54次下载
    基于S3C2410的<b class='flag-5'>Windows</b> <b class='flag-5'>CE</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>

    基于Windows CE.NET数控系统的插补控制

    主要讨论了Windows CE.NET下的中断机制与驱动程序开发,重点阐述了定时器驱动程序
    发表于 06-27 16:20 34次下载
    基于<b class='flag-5'>Windows</b> <b class='flag-5'>CE.NET</b>数控系统的插补控制

    Windows CE.net的串口通讯类设计

    主要介绍了 基于 W indow s CE. net和 S3C2410的串口通讯类设计思想。重点阐 述了 W indows CE. net下的串行通信函数、多线程编程和串口通讯类的具体
    发表于 03-14 15:50 2次下载

    Windows CE NET的定制和裁剪

    本文介绍了 微软嵌入式操作系统 W indows CE.NET的体系结构。论述了 Windows CE. NET的创建过程 包括系统内核的定制和裁剪以及如何向定制平台添加自己的特色 。
    发表于 04-18 10:02 0次下载

    Windows CEnet设备驱动程序开发研究

    本文介绍了Windows CE. net的平台结构 阐述了Windows CE驱动的系统结构 对
    发表于 04-18 10:02 0次下载

    Windows CENET中断架构分析和高速AD驱动程序开发

    本文分析了Windows CE.NET嵌入式实时系统的中断架构和流式驱动架构 及其设备驱动程序开发
    发表于 04-18 10:02 0次下载

    Windows CE驱动程序开发

    不同的嵌入式系统硬件平台,往往有其独有或特殊的设备,而这些设备的Windows CE驱动程序设计问题是开发人员经常遇到的。本文着重阐述了Window
    发表于 04-18 10:13 0次下载

    Windows CE设备驱动程序开发

    本文介绍了 Windows CE 体系结构和开发 wince 设备驱动程序的过程,阐述了设备驱动程序模型、设备
    发表于 04-18 10:13 0次下载

    基于S3C2410的Windows CE驱动开发

    文中阐述了设备驱动程序的概念和结构 介绍了 Windows CE. NET 环境下开发驱动程序
    发表于 04-18 10:46 0次下载

    基于Windows CE.NET的设备驱动程序开发

    本文阐述了设备驱动程序的概念和结构 介绍了 Windows CE. NET环境下开发驱动程序的特
    发表于 04-18 11:28 0次下载

    基于WINDOWS CE的开放式数控系统设备驱动程序开发

    本文讨论了基于Windows CE. NET的开放式数控系统的一项关键技术。首先分析了 WindowsCE.NET的系统结构并详细阐述其中断
    发表于 04-18 11:28 0次下载