打印

驱动程序在控制中断系统时要注意的事项

[复制链接]
1655|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2012-5-5 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
驱动程序在控制中断系统时要注意的事项如上
1:boot之后马上禁止中断产生,因为除了中断系统还没设定好外,可能产生中断的硬设备也还没初始化完毕。
2:内建中断处理器的CPU会规定哪些PIN引脚是可以产生中断的,而会产生什么中断通常也是定义好的。
3:同理,软件工程师必须知道什么装置接到CPU的哪一个PIN引脚,是否会引发中断,如果会的话,又是第几号中断,一定要弄清楚相关的硬件设计,否则怎么会有办法写该装置的驱动程序?
4:设定中断向量表的起始地址,中断向量表可以写成一人C语言的数组,数组内的元素就是各个ISR的地址。
5:我们的产品不见得会用到所有CPU支持的中断源,也就是说不是每一个中断向量表的entry  都有对应的ISR,但中断向量表的每一个entry都必须有值,此时就必须为这些没有用到的中断来源写一个空的ISR,当这个空的ISR被执行时,就表示不该产生的中断产生了,这可能是硬件设计错误或静电产生的误动作,必须通知硬件同仁处理。
6:驱动程序可以通过设定缓存器为每一个中断来源设定优先等级,PSR缓存器中除了可以设定中断是否可以产生之外,也可以设定哪一个优先级以下的中断不会被CPU处理。
7;除非产品有硬实时的应用,一般状况我们不允许巢状中断,即ISR执行时期禁止中断产生,这是因为巢状中断会出现很复杂的状况。此时可以通过设定CPU允许产生中断的优先等级,
8.此处还有一个比较特殊的中断叫做NMI(nonmaskable interrupt),顾名思义就是无论如何都不会禁止的中断,硬件设计时可以把hard real time的中断来源接到NMI上,
9.虽说ISR也是一个函数,但有很多注意事项要遵守,尤其是critical section的保护。
此外ISR不像一般程序是循序执行的,它会在任何程序在执行时被调用,可能发生的状况很好,。所以我们会要求对ISR进行更严格地测试。

相关帖子

沙发
huangfeng33| | 2012-5-6 00:11 | 只看该作者
这么好的帖子怎么没人顶啊,中断作为单片机的灵魂非常重要,总结的不错

使用特权

评论回复
板凳
tianli1980| | 2012-5-6 00:24 | 只看该作者
总结的不错,先顶起来再说。

使用特权

评论回复
地板
职场新鲜人| | 2012-5-7 09:28 | 只看该作者
多谢楼主分享了,总结得很不错

使用特权

评论回复
5
tianm| | 2012-5-7 09:48 | 只看该作者
灵活应用中断可以节省MCU资源 提高实时性

使用特权

评论回复
6
julien| | 2012-5-7 14:53 | 只看该作者
学习一下,多谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝