免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3560 | 回复: 0

aCoral中断 [复制链接]

论坛徽章:
0
发表于 2010-10-21 17:30 |显示全部楼层
有过嵌入式操作系统中断程序开发经验的人,都知道中断程序开发不是容易的事,不是简单的仅仅实现中断处理程序,还有很多其他的事要做,比如。

1)  将中断处理程序绑定到中断向量表,这又分两种。

a)       向量模式的中断,这种情况下,直接填充向量表。

b)      非向量模式,这种情况下,要有个总的中断入口(比如arm9的IRQ),然后在总的入口读取中断号,然后跳到你的中断处理函数。

2)  中断响应,这个主要涉及到清pending位。

3)  现场保护,就是寄存器的值。

所以在嵌入式操作系统中写个中断程序不容易啊,你肯定得知道相关的芯片信息,比如寄存器的信息,同时也得理解中断系统,就是整个中断过程,要不你怎么开发啊?

有没有一种简单的方法啊,有,acoral给了你一个偷懒的机会。

acoral的中断分为三种模式。

   a 普通模式中断:
     这种中断就是为了方便用户开发中断处理程序的,这种中断,用户只需实现中断处理程序,然后通过系统接口acoral_intr_attach即可实现中断处理程序,而不用实现上面的三个部分。

   b 专家模式中断:
        既然是专家,那你肯定就有能力知道芯片的相关信息,所以清中断位这些中断响应工作就得你来做,不过现场保存还是由系统统一帮你做。

   c 实时模式中断:
    上面两种中断模式对向量模式的中断都有一定的性能损耗,而有些系统对中断实时要求很严格,且能够达到实时,这是选择这种模式是首选,这种模式下中断处理程序的编写和刚开始提到的中断一样,用户需要实现上面的中断绑定,中断响应,现场保护等附属工作。
    acoral中的中断处理模型如下:

intr.jpg       
当然部分开发平台也是支持简易中断处理编写,比如在ads中加上_irq关键字来声明一个函数是用来处理中断的,那么编译器会自动帮你生成保存现场的代码,但是其他的辅助工作还是需要你来做的,且不是所有开发平台支持这种模式,且这种有时会产生一些误差,比如cortex-m3系列的芯片。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP