每個 Cortex-M 系列處理器都有特定的優點,但全部都受一些基本技術的支持,這些技術使 Cortex-M 處理器能夠勝任多種嵌入式應用。
CMSIS
ARM Cortex 微控制器軟件接口標準 (CMSIS) 是 Cortex-M 處理器系列的與供應商無關的硬件抽象層。 使用 CMSIS,可以為接口外設、實時操作系統和中間件實現一致且簡單的軟件接口,從而簡化軟件的重用、縮短新微控制器開發人員的學習過程,并縮短新產品的上市時間。
深入:嵌套矢量中斷控制器 (NVIC)
NVIC 是 Cortex-M 處理器不可或缺的部分,它為處理器提供了卓越的中斷處理能力。
Cortex-M 處理器使用一個矢量表,其中包含要為特定中斷處理程序執行的函數的地址。接受中斷時,處理器會從該矢量表中提取地址。
為了減少門數并增強系統靈活性,Cortex-M 處理器使用一個基于堆棧的異常模型。出現異常時,系統會將關鍵通用寄存器推送到堆棧上。完成入棧和指令提取后,將執行中斷服務例程或故障處理程序,然后自動還原寄存器以使中斷的程序恢復正常執行。使用此方法,便無需編寫匯編器包裝器了(而這是對基于 C 語言的傳統中斷服務例程執行堆棧操作所必需的),從而使得應用程序的開發變得非常容易。NVIC 支持中斷嵌套(入棧),從而允許通過運用較高的優先級來較早地為某個中斷提供服務。
在硬件中完成對中斷的響應
Cortex-M 系列處理器的中斷響應是從發出中斷信號到執行中斷服務例程的周期數。它包括:
檢測中斷
背對背或遲到中斷的最佳處理(參見下文)
提取矢量地址
將易損壞的寄存器入棧
跳轉到中斷處理程序
這些任務在硬件中執行,并且包含在為 Cortex-M 處理器報出的中斷響應周期時間中。在其他許多體系結構中,這些任務必須在軟件的中斷處理程序中執行,從而引起延遲并使得過程十分復雜。
NVIC 中的尾鏈
.jpg)
在背對背中斷的情況下,傳統系統會重復完整的狀態保存和還原周期兩次,從而導致更高的延遲。Cortex-M 處理器通過在 NVIC 硬件中實現尾鏈技術簡化了活動中斷和掛起的中斷之間的轉換。處理器狀態會在比軟件實現時間更少的周期內自動保存在中斷條目上并在中斷退出時還原,從而顯著提升低 MHz 系統的性能。
NVIC 對遲到的較高優先級中斷的響應
.jpg)
如果在為上一個中斷執行堆棧推送期間較高優先級的中斷遲到,NVIC 會立即提取新的矢量地址來為掛起的中斷提供服務,如上所示。Cortex-M NVIC 對這些可能性提供具有確定性的響應并支持遲到和搶占。
NVIC 進行的堆棧彈出搶占
.jpg)
同樣,如果異常到達,NVIC 將放棄堆棧彈出并立即為新的中斷提供服務,如上所示。通過搶占并切換到第二個中斷而不完成狀態還原和保存,NVIC 以具有確定性的方式實現了縮短延遲。