RTOS的發(fā)展之Armv7-M
ARMv7-M于2006(文件版本=A)問世,最近一次改版是2021(文件版本=E.e),市場上能搜尋到的產(chǎn)品琳瑯滿目,屬于非常成熟的商品。本文多次引用的Cortex-M4,即屬Armv7E-M的架構(gòu)。
本文引用地址:http://www.ex-cimer.com/article/202210/439160.htm以一個問世十多年、且廣受歡迎的平臺來說,其設(shè)計應(yīng)有獨到之處,本節(jié)將列出幾項值得關(guān)注的特性。
從架構(gòu)談起
Cortex-M平臺在最初設(shè)計時,已將Coprocessor納入考慮,且最多可支持16個協(xié)同處理器。M4內(nèi)置的FPU,就是使用第10,11兩個位置,透過它,M4可以快速的處理單精度的浮點數(shù),對比傳統(tǒng)的軟件方式,效能上有10倍以上的提升。
除了FPU外,Armv7E-M架構(gòu)還內(nèi)含了DSP指令集,在SIMD,Saturate,Q-Format等指令的助攻下,使得32 bit Cortex-M4在運算能力上,來到了一個新的高度,已經(jīng)遠遠的、超過了早期8 bit MCU的水準。
除此之外,ARM在除錯的支持上非常齊全,但不在本次的討論范圍。
運作模式的探討
Cortex-M的內(nèi)核,支持兩種運作模式,分別是Thread mode,以及Handler mode,后者是發(fā)生中斷時,CPU所切換的模式。
Thread mode提供兩個特權(quán)等級,分別是Privileged及Unprivileged,一般的作法,會讓OS有特權(quán),應(yīng)用程序則無,此外,透過CONTROL寄存器,還可選擇使用不同的堆棧指針(MSP or PSP)。
看似平常的模式,其實有下列幾個亮點:(1)Handler mode的離開方式,跟一般函式相同。(2)CPU進出Handler時,硬件會自動PUSH/POP多個緩存器。(3)內(nèi)建的異步PendSV例外功能。(4)異步例外支持Active and Pending state。
中斷及例外處理的優(yōu)先權(quán)
全系列的Cortex-M都內(nèi)建了NVIC,NVIC(Nested Vectored Interrupt Controller)緊密的整合于核心旁,可支持高達496個中斷、并提供256階優(yōu)先權(quán)。
NVIC所提供的巢狀中斷服務(wù),由硬件執(zhí)行ISR的Preemption工作,還加碼Late arrival及Tail chaining機制。
電源管理指令
Cortex-M將電源管理直接指令化,WFI(Wait For Interrupt)及WFE(Wait For Event),可使CPU快速的進入睡眠、省電狀態(tài)(Low Power State)。
搭配SCR(System Control Register)的多個旗標:SEVONPEND,SLEEPONEXIT,SLEEPDEEP等,還可執(zhí)行進階的設(shè)定。
無鎖的同步指令
為了解決關(guān)鍵區(qū)段的保護問題,并避免關(guān)閉中斷造成的損失,Armv7-M的LDREX/STREX,以指令的方式,達成non-blocking的內(nèi)存同步請求。由硬件協(xié)助確保read-modify-write的正確性。
A fit real time kernel for Cortex-M
談了許多RTOS的缺點,又列出了Armv7-M的特色后,我們是否應(yīng)跳出舊的思維,并以創(chuàng)意及創(chuàng)新的觀點,提出新的RTOS軟件作法呢?
作者:科技下午茶啃泥https://www.bilibili.com/read/cv15839248?spm_id_from=333.999.0.0
評論