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