含義
一些嵌入式系統使用多任務的操作和控制。這些系統必須提供一種機制來保證正在運行的任務不破壞其他任務的操作。即要防止系統資源和其他一些任務不受非法訪問。嵌入式系統有專門的硬體來檢測和限制系統資源的訪問。它能保證資源的所有權,任務需要遵守一組由操作環境定義的、由硬體維護的規則,在硬體級上授予監視和控制資源程式的特殊許可權。受保護系統主動防止一個任務使用其他任務的資源。因此使用硬體主動監視系統比協調加強的軟體歷程,提供了更好的保護。
記憶體保護單元(MPU)是ARM中配備的有效保護系統資源硬體的一種,提供了記憶體區域保護功能。
實現
ARM處理器中的MPU使用“域(regions)”來對記憶體單元進行管理。域是與存儲空間相關聯的屬性,處理器核將這些數據保存在協處理器CP15的一些暫存器中。通常域的個數為8個,編號為從0~7。
域的大小和起始地址保存在CP15的暫存器c6中。大小可以是4KB~4GB的任何2的乘冪。域的起始地址必須是其大小的倍數。比如,一個定義為4KB的域其起始地址可以是0x12345000,而一個大小定義為8KB的域起始地址只能是0x2000的倍數。
另外,作業系統可以為這些域分配更多的屬性:訪問許可權、cache和寫快取。存儲器基於當時的處理器模式(管理模式或用戶模式)可以設定這些區域的訪問許可權為讀/寫、唯讀和不可訪問。
當處理器訪問主存的一個域時,MPU比較該域的訪問許可權屬性和當時的處理器模式。如果請求符合域的訪問標準,則MPU允許核心讀/寫主存;如果存儲器請求不符號域的訪問標準,將產生一個異常信號。
異常信號被送到處理器核。處理器核執行一個異常向量,然後跳轉到異常處理程式,異常處理程式判斷異常類型為預取指或數據中止,然後根據異常類型,跳轉到相應的服務例程。