6533|12

9

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

碰触Windows CE 中断 [复制链接]

Windows CE是紧凑的、高效的和可升级的操作系统,它被广泛的应用在各种嵌入式式的产品中,能够满足32位嵌入式式程序开发的需求。

为了支持应用程序在最小的规定的时间之内对设备和系统事件做出反应,Windows CE中包括了高度优化中断传送,优先级和服务系统。





Windows CE的中断体系是由:硬件中断、内核中断服务例程、OAL中断服务例程和IST程序组成。

系统最低层是硬件及其中断控制器。外围设备向处理器的中断信号线上发送中断信号,这时就产生了中断。





在Windows CE中,系统的中断分为两种:


    软中断:是一种“信号机制”,而不是由软件产生的中断信号。一般来说,软中断是由操作系统内核机制的事件产生的,如:定时器超叫等。


    硬中断:通常是外部设备对CPU发出中断信号。


在Windows CE内核中,中断处理分成两部分:

    中断服务例程(ISR):通常要求短小精悍,效率要求很严格。它只决定该怎样处理这个中断,一般情况下不应该做太多的工作。

    中断服务线程(IST):一旦IST被初始化,系统便准备好接受下一中断并且处理下一中断。IST处理大多数的工作,如:将数据移到缓存等。

Windows CE这种将ISR 和IST在中断程序中,分开处理最终结果是:典型的中断等待时间,被大大地减少了;在中断程序中发生不可接受的延迟的可能性,也大大减少了。





Windows CE支持两种ISR(中断服务例程):

    静态ISR:只能静态地编译进内核,运行时不能改变。与IST通信时,它也只能是单向的,即由ISR到IST。静态ISR支持嵌套中断,并且使用内核堆栈。

    可安装ISR:由内核管理程序从动态链接库中加载。和静态ISR不同,它和IST的通信是双向的,多个ISR可以与同一个中断请求相关联,系统按照加载驱动的顺序依次调度。在可安装ISR中,共享内存的使用也比较灵活。

Windows CE中断处理流程:

    硬件设备发送中断异常的代码,如果检测到中断异常,异常处理被截获。
   
    中断服务调度程序会调用OAL例程中的OEMInterruptDisable函数。该函数会通知硬件在处理完这一中断前关闭特殊的中断。

    异常处理器调用ISR来响应中断。

    内核接收到ISR的返回值,得知如何处理这一中断。其响应结果是,忽略掉这一中断不作处理,或准备执行IST。

    内核引发中断服务调度程序去唤醒中断服务线程。IST是常规的Win32线程,一旦启动后,它会创建必要的EVENT,然后等待该EVENT被激发。

    通过调用PulseEvent函数来激发EVENT,唤醒IST线程运行,IST对中断进行处理。

    Kernel调用OEMInterruptDone函数完成此次中断的处理过程

    最后,OAL例程通知底层硬件设备重新启用中断。





中断处理的常用函数:

Windows CE在处理中断时,一般涉及到两类函数的使用:

    第一类:供OAL调用的ISR函数。

例如:HookInterrupt函数,在OEMInit函数中,被调用以关联IRQ和ISR,UnhookInterrupt函数用来终止IRQ和ISR的关联。

    第二类:供驱动程序调用的IST函数。

例如:InterruptInitialize函数,用来将EVENT对象和逻辑中断号关联并允许中断,InterruptDone函数用来通知中断处理的结束。InterruptDisable函数被驱动程序调用,可以关闭中断、同时取消被InterruptInitialize初始化的EVENT对象。

ISR函数属于OAL层,将CPU寄存器中的数据移动到内存缓冲区中,可以进行物理中断号和逻辑中断号的映射。经过ISR之后,就能把物理中断转换成Windows CE标准的SYSINTR_KEYBOARD逻辑中断。内核会根据这个逻辑中断值,找到对应的EVENT,从而唤醒IST。

Windows CE中的中断结构定义完善且易于理解,中断体系结构方面的知识,可以大大加快调查驱动程序和延迟问题的速度。共享中断大大提高了Windows CE的开放性,能够支持不同公司之间以及公司内部的平台应用程序开发方案。

最新回复

嵌入式式软件包和Windows CE内核的特性使有可能按习惯定制中断时序和优先级,以满足特定应用程序的需要。  详情 回复 发表于 2009-7-8 13:49
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
中断?什么来的呀?是不是每台电脑都会出现这些状况的呀?别吓我哦,我不懂!
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
我也最怕电脑出状况了,这些什么中断。
 
 
 

回复

1672

帖子

0

TA的资源

裸片初长成(初级)

4
 
不只是WinCE,Linux也有软中断机制。
简单说就是将频繁发生的中断的处理主题放到一个process里面做,在中断handler中只是将这个event给queue起来而已。
为提高实时性可以考虑在handler中送semaphore给process。
x86的中断源有256个。实际上,我们动一下键盘、鼠标,或者网卡收发一个packet,都会触发系统的中断。系统会在中断的Interrupt Handler里面处理这些事件。

赞赏

1

查看全部赞赏

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

5
 
好贴
学到了不少新的知识。。。以后多关注一下楼主的贴子
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

6
 
是啊,楼主不介绍我还真不知道呢,这系统以后肯定能用上:D
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

7
 
终于等到这一天了,多谢楼主分享了哈
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(中级)

8
 
楼主是高手,俺们是菜鸟,对这个看的是一知半解的。
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

9
 
;P  只要是好的我都喜欢,不一定非要懂的原理
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

10
 
我补充,
内核的中断支持处理器会通知硬件屏蔽优先级别低的中断,
直到必需的处理结束后,
再重新打开被屏蔽的中断,
在这个过程中,
允许高优先级中断触发。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

11
 
晕,楼上你嘛都很明白呀 ,给我说说吧 呜呜呜  我不懂呀
 
 
 

回复

10

帖子

0

TA的资源

纯净的硅(中级)

12
 
楼主讲的真不错,看着挺好的
 
 
 

回复

15

帖子

0

TA的资源

禁止发言

13
 
嵌入式式软件包和Windows CE内核的特性使有可能按习惯定制中断时序和优先级,以满足特定应用程序的需要。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表