ARM Cortex-M 處理器系列是一系列可向上相容的高能效、便於使用的處理器,這些處理器旨在協助開發人員滿足將來的嵌入式應用的需要。這些需要包括以更低的成本提供更多功能、不斷增加串連、改善代碼重用和提高能效。 Cortex-M 系列針對成本和功耗敏感的 MCU 和終端應用(如智能測量、人機介面裝置、汽車和工業控制系統、大型家用電器、消費性產品和醫學器械)的混合訊號裝置進行過最佳化。
為什麼選擇 Cortex-M
行業標準: ARM Cortex-M 處理器是全球微控制器標準,已許可給 40 個以上的 ARM 夥伴,包括 NXP Semiconductors、STMicroelectronics、Texas Instruments 和 Toshiba 等領先供應商。使用標準處理器使 ARM 夥伴可以建立具有一致體繫結構的裝置,同時使它們可以專註於建立優秀的裝置實現。
能效:更低的能耗,更長的電池壽命
以更低的 MHz 或更短的活動時段運行。
基於架構的睡眠模式支援。
比 8/16 位裝置的工作方式更智能、睡眠時間更長。
--------------------------------------------------------------------------------
更小的代碼
更低的矽成本
高密度指令集
比 8/16 位裝置每位元組完成更多操作
更小的 RAM、ROM 或快閃記憶體要求
--------------------------------------------------------------------------------
便於使用
更快的軟體開發和重用
多個供應商之間的全球標準
代碼相容性
統一的工具和作業系統支援
--------------------------------------------------------------------------------
高效能
更有競爭力的產品
功能強大的 Cortex-M 處理器
每 MHz 提供更高的效能
能夠以更低的能耗實現更豐富的功能
比較 Cortex-M 處理器
Cortex-M 系列是必須考慮不同的成本、能耗和效能的各類可相容、便於使用的嵌入式裝置(如微控制器 (MCU))的理想解決方案。每個處理器都針對十分廣泛的嵌入式應用範圍提供最佳權衡取捨。
ARM Cortex-M0
ARM Cortex-M3
ARM Cortex-M4
“8/16 位”應用
“16/32 位”應用
“32 位/DSC”應用
低成本和簡單性
效能效率
有效數字訊號控制
Cortex-M 系列處理器都是二進位向上相容的,這使得軟體重用以及從一個 Cortex-M 處理器無縫發展到另一個成為可能。
ARM Cortex-M 技術
每個 Cortex-M 系列處理器都有特定的優點,但全部都受一些基本技術的支援,這些技術使 Cortex-M 處理器能夠勝任多種嵌入式應用。
RISC 處理器核心
Thumb-2 技術
高效能 32 位 CPU
具有確定性運算
低延遲 3 階段管道
16/32 位指令的最佳混合
小於 8 位裝置 3 倍的代碼大小
對效能沒有負面影響
低能耗模式
嵌套向量中斷控制器 (NVIC)
低延遲、低抖動中斷響應
不需要彙編編程
以純 C 語言編寫的插斷服務常式
工具和 RTOS 支援
CoreSight 調試和跟蹤
JTAG 或 2 針串列線調試 (SWD) 串連
支援多處理器
支援即時跟蹤
CMSIS
ARM Cortex 微控制器軟體介面標準 (CMSIS) 是 Cortex-M 處理器系列的與供應商無關的硬體抽象層。使用 CMSIS,可以為介面外設、即時作業系統和中介軟體實現一致且簡單的處理器軟體介面,從而簡化軟體的重用。藉助於 CMSIS,可以縮短新微控制器開發人員的學習過程,從而縮短新產品的上市時間。
深入:嵌套向量中斷控制器 (NVIC)
NVIC 是 Cortex-M 處理器不可或缺的部分,它為處理器提供了卓越的中斷處理能力。
Cortex-M 處理器使用一個向量表,其中包含要為特定中斷處理常式執行的函數的地址。接受中斷時,處理器會從該向量表中提取地址。
為了減少門數並增強系統靈活性,Cortex-M 處理器使用一個基於堆棧的異常模型。出現異常時,系統會將關鍵通用寄存器推送到堆棧上。完成入棧和指令提取後,將執行插斷服務常式或故障處理常式,然後自動還原寄存器以使中斷的程式恢複正常執行。使用此方法,便無需編寫彙編器封裝器了(而這是對基於 C 語言的傳統插斷服務常式執行堆棧操作所必需的),從而使得應用程式的開發變得非常容易。NVIC 支援中斷嵌套(入棧),從而允許通過運用較高的優先順序來較早地為某個中斷提供服務。
在硬體中完成對中斷的響應
Cortex-M 系列處理器的中斷響應是從發出中斷訊號到執行插斷服務常式的周期數。它包括:
- 檢測中斷
- 背對背或遲到中斷的最佳處理(參見下文)
- 提取向量地址
- 將易損壞的寄存器入棧
- 跳轉到中斷處理常式
這些任務在硬體中執行,並且包含在為 Cortex-M 處理器報出的中斷響應周期時間中。在其他許多體繫結構中,這些任務必須在軟體的中斷處理常式中執行,從而引起延遲並使得過程十分複雜。
NVIC 中的尾鏈
在背對背中斷的情況下,傳統系統會重複完整的狀態儲存和還原周期兩次,從而導致更高的延遲。Cortex-M 處理器通過在 NVIC 硬體中實現尾鏈技術簡化了活動中斷和掛起的中斷之間的轉換。處理器狀態會在比軟體實現時間更少的周期內自動儲存在中斷條目上並在中斷退出時還原,從而顯著提升低 MHz 系統的效能。
NVIC 對遲到的較高優先順序中斷的響應
如果在為上一個中斷執行堆棧推送期間較高優先順序的中斷遲到,NVIC 會立即提取新的向量地址來為掛起的中斷提供服務,如上所示。Cortex-M NVIC 對這些可能性提供具有確定性響應並支援遲到和搶佔。
NVIC 進行的堆棧彈出搶佔
同樣,如果異常到達,NVIC 將放棄堆棧彈出並立即為新的中斷提供服務,如上所示。通過搶佔並切換到第二個中斷而不完成狀態還原和儲存,NVIC 以具有確定性方式實現了縮短延遲。
從 8/16 位遷移到 ARM Cortex-M
ARM Cortex-M 代碼大小優勢說明
ARM
使用相對 EEMBC CoreMark 測試大小的代碼大小比較。
指令寬度
認為 8 位微控制器使用 8 位指令,基於 ARM Cortex-M 處理器的微控制器使用 32 位指令,這是一種常見的誤解。事實上,PIC18 和 PIC16 指令大小分別是 16 位和 14 位。對於 8051 體繫結構,雖然某些指令的長度為 1 位元組,但許多其他指令的長度為 2 或 3 位元組。通常,對於 16 位體繫結構也是如此,其中某些指令可能佔用 6 位元組或更多記憶體。
ARM Cortex-M3 和 Cortex-M0 處理器利用可提供極佳代碼密度的 ARM Thumb-2 技術。藉助於 Thumb-2 技術,Cortex-M 處理器可以支援已擴充為包括更強大的 32 位指令的 16 位 Thumb 指令的根本基礎。在許多情況下,C 語言編譯器將使用 16 位版本的指令,除非使用 32 位版本可以更有效地執行運算。
指令效率
由於沒有同時考慮到 ARM Cortex-M 處理器指令更為強大,此圖片是不完整的。在許多情況下,單個 Thumb 指令可相當於數個 8/16 位微控制器指令;這意味著 Cortex-M 裝置的代碼量更少,因此可以更低的匯流排速度完成同一任務。
在各處理器體繫結構之間比較 16 位乘法運算
8 位樣本
16 位樣本
ARM Cortex-M
MOV A, XL;2 位元組
MOV B, YL;3 位元組
MUL AB;1 位元組
MOV R0, A;1 位元組
MOV R1, B;3 位元組
MOV A, XL;2 位元組
MOV B, YH;3 位元組
MUL AB;1 位元組
ADD A, R1;1 位元組
MOV R1, A;1 位元組
MOV A, B;2 位元組
ADDC A, #0;2 位元組
MOV R2, A;1 位元組
MOV A, XH;2 位元組
MOV B, YL;3 位元組
MUL AB;1 位元組
ADD A, R1;1 位元組
MOV R1, A;1 位元組
MOV A, B;2 位元組
ADDC A, R2;1 位元組
MOV R2, A;1 位元組
MOV A, XH;2 位元組
MOV B, YH;3 位元組
MUL AB;1 位元組
ADD A, R2;1 位元組
MOV R2, A;1 位元組
MOV A, B;2 位元組
ADDC A, #0;2 位元組
MOV R3, A;1 位元組
MOV R4,&0130h
MOV R5,&0138h
MOV SumLo,R6
MOV SumHi,R7
(運算元被移入或移出記憶體映射的硬體乘法單元)
MULS r0,r1,r0
N.B.Cortex-M 乘法實際上執行 32 位乘法,此處我們假設 r0 和 r1 包含 16 位元據。
壓縮的資料佔用空間
必須注意,Cortex-M 處理器支援 8 位和 16 位元據傳輸,可以有效利用資料記憶體。這意味著程式員可以繼續使用他們在面向 8/16 位的軟體中使用的相同資料類型。
能效優勢
對不斷增加串連(例如,USB、藍芽和 IEEE 802.15)、具有複雜類比感應器(例如,加速計和觸控螢幕)且成本日益降低的產品的需求,已導致需要將類比裝置與數字功能更緊密地整合,以對資料進行預先處理和傳輸。大多數 8 位裝置在不顯著增加 MHz(並因此不顯著增加功率)的情況下不提供支援這些任務的效能,因此嵌入式開發人員需要尋找具有更進階處理器技術的替代裝置。16 位裝置以前曾被用來解決微控制器應用中的能效問題。但是,16 位裝置相對不高的效能意味著它們通常需要較長的活動工作周期或較高的時鐘頻率才能完成 32 位裝置所完成的相同任務。
使軟體開發更加容易
基於 ARM Cortex 處理器的微控制器的軟體開發可能比 8 位微控制器產品的開發容易得多。Cortex 處理器不但是完全可通過 C 語言進行編程的,而且還附帶各種進階調試功能以協助定位軟體中的問題。除 MCU 開發套件中包括的所有附加資源外,Internet 上還有大量樣本和教程,其中許多來自基於 ARM 處理器的 MCU 供應商的網站。