mpu 配置内存空间_mpu内存保护单元功能及工作原理
一些嵌入式系統使用多任務的操作和控制。這些系統必須提供一種機制來保證正在運行的任務不破壞其他任務的操作。即要防止系統資源和其他一些任務不受非法訪問。嵌入式系統有專門的硬件來檢測和限制系統資源的訪問。它能保證資源的所有權,任務需要遵守一組由操作環境定義的、由硬件維護的規則,在硬件級上授予監視和控制資源程序的特殊權限。受保護系統主動防止一個任務使用其他任務的資源。因此使用硬件主動監視系統比協調加強的軟件歷程,提供了更好的保護。
內存保護單元(MPU)是ARM中配備的有效保護系統資源硬件的一種,提供了內存區域保護功能。
MPU功能
(1)保護內存區域。
ARM處理器中的MPU使用“域(regions)”來對內存單元進行管理。域是與存儲空間相關聯的屬性,處理器核將這些數據保存在協處理器CP15的一些寄存器中。通常域的個數為8個,編號為從0~7。
域的大小和起始地址保存在CP15的寄存器c6中。大小可以是4KB~4GB的任何2的乘冪。域的起始地址必須是其大小的倍數。比如,一個定義為4KB的域其起始地址可以是0x12345000,而一個大小定義為8KB的域起始地址只能是0x2000的倍數。
(2)將保護區域重疊。
對于ARM處理器,存儲空間的某一部分可以被分配給一個以上的區域。也就是說域可以重疊。在重疊的域內,可以設置域的優先級。在分配訪問權限時重疊域比非重疊域有更大的靈活性。
(3)控制訪問權限。
操作系統可以為這些域分配更多的屬性:訪問權限、cache和寫緩存。存儲器基于當時的處理器模式(管理模式或用戶模式)可以設定這些區域的訪問權限為讀/寫、只讀和不可訪問。
當處理器訪問主存的一個域時,MPU比較該域的訪問權限屬性和當時的處理器模式。如果請求符合域的訪問標準,則MPU允許內核讀/寫主存;如果存儲器請求不符號域的訪問標準,將產生一個異常信號。
(4)將存儲器屬性輸出到系統。
異常信號被送到處理器核。處理器核執行一個異常向量,然后跳轉到異常處理程序,異常處理程序判斷異常類型為預取指或數據中止,然后根據異常類型,跳轉到相應的服務例程。
MPU工作原理
當ARM處理器產生一個內存訪問信號時,內存保護單位MPU將負責檢查要訪問的地址是否在被定義的域中。
1、如果地址不在任何域中,存儲器產生異常。如果內核預取指令則MPU產生預取中止異常;如果是存儲器數據請求,則產生數據中止異常。
2、如果地址在多個域內,由MPU判斷域的有效級來決定存儲區域的訪問屬性。訪問屬性可以在CP15的寄存器中設定,可設定的位為C(Cache)、B(Buffer)、AP(Access Permission)。
這些屬性的具體定義為:
· C和B可以控制Cache和寫緩存屬性的Cache策略。例如,可以設置一個域使用回寫(write-back)策略訪問存儲器,而另一個域則以無Cache和無寫緩存方式訪問;
· AP(access permission)決定域是否可以被訪問。如果在當前處理器模式下,該域不能被訪問,MPU將產生一個存儲器訪問異常。
打開APP精彩內容
點擊閱讀全文
總結
以上是生活随笔為你收集整理的mpu 配置内存空间_mpu内存保护单元功能及工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 换马桶盖技巧 如何更换马桶盖
- 下一篇: cma检测_CMA检测方法