ARM存儲器之:存儲保護單元MPU
15.4存儲保護單元MPU
一些嵌入式系統(tǒng)使用多任務的操作和控制。這些系統(tǒng)必須提供一種機制來保證正在運行的任務不破壞其他任務的操作。即要防止系統(tǒng)資源和其他一些任務不受非法訪問。要達到這一目的通常有軟件保護和硬件保護兩種途徑。這里軟件保護是指僅靠軟件來保護系統(tǒng)資源。系統(tǒng)中無保護硬件或硬件沒啟動。在多任務的系統(tǒng)中,通常要運行操作系統(tǒng)來達到任務間同步與通信。所以,這種軟件的資源保護通常由操作系統(tǒng)來完成。但這種通過軟件來協(xié)調任務運行,保護系統(tǒng)資源的做法有時會出現一些不可避免的問題。如當對一個通信用串口寄存器進行操作時,如果一個任務正在使用串口,則它沒有辦法來防止其他任務使用同一個串口。因此,若要成功使用該串口,則必須通過一個訪問該串口的系統(tǒng)調用來協(xié)調。使用這些調用任務的非授權訪問,很容易破壞經過該串口的通信。因此資源的不合理使用也許是不可避免的。
相反,受保護系統(tǒng)有專門的硬件來檢測和限制系統(tǒng)資源的訪問。它能保證資源的所有權,任務需要遵守一組由操作環(huán)境定義的、由硬件維護的規(guī)則,在硬件級上授予監(jiān)視和控制資源程序的特殊權限。受保護系統(tǒng)主動防止一個任務使用其他任務的資源。因此使用硬件主動監(jiān)視系統(tǒng)比協(xié)調加強的軟件歷程,提供了更好的保護。
ARM中配備的有效保護系統(tǒng)資源的硬件,有兩種:
·MPU(MemoryProtectionUnit);
·MMU(MemoryManagementUnit)。
MMU是比MPU提供了功能更強大的內存保護機制,MPU只提供了內存區(qū)域保護,而MMU是在此基礎上提供了虛擬地址映射技術,而且在操作上,MMU要比MPU負責。本節(jié)主要討論帶MPU的處理器內核,MMU將在下一節(jié)詳細介紹。
15.4.1保護域(ProtectionRegions)
ARM處理器中的MPU使用“域(regions)”來對內存單元進行管理。域是與存儲空間相關聯(lián)的屬性,處理器核將這些數據保存在協(xié)處理器CP15的一些寄存器中。通常域的個數為8個,編號為從0~7。
域的大小和起始地址保存在CP15的寄存器c6中。大小可以是4KB~4GB的任何2的乘冪。域的起始地址必須是其大小的倍數。比如,一個定義為4KB的域其起始地址可以是0x12345000,而一個大小定義為8KB的域起始地址只能是0x2000的倍數。
另外,操作系統(tǒng)可以為這些域分配更多的屬性:訪問權限、cache和寫緩存。存儲器基于當時的處理器模式(管理模式或用戶模式)可以設定這些區(qū)域的訪問權限為讀/寫、只讀和不可訪問。
當處理器訪問主存的一個域時,MPU比較該域的訪問權限屬性和當時的處理器模式。如果請求符合域的訪問標準,則MPU允許內核讀/寫主存;如果存儲器請求不符號域的訪問標準,將產生一個異常信號。
異常信號被送到處理器核。處理器核執(zhí)行一個異常向量,然后跳轉到異常處理程序,異常處理程序判斷異常類型為預取指或數據中止,然后根據異常類型,跳轉到相應的服務例程。
對于ARM處理器,存儲空間的某一部分可以被分配給一個以上的區(qū)域。也就是說域可以重疊。在重疊的域內,可以設置域的優(yōu)先級。在分配訪問權限時重疊域比非重疊域有更大的靈活性。后面一節(jié)將會詳細介紹域的重疊。
存儲器相關文章:存儲器原理
評論