新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > RTOS的發展之Armv7-M

        RTOS的發展之Armv7-M

        作者: 時間:2022-10-17 來源:網絡 收藏

          ARMv7-M于2006(文件版本=A)問世,最近一次改版是2021(文件版本=E.e),市場上能搜尋到的產品琳瑯滿目,屬于非常成熟的商品。本文多次引用的Cortex-M4,即屬Armv7E-M的架構。

        本文引用地址:http://www.104case.com/article/202210/439160.htm

          以一個問世十多年、且廣受歡迎的平臺來說,其設計應有獨到之處,本節將列出幾項值得關注的特性。

        從架構談起

          Cortex-M平臺在最初設計時,已將Coprocessor納入考慮,且最多可支持16個協同處理器。M4內置的FPU,就是使用第10,11兩個位置,透過它,M4可以快速的處理單精度的浮點數,對比傳統的軟件方式,效能上有10倍以上的提升。

          除了FPU外,Armv7E-M架構還內含了DSP指令集,在SIMD,Saturate,Q-Format等指令的助攻下,使得32 bit Cortex-M4在運算能力上,來到了一個新的高度,已經遠遠的、超過了早期8 bit MCU的水準。

          除此之外,ARM在除錯的支持上非常齊全,但不在本次的討論范圍。

        運作模式的探討

          Cortex-M的內核,支持兩種運作模式,分別是Thread mode,以及Handler mode,后者是發生中斷時,CPU所切換的模式。

          Thread mode提供兩個特權等級,分別是Privileged及Unprivileged,一般的作法,會讓OS有特權,應用程序則無,此外,透過CONTROL寄存器,還可選擇使用不同的堆棧指針(MSP or PSP)。

          看似平常的模式,其實有下列幾個亮點:(1)Handler mode的離開方式,跟一般函式相同。(2)CPU進出Handler時,硬件會自動PUSH/POP多個緩存器。(3)內建的異步PendSV例外功能。(4)異步例外支持Active and Pending state。

        中斷及例外處理的優先權

          全系列的Cortex-M都內建了NVIC,NVIC(Nested Vectored Interrupt Controller)緊密的整合于核心旁,可支持高達496個中斷、并提供256階優先權。

          NVIC所提供的巢狀中斷服務,由硬件執行ISR的Preemption工作,還加碼Late arrival及Tail chaining機制。

        電源管理指令

          Cortex-M將電源管理直接指令化,WFI(Wait For Interrupt)及WFE(Wait For Event),可使CPU快速的進入睡眠、省電狀態(Low Power State)。

          搭配SCR(System Control Register)的多個旗標:SEVONPEND,SLEEPONEXIT,SLEEPDEEP等,還可執行進階的設定。

        無鎖的同步指令

          為了解決關鍵區段的保護問題,并避免關閉中斷造成的損失,的LDREX/STREX,以指令的方式,達成non-blocking的內存同步請求。由硬件協助確保read-modify-write的正確性。

        A fit real time kernel for Cortex-M

          談了許多的缺點,又列出了的特色后,我們是否應跳出舊的思維,并以創意及創新的觀點,提出新的軟件作法呢?

        作者:科技下午茶啃泥https://www.bilibili.com/read/cv15839248?spm_id_from=333.999.0.0



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 泸州市| 仁化县| 原阳县| 万安县| 广饶县| 涞水县| 马公市| 信阳市| 平遥县| 漯河市| 绥江县| 长治市| 贵溪市| 札达县| 陇南市| 黄大仙区| 嵊泗县| 米林县| 宜君县| 托里县| 海伦市| 襄汾县| 娱乐| 嘉义市| 错那县| 十堰市| 伊春市| 宜兰市| 珠海市| 高淳县| 潞西市| 涟水县| 贵德县| 镇平县| 镇坪县| 微博| 杨浦区| 湘潭市| 武定县| 军事| 东海县|