Arm Cortex-M0+及其功能
Arm Cortex-M0+是一種可靠的架構(gòu),具有低功耗需求,并在緊湊而高效的形式下提供32位功能。
本文引用地址:http://www.ex-cimer.com/article/202408/461999.htmCortex-M0+并不是最新的小型低功耗處理器,事實上,一些更新的產(chǎn)品可能已經(jīng)超過了它。然而,由于其廣泛的部署和成熟的環(huán)境,Cortex-M0+仍然是低功耗應(yīng)用的有力選擇。
那么,Cortex-M0+有哪些重要特性呢?Cortex-M處理器系列整體上旨在滿足市場對低功耗和低成本設(shè)備的需求,因此適用于廣泛的應(yīng)用場景。Cortex-M0+處理器進一步發(fā)展了這一系列,提供了最小的占用面積和最低的功耗。這使得Cortex-M0+成為可穿戴設(shè)備和傳感器的理想選擇。
Cortex-M0+是一個小型的32位微處理器,針對特定需求進行了優(yōu)化,并與Cortex-M0具有完全相同的指令集兼容性。這意味著在兩者之間可以使用相同的編譯器和調(diào)試工具。
Cortex-M0+有一個名為Micro Trace Buffer (MTB) 的硅選項,提供了一個簡單的指令跟蹤緩沖區(qū)。這是在Cortex-M0調(diào)試功能的基礎(chǔ)上增加的功能。此外,還可以將Cortex-M3和M4的一些功能添加為硅選項。
Cortex-M0+基于ARMv6-M架構(gòu),與Cortex-M0共享指令集。適用的子指令集包括大多數(shù)的Thumb-1,缺少CBZ、CBNZ、IT和一些Thumb-2指令;并且只有BL、DMB、DSB、ISB、MRS、MSR指令。
Cortex-M0+具有32位的硬件整數(shù)乘法,結(jié)果也是32位,并且支持1到32個中斷,外加NMI(非屏蔽中斷)。
Cortex-M0+的內(nèi)存保護單元(MPU)的功能是監(jiān)控CPU對內(nèi)存的使用,確保沒有任務(wù)會破壞內(nèi)存或影響其他活動任務(wù)。通常由實時操作系統(tǒng)(RTOS)控制,MPU可以檢測未經(jīng)授權(quán)的內(nèi)存訪問嘗試。
Cortex-M0+中的流水線 原始的Cortex-M0內(nèi)核(以及Cortex-M3和M4)采用三級流水線構(gòu)建。Cortex-M0+則有所不同,它采用了兩級流水線。Cortex-M0+通過將流水線從三級減少到兩級來降低功耗并提高性能。指令每周期的效率更高,分支指令執(zhí)行的周期減少一個。第一級是取指和預(yù)解碼,第二級是主解碼和執(zhí)行。
為什么選擇兩級流水線?使用兩級而不是三級流水線可以減少對閃存的訪問。這一點很重要,因為閃存的功耗往往是微控制器總功耗的主要來源。因此,減少閃存訪問可以顯著降低整體功耗。
Cortex-M0+支持多少個中斷優(yōu)先級? Arm Cortex-M0+的一部分是嵌套向量中斷控制器(NVIC),它作為內(nèi)核與任何外部中斷源之間的接口。它可以支持一個NMI,具有與其他外部中斷類似的屬性,并連接到CPU的NMI請求,但又是獨立的。
此外,外部中斷控制器(EIC)可以生成事件,并允許單獨配置每條中斷線。它還支持中斷信號的脈沖和電平檢測、低延遲異常處理和中斷尾鏈功能。
NVIC提供了外部中斷源(如外圍設(shè)備和外部引腳)與內(nèi)核之間的接口。通過編程,可以將每個中斷源的優(yōu)先級設(shè)置為四個級別之一。當(dāng)兩個待處理的中斷具有相同的優(yōu)先級時,可以使用此優(yōu)先級。例如,在這種情況下,優(yōu)先級較低的中斷將優(yōu)先被處理,即最低的中斷向量地址。
Cortex-M0+的性能和應(yīng)用 Cortex-M0+被認為是Arm處理器中最節(jié)能的處理器之一,適用于受限的嵌入式應(yīng)用。M0+內(nèi)核的流水線為兩級,這使其在保持2.42 CoreMark/MHz性能的同時,實現(xiàn)了11.2 μW/MHz的功耗。該處理器還具有三種低功耗模式,可根據(jù)處理需求節(jié)省能源。
根據(jù)已發(fā)布的資料,Cortex-M0+內(nèi)核已被廣泛應(yīng)用于業(yè)界。例如:
ABOV Semiconductor A31G11x, A31G12x, A31G314
Cypress PSoC 4000S, 4100S, 4100S+, 4100PS, 4700S, FM0+
Epson S1C31W74, S1C31D01, S1C31D50
Holtek HT32F52000
Microchip SAM C2, D0, D1, D2, DA, L2, R2, R3; and PIC32CM JH and MC[31]
NXP LPC800, LPC11E60, LPC11U60
NXP (Freescale) Kinetis E, EA, L, M, V1, W0, S32K11x
Raspberry Pi RP2040 (兩個M0+內(nèi)核)
Renesas S124, S128, RE, RE01
Silicon Labs (Energy Micro) EFM32 Zero, Happy
STMicroelectronics STM32 L0, G0, C0, WL (一個Cortex-M4加一個Cortex-M0+)
許多其他設(shè)備將Cortex-M0+作為輔助內(nèi)核嵌入。值得注意的是,Cortex-M0+內(nèi)核的小尺寸使其能夠作為嵌入在更大設(shè)備中的單一內(nèi)核成功運行,作為伴隨內(nèi)核。在這種安排中,Cortex-M0+可以提供任務(wù)分區(qū)和/或硬件隔離功能。
評論