當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]一些嵌入式系統(tǒng)使用多任務的操作和控制。這些系統(tǒng)必須提供一種機制來保證正在運行的任務不破壞其他任務的操作。即要防止系統(tǒng)資源和其他一些任務不受非法訪問。要達到這一目的通常有軟件保護和硬件保護兩種途徑。這里軟件保護是指僅靠軟件來保護系統(tǒng)資源。系統(tǒng)中無保護硬件或硬件沒啟動。在多任務的系統(tǒng)中,通常要運行操作系統(tǒng)來達到任務間同步與通信。

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é)將會詳細介紹域的重疊。

15.4.2內存訪問順序

當ARM處理器產生一個內存訪問信號時,內存保護單位MPU將負責檢查要訪問的地址是否在被定義的域中。

①如果地址不在任何域中,存儲器產生異常。如果內核預取指令則MPU產生預取中止異常;如果是存儲器數據請求,則產生數據中止異常。

②如果地址在多個域內,由MPU判斷域的有效級來決定存儲區(qū)域的訪問屬性。訪問屬性可以在CP15的寄存器中設定,可設定的位為C(Cache)、B(Buffer)、AP(AccessPermission)。這些屬性的具體定義為:

·C和B可以控制Cache和寫緩存屬性的Cache策略。例如,可以設置一個域使用回寫(write-back)策略訪問存儲器,而另一個域則以無Cache和無寫緩存方式訪問;

·AP(accesspermission)決定域是否可以被訪問。如果在當前處理器模式下,該域不能被訪問,MPU將產生一個存儲器訪問異常。

圖15.16顯示了一個存儲器訪問過程。

圖15.16存儲器訪問過程

15.4.3使能MPU

通過對協(xié)處理器CP15的寄存器c1中的bit[0]置1,可以使能存儲器保護單元MPU。在系統(tǒng)上電時,默認狀態(tài)是該位清零,所有保護域無效。

在使能MPU之前,至少一個域要被設定,而且該域的屬性和訪問權限要預先設定好。

注意

在數據和指令域分離的系統(tǒng)中,如ARM940T,在指令和數據域中都要有一個有效域被預先設定好。

另外,使能MPU的指令要設在有效的域中。如果在使能MPU之前,域的屬性和訪問權限沒有設定,那么系統(tǒng)的運行結果將不可預知。

當MPU無效(將協(xié)處理器CP15寄存器r1的bit[0]置0)時,整個內存區(qū)域都被處理器視為無Cache、無寫緩存、無存儲保護狀態(tài)。

15.4.4重疊域

域的定義在MPU的作用下可以重疊。當重疊的域被訪問時,MPU會判斷域的優(yōu)先權,決定使用那個域的屬性來操作重疊域。

域屬性優(yōu)先級的排列順序為:域7的有效級最高,其次為域6,域0的優(yōu)先級最低。

【例15.3】

假設將一個從0x3000起始的4KB地址空間定義為域2,其訪問屬性AP定義為0b10(AP=0b10,特權模式讀/寫訪問,用戶模式只讀)。

將起始地址為0x0的16KB地址空間定義為域1,其訪問屬性AP定義為0b01(AP=0b01,特權模式只讀)。

系統(tǒng)域劃分如圖15.17所示。

圖15.17重疊域的訪問

當處理器在用戶模式下執(zhí)行Load指令,從0x3010地址取數據時,0x3010地址既在域1中也在域2中,因為域2的屬性優(yōu)先級高于域1,所有MPU執(zhí)行域2的訪問屬性從0x3010地址取數據。域2是用戶模式可讀,所以不會發(fā)生數據異常。

在分配訪問權限時重疊區(qū)域比非重疊區(qū)域有更大的靈活性,它可以使內存的某個特定聯(lián)系內存單位在程序中擔任背景的作用,用來給一塊大存儲空間分配相同的屬性的低優(yōu)先級域。其他具有較高優(yōu)先級域的區(qū)域與該背景域某些部分重疊,用來改變已定義的背景域的較小子集的屬性。這樣,具有較高優(yōu)先級的域可以改變背景域屬性的子集。背景域可以用來保護一些睡眠狀態(tài)的存儲空間,使其不受非法訪問,而此時由另一個不同域控制下的背景域的其他部分可以處于活躍狀態(tài)。

15.4.5與MPU相關的CP15寄存器

與MPU相關的協(xié)處理器寄存器主要是c2,c3,c5及c6。另外還有寄存器c1中的1到2位。

(1)c1中的MPU相關位

c1的編碼格式如圖15.18所示。

圖15.18協(xié)處理器寄存器c1編碼格式

M(bit[0])控制控制MPU的使能。

·M=0:禁止MPU

·M=1:使能MPU

A(bit[1])選擇是否支持內存訪問地址對齊檢查。

·B=0:禁止地址對齊檢查

·B=1:使能地址對齊檢查

(2)c2中的MPU相關位

c2的編碼格式如圖15.19所示。

圖15.19協(xié)處理器寄存器c2編碼格式

寄存器位0~7分別對應域0~7的Cache屬性。位8~31應該設置成0。

注意

在數據和指令分離的系統(tǒng)中,通過MRC和MCR指令的第二個操作數<opcode2>來決定讀寫D-Cache和I-Cache屬性。

(3)c3中的MPU相關位

c3的編碼格式如圖15.20所示。

圖15.20協(xié)處理器寄存器c3編碼格式

寄存器位0~7分別對應域0~7的寫緩存屬性。位8~31應該設置成0。

當用指令MCR/MRC對c3進行讀寫時,第二個操作數<opcode2>將被忽略,在指令要設置成0。

當配置數據域時,域的Cache位和寫緩存區(qū)位一起決定域的訪問策略。寫緩存位有兩個用途:使能/禁止域的寫緩存和設置域的Cache寫策略。域的Cache位控制寫緩存位的作用。具體位分配見表15.16。

表15.16 Cache位和寫緩存位的分配策略

Cache位

寫緩存區(qū)位

域屬性

C=0

B=0

禁止Cache、禁止寫緩存

C=0

B=1

禁止Cache、使能寫緩存

C=1

B=0

使能Cache,域使用回寫策略

C=10

B=1

使能Cache,域使用直寫策略

(4)訪問權限寄存器c5

協(xié)處理器CP15的寄存器c5設置內存域的訪問權限。

寄存器c5的編碼格式如圖15.21所示。

圖15.21寄存器c5的編碼格式

讀寄存器c3的bits[15:0]存放域的AP(accesspermission,訪問權限),其中bits[2n+1:2n]對于域n的訪問權限。AP編碼與訪問權限的對應關系如表15.17所示。

表15.17 AP編碼與訪問權限的對應關系

AP編碼

管理者

用戶

00

不可訪問

不可訪問

01

讀/寫

不可訪問

10

讀/寫

只讀

11

讀/寫

讀/寫

對于Arm940T、Arm940T兩個內核版本來說,使用MRC和MCR指令對其進行讀寫時,第二個協(xié)處理器寄存器<CRm>將被忽略,指令中以c0的形式出現。對于指令數據統(tǒng)一的域,第二操作數<opcode2>要設成0,而對于數據和指令分離的系統(tǒng),如果opcode2=0,說明操作對數據域有效,如果opcode=1,說明操作對指令域有效。

注意

對于Arm946E-S和Arm1026EJ-S兩個內核版本,它們的訪問權限機制更復雜,采用的是擴展AP,擴展組AP位域編碼支持兩個增強的權限域,對其進行操作的MRC和MCR指令形式更復雜,有關更詳細的內容,請參加Arm公司的用戶手冊。

(5)域大小控制寄存器c6

Arm系統(tǒng)中通過寫協(xié)處理器c6來定義域的大小,通過MCR指令中第二個操作寄存器賦不同的值來指示是對哪個具體域進行操作。第二個操作寄存器取值為c0~c7,分別對應域0~域7。

每個域的起始地址必須對齊到其大小的整數倍。比如,一個域的大小位64KB,其起始地址可以是0x10000的整數倍的任何數。域的大小可以是4KB~4GB的2的任意乘冪。

寄存器c6的編碼格式如圖15.22所示。

圖15.22域大小控制寄存器c6編碼格式

編碼含義如表15.18所示

表15.18 寄存器c6編碼含義

位名稱

對應位

注釋

起始地址

[31:12]

保護域的第一個字節(jié)起始地址,具體見表2.18

SBZ

[11:6]

必須設為0

Size

[5:1]

設Size=N,則域尺寸為2N+1,其中11≤N≤31

E

[0]

域使能,E=1使能,E=0禁止

關于c6中bits[31:12],因為域的起始要是域大小的整倍數,域最小為4KB,所有域起始地址的bits[11:0]通常為0,不用設置。具體c6中起始地址的設置和c6中Size(bits[5:1])的對應關系如表15.19所示。

表15.19 域尺寸編碼

Size(bits[5:1])

域尺寸

起始地址(bits[31:12])

0b00000~0b01010

未定義

0b01011

4KB

0b01100

8KB

bit[12]必須為0

0b01101

16KB

bits[13:12]必須為0

0b01110

32KB

bits[14:12]必須為0

0b01111

64KB

bits[15:12]必須為0

0b10000

126KB

bits[16:12]必須為0

0b10001

256KB

bits[17:12]必須為0

0b10010

512KB

bits[18:12]必須為0

0b10011

1MB

bits[19:12]必須為0

0b10100

2MB

bits[20:12]必須為0

0b10101

4MB

bits[21:12]必須為0

0b10110

8MB

bits[22:12]必須為0

0b10111

16MB

bits[23:12]必須為0

0b11000

32MB

bits[24:12]必須為0

0b11001

64MB

bits[25:12]必須為0

0b11010

128MB

bits[26:12]必須為0

0b11011

256MB

bits[27:12]必須為0

0b11100

512MB

bits[28:12]必須為0

0b11101

1GB

bits[29:12]必須為0

續(xù)表

Size(bits[5:1])

域尺寸

起始地址(bits[31:12])

0b11110

2GB

bits[30:12]必須為0

0b11111

4GB

bits[31:12]必須為0

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉