当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]Windows C E的 中断处理及中断流驱动设计

引 言
    近年来,随着硬件复杂性、多样性和应用复杂性的增加,软件开发工作量急剧增长,传统的开发模式已经不能适应系统z杂性的增长。而嵌入式操作系统是嵌入式软件的运行平台和开发平台,它的引入极大地提高了软件的开发效率,方便了软件的维护。Windows CE是Microsoft公司顺应计算技术小型化、分散化趋势而推出的抢占式多任务32位嵌入式操作系统,具有强大的通信功能。Windows CE已得到大量厂商的支持,支持它的微处理器包括:MIPS系列、ARM系列、日立的SH系列等。各种处理器都有丰富的外部中断源,中断源和操作系统之间通常采用中断机制来控制数据的交互。硬件厂商没有为一些外部中断源提供Windows CE下的驱动,所以有时驱动成为项目开发关键的一环。

1 Windows CE中断处理
1.1 中断产生

    在Windows CE中,系统的中断分为两种:软中断和硬中断。软中断是一种“信号机制”,而不是由软件产生的中断信号。硬中断通常是外部设备对CPU发出中断信弓。一般来说,软中断是由操作系统内核机制的事件产生的,例如定时器超叫,但是有的软中断由和硬件有关的中断引起。例如,当外部产生一个硬中断时,会产生和硬件相关的一个软中断,这样内核就会在适当的时机处理这个软中断,唤醒睡眠在相应任务队列中的处理例程。
1.2 中断处理模型
    Windows CE提供了一个有效的中断处理机制,它把对中断的处理分为两部分:中断服务例程(ISR)和中断服务线程(IST)。ISR通常要求短小精悍,效率要求很严格。它只决定该怎样处理这个中断,一般情况下不应该做太多的工作。大部分工作依靠IST处理,如将数据移到缓存或处理用户某些特殊要求的工作。Windows CE中断处理模型如图1所示。

1.3 中断处理过程
    Windows CE支持两种ISR:静态ISR和可安装ISR。静态ISR只能静态地编译进内核,运行时不能改变。与IST通信时,它也只能是单向的,即由ISR到IST。静态ISR支持嵌套中断,并且使用内核堆栈。可安装ISR由内核管理程序从动态链接库中加载。和静态ISR不同,它和IST的通信是双向的,多个ISR可以与同一个中断请求相关联,系统按照加载驱动的顺序依次调度。在可安装ISR中,共享内存的使用也比较灵活。图2为中断处理过程。

    对图2的中断处理过程作以下几点解释:
    ①当内核的异常处理代码接收到一个来自硬件的中断时,内核会侦测到一个异常情况发生,并会提交这个硬件中断。
    ②内核的中断支持处理器通知ISR去禁止该中断的重复提交,直到相关的中断处理全部完成后,才再度使能该中断。还会通知硬件屏蔽优先级别低的中断,直到必需的处理结束后,再重新打开被屏蔽的中断。在这个过程中,允许高优先级中断触发。
    ③异常处理器调用ISR来响应中断。
    ④内核接收ISR返回值,依据该返回值决定如何处理中断。
    ⑤内核触发中断支持管理器来唤醒中断服务线程(IST)并激活该线程。
    ⑥当中断服务线程(IST)被唤醒后,它开始处理相应的中断。
    ⑦如果需要,中断服务线程调用各种I/0例程访问硬件来完成工作。
    ⑧中断处理结束后调用InterruptDone函数通知内核。 
    ⑨内核调用OEMInterruptDone完成整个中断处理过程,0AL通知底层硬件使能所有中断。

2 中断流驱动程序设计
2.1 驱动的概念

    驱动程序是一个软件模块,其功能就是对设备、协议甚至某些服务进行管理。驱动程序是直接和设备进行通信的部分,设备可以是物理设备或逻辑设备。
    流接口的驱动是基本的设备驱动类型,它实现一组固定的流接口函数。所有流接口驱动程序使用相同的接口并调用同一个函数集——流接口函数,大部分WindowsCE设备驱动都可用此模型来实现。流接口驱动程序由设备管理程序(Device.exe)自动加载、管理和卸载,也可以通过API函数手动加载、管理和卸载。
2.2 设计方法
    Windows CE提供了几种基于等待队列的进程间通信手段,其中事件在驱动设计中经常被用来引发某一个中断处理。中断是Windows CE驱动设计的关键之一,驱动程序需要实现特定设备的中断响应、中断引发的数据传送和处理。可以把外设中断时所需处理的任务封装到流接口函数中,应用程序使用Windows CE操作系统的文件API函数与流接口进行通信,从而达到应用程序访问驱动程序和操作硬件的目的。
    本文以KEYl按键连接到S3C2440外部中断EINTl(GPFl)引脚的按键电路为例,给出中断流接口驱动程序的一般设计方法,电路原理图如图3所示。

    流接口驱动程序的入口点函数、调用方式以及每个函数实现的功能如表1所列Ⅲ。其中电源管理函数,即EIT—PowerDown和EIT_PowerUp是可选的,这里没有调用。
2.3 编写代码
    在三星公司BSP包驱动程序的存放位置下新建一个目录EINT,用文本编辑器建立5个文本文件,文件名分别为EINTl.c、EINTl.h、EINTl.def、sources、makefile。
    从表1可以看出,驱动程序大部分功能都是在EIT_Init()函数中完成的,在EINTl.c文件中编写EIT_Init()函数,如下所示。[!--empirenews.page--]


    EIT_Init()函数中创建了外部中断EINTl中断服务线程gEINTIntrThread具体代码如下所示。该函数首先创建外部中断事件gWaitEvent(用于ISR通知IST外部中断EINTl中断触发),然后调用内核函数InterruptInitialize()与gWaitEvent关联起来,并使能该中断。当该中断触发时,ISR就触发事件gWaitEvent生效。完成以上工作后,该线程就进入无限循环,等待gWaitEvent事件生效。


    其他几个流接口函数编程简单,这里不作详细叙述。参考驱动目录下其他驱动完成sources、makefile和EINT.def文件的编写,当EINT目录下的5个文件都编写好后,在Platform Build 5.O编译后,用Windows CE附带的dumpbin工具(在Build菜单下)输入命令:dlampbin/exports EINTl.dll,输出结果如图4所示,导出了表1所列的流接口函数。

结 语
    Windows CE采用中断方式处理外部设备的随机输入,提高了CPU的运行效率。本文用一个实例对中断流驱动程序的开发进行了介绍,只需在此驱动程序的基础上稍作修改就可完成其他中断的驱动程序开发。驱动程序编译成功后,通过进一步修改BSP的FILES目录下的platform.bib和platform.reg文件,可将驱动加入到操作系统中。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

成都2022年10月19日 /美通社/ -- 近期,平安养老险积极筹备个人养老金的产品设计和系统开发工作,发展多样化的养老金融产品,推动商业养老保险、个人养老金、专属商业养老保险等产品供给。 搭养老政策东风 ...

关键字: 温度 BSP 东风 大众

广东佛山2022年10月19日 /美通社/ -- 空间是人居生活的基础单元,承载着生存与活动的最基本功能。而对于理想空间的解构意义却在物理性容器之外,体现出人们对于空间和生活深层关系的思考,同时也塑造着人与空间的新型连接...

关键字: 温度 BSP 智能化 进程

上海2022年10月19日 /美通社/ -- 10月17日晚间,安集科技披露业绩预告。今年前三季度,公司预计实现营业收入7.54亿元至8.33亿元,同比增长60.24%至77.03%;归母净利润预计为1.73亿...

关键字: 电子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...

关键字: BSP ARMA COM 代码

北京2022年10月18日 /美通社/ -- 10月14日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》,报告显示:2022年上半年浪潮超融合销售额同比增长59.4%,近5倍于...

关键字: IDC BSP 数字化 数据中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都银行集团成立60周年的纪念日。趁着首都银行集团成立60周年与首都银行(中国)在华深耕经营12年的“大日子”,围绕作为外资金融机构对在华战略的构想和业...

关键字: 数字化 BSP 供应链 控制

东京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式会社(NIPPON EXPRESS HOLDINGS, INC.)旗下集团公司上海通运国际物流有限公司(Nipp...

关键字: 温控 精密仪器 半导体制造 BSP

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

要问机器人公司哪家强,波士顿动力绝对是其中的佼佼者。近来年该公司在机器人研发方面获得的一些成果令人印象深刻,比如其开发的机器人会后空翻,自主爬楼梯等。这不,波士顿动力又发布了其机器人组团跳男团舞的新视频,表演的机器人包括...

关键字: 机器人 BSP 工业机器人 现代汽车

近日,一个存在于Windows Mark of the Web (MotW)中的零日漏洞被发现,并正在被攻击者积极利用。但有趣的是,在微软官方还没有对该漏洞做出修复之前,第三方平台0patch就提供了该漏洞的修复补丁。据...

关键字: PATCH Windows 微软 APP

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭