新聞中心

        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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 逊克县| 济南市| 石泉县| 神木县| 景洪市| 洛宁县| 藁城市| 高雄市| 新龙县| 屏东县| 罗山县| 康定县| 崇礼县| 绥中县| 寿光市| 汝州市| 丹棱县| 武冈市| 岳普湖县| 达尔| 库尔勒市| 曲水县| 蒙山县| 志丹县| 龙陵县| 荣成市| 西乌珠穆沁旗| 白山市| 大理市| 济宁市| 临城县| 巴马| 景德镇市| 迁西县| 兖州市| 嘉义市| 扎鲁特旗| 安仁县| 红河县| 集贤县| 宁化县|