ARM Cortex-M3 異常優先順序以及CMSIS RTOS RTX的中斷優先順序

來源:互聯網
上載者:User

標籤:

通常異常包括一些系統異常,以及中斷。

異常類型

Cortex-M3處理器支援多種類型的異常:

  1. RESET, NMI, HardWare Fault;
  2. PSV,SVC等可程式化中斷;
  3. 其他的可程式化中斷,例如timer,GPIO等。

其中第1類異常的優先順序是固定,不可改變的。其他都是可以修改的。

Cortex-M3處理器提供了PRIMASK選項,用來屏蔽所有可程式化的中斷;提供了FAULTMASK來屏蔽HardWare Fault和所有可屏蔽中斷。

異常優先順序

Cortex-M3處理器支援NVIC的中斷處理,也就是說中斷嵌套處理。中斷的優先順序由1個8bit寄存器確定,但ARM晶片廠商在實現的時候通常實現了其中的幾個bit而已。ARM要求最少實現3個bit。從寄存器的bit 7開始從高往低。

而這幾個bit還會分為搶佔優先順序,普通優先順序。見:

搶佔優先順序,是指如果兩個中斷的普通優先順序一樣,在搶佔優先順序低的中斷A執行時,如果搶佔優先順序高的中斷B發生了,那麼就會中斷B就會搶佔中斷A,處理器開始執行中斷B的ISR。

普通優先順序,是指如果兩個中斷的搶佔優先順序一樣,那麼中斷之間是不會發生搶佔的,也就是一個中斷不會打斷另外一個中斷的處理。但是如果兩個中斷同時發生了,普通優先順序高的,先處理。

數字越小,優先順序越高。

如果兩個中斷搶佔優先順序,普通優先順序全部一樣,那麼中斷號小的中斷,會先處理,但還是不會發生搶佔。

異常向量

根據cortex-M3的技術文檔描述,異常向量"vector tables"是放在從地址0x4開始的地方,地址0x0處放的是MSP的初始值。

如下所示,異常向量對應的地址處直接放置的異常處理函數地址,而不是跳轉指令。

CMSIS RTOS RTX的中斷優先順序

由於ARM公司後來搞了CMSIS,也就是在CMSIS層增加了對RTOS的支援。所以很多種RTOS都可以依靠CMSIS RTOS API來實現。

而ARM也把Keil RTX作業系統,也改裝成支援CMSIS了,就叫CMSIS RTOS RTX了。

在RTX裡面,systick timer/SVC/PSV的中斷優先順序都是0xFF(具體對應到硬體,要看晶片廠商實現了8bit優先順序的幾個bit),所以其實他們的優先順序都是一樣的,並且相互不搶佔。

使用者可以配置其他可程式化優先順序,不要求是

ARM Cortex-M3 異常優先順序以及CMSIS RTOS RTX的中斷優先順序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.