打印
[技术问答]

Cortex-M4核的“异常”与“中断”那点事

[复制链接]
2540|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Micachl|  楼主 | 2015-10-14 16:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近一直在看《ARM Cortex-M3权威指南》这本书,不知道被我翻看了多少遍了,感觉这本书的着迷之处在于每次看都会有点小收获、小心得,由衷的钦佩作者扎实的技术功底和严谨的科学态度(包括英文原著的作者和中文翻译的作者,都很NB,个人认为这本书是中文翻译最好的嵌入式书籍中的代表作之一)。我之前一直对MCU中的“异常”和“中断”这两个概念有点模糊,最近终于在这本书中找到了答案,欣喜之余,也把它记录了下来,同时本着share的思想,也开放给广大博友,共同进步,当然也可能有不准确的地方,可以随时博客中留言沟通交流。
            所谓“异常”,即所有能打断正常执行流的事件都可以称之为异常。平时,我们经常混合使用术语“中断”与“异常”这两个概念,这也是我老是弄混的原因,但是如果不加额外说明,则强调的都是它们对前台主程序所体现出来的“中断”性质,也就是说我们平时都以“中断”来统称。不过在一些用户手册上却常常将这两个单独分开来讲,所以我们还是有必要将这两者分个丁一卯二。我们知道Cortex-M3/M4的中断系统中前16个中断都是被称作系统异常,之后的240个中断称之为外部中断(即内核的外部统称外部中断),而准确来讲,中断与异常的区别在于,那 240 个中断对 CM3/CM4 核来说都是“意外突发事件”——也就是说,该请求信号来自CM3内核的外面,来自各种片上外设和外扩的外设,对CM3/CM4来说是“异步”的;而异常则是因CM3/CM4内核的活动产生的——在执行指令或访问存储器时产生,因此对CM3/CM4来说是“同步”的。
             所以说转牛角尖的话,这两者的确是存在区别的,哈哈,只不过我们平时不管三七二十一的都称之为中断罢了,毕竟这些只是概念上的东西,只是有助理解而已,但是为了科学的严谨考虑,我们也有必要对这两者有个准确的认识即可。

沙发
稳稳の幸福| | 2015-10-14 19:22 | 只看该作者
楼主读书,读的这么有心得体会,自叹不如。

使用特权

评论回复
板凳
Beckham_Owen| | 2015-10-14 20:21 | 只看该作者
所谓“异常”,即所有能打断正常执行流的事件都可以称之为异常。楼主看的真是细致

使用特权

评论回复
地板
天灵灵地灵灵| | 2015-10-14 22:00 | 只看该作者
所有能打断正常执行流的事件都可以称之为异常

使用特权

评论回复
5
玛尼玛尼哄| | 2015-10-14 22:23 | 只看该作者
异常,就是正干什么事情呢,有人来打扰了,按照规则,无**常进行当前的事情了。

使用特权

评论回复
6
mintspring| | 2015-10-14 22:59 | 只看该作者
不知道这个掉电后是怎么做的,会不会有标志寄存器被置位,下次上电时候可以知道上次是掉电了。

使用特权

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

本版积分规则

43

主题

300

帖子

1

粉丝