新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Cortex-M3-MPU(存儲器保護單元)

        Cortex-M3-MPU(存儲器保護單元)

        作者: 時間:2022-05-31 來源:CSDN 收藏

        使命-關鍵系統

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

          這種系統往往都用于性命攸關的場合,且必須連續無故障地工作,比如,火車調度系統、生命維持系統、大型發動機驅動器、核子反應堆控制、網絡/電信的數據交換中樞等。如果失能,將導致慘重的經濟與損失,甚至會使無數人死于非命。因此,決不允許這類系統出現

          上述情況。然而,這些系統的復雜度往往都非常高,幾乎不可能由開發人員保證這種可靠性。因此,需要在硬件水平上加入一個“公安機關”。通過它設置各種類型的“禁地”,并且施加多種規章條例。一旦發現違章,則強制改變執行流和處理器的工作狀態,以便可以由軟件做進一步的處理。這樣,就可以為不同的程序限定一個內存使用范圍,從而使野指針或惡意破壞無法影響不允許訪問的區域。此即存儲器保護單元()。有時,對存儲器的管理更進一步,做到可以對地址執行變換的程度,此時程序使用的地址未必是真實的存儲器地址。它在的基礎上,還消滅了內存碎片和浪費,并且能進一步地讓應用程序擁有方便舒適的地址空間,從而使程序規模可以擴大甚至數百倍。此即為“存儲器管理單元”(MMU)。

        MPU概覽

          在Cortex‐M3處理器中可以選配一個存儲器保護單元(MPU),它可以實施對存儲器(主要是內存和外設寄存器)的保護,以使軟件更加健壯和可靠。在使用前,必須根據需要對其編程。如果沒有啟用MPU,則等同于系統中沒有配MPU。MPU有如下的能力可以提高系統的可靠性:

          阻止用戶應用程序破壞操作系統使用的數據

          阻止一個任務訪問其它任務的數據區,從而把任務隔開。

          可以把關鍵數據區設置為只讀,從根本上消除了被破壞的可能。

          檢測意外的存儲訪問,如,堆棧溢出,數組越界。此外,還可以通過MPU設置存儲器regions的其它訪問屬性,比如,是否緩區,是否緩沖等。

          MPU在執行其功能時,是以所謂的“region”為單位的。一個region其實就是一段連續的地址,只是它們的位置和范圍都要滿足一些限制(對齊方式,最小容量等)。CM3的MPU共支持8個regions。怎么,嫌少?是少了點,不過,還允許把每個region進一步劃分成更小的“子region”。此外,還允許啟用一個“背景region”(即沒有MPU時的全部地址空間),不過它是只能由特權級享用。在啟用MPU后,就不得再訪問定義之外的地址區間,也不得訪問未經授權的region。否則,將以“訪問違例”處理,觸發MemManage fault。

          MPU定義的regions可以相互交迭。如果某塊內存落在多個region中,則訪問屬性和權限將由編號最大的region來決定。比如,若1號region與4號region交迭,則交迭的部分受4號region控制。

        MPU的典型設置

          在典型的情況下,當需要阻止用戶程序訪問特權級的數據和代碼時,可以啟用MPU。在設計MPU regions時,需要考慮到下列的regions:如下圖:

        MPU的自定義設置后的權限



        關鍵詞: MPU 微處理器 Cortex-M3

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 福安市| 千阳县| 静乐县| 沐川县| 荥阳市| 开阳县| 吉安市| 和顺县| 云霄县| 高雄县| 海林市| 内乡县| 桐梓县| 台江县| 当雄县| 阿拉尔市| 开化县| 封丘县| 株洲县| 松滋市| 宁化县| 潞城市| 抚顺县| 乐亭县| 庆阳市| 万源市| 蚌埠市| 天全县| 大厂| 乐业县| 泰宁县| 鹤山市| 迁西县| 漳平市| 龙州县| 富顺县| 江城| 左云县| 井冈山市| 台山市| 郁南县|