ARM處理器工作模式詳解
一、存儲器格式(字對齊)
本文引用地址:http://dyxdggzs.com/article/201807/383614.htmArm體系結構將存儲器看做是從零地址開(kāi)始的字節的線(xiàn)性組合。從零字節到三字節放置第一個(gè)存儲的字(32位)數據,從第四個(gè)字節到第七個(gè)字節放置第二個(gè)存儲的字數據,一次排列。作為32位的微處理器,arm體系結構所支持的最大尋址空間為4GB。
存儲器格式
1、大端格式:高字節在低地址,低字節在高地址;
2、小端格式:高字節在高地址,低字節在低地址。
指令長(cháng)度
Arm微處理器的指令長(cháng)度是32位的,也可以為16位(thumb狀態(tài)下)。Arm微處理器中支持字節(8位),半字(16位),字(32位)三種數據類(lèi)型,其中,字需要4字節對齊,半字需要2字節對齊。
注:所謂的指令長(cháng)度是一條完整的指令的長(cháng)度,而不是單純的mov這3個(gè)字母長(cháng)度。
二、ARM體系的CPU有兩種工作狀態(tài)
1、ARM狀態(tài):處理器執行32位的字對齊的ARM指令;
2、Thumb狀態(tài):處理器執行16位的、半字對齊的Thumb指令。
在程序運行的過(guò)程中,可以在兩種狀態(tài)之間進(jìn)行相應的轉換。處理器工作狀態(tài)的轉變并不影響處理器的工作模式和相應寄存器中的內容。
CPU上電處于A(yíng)RM狀態(tài)。
三、ARM體系的CPU有以下7種工作模式
1、用戶(hù)模式(Usr):用于正常執行程序;
2、快速中斷模式(FIQ):用于高速數據傳輸;
3、外部中斷模式(IRQ):用于通常的中斷處理;
4、管理模式(svc):操作系統使用的保護模式;
5、數據訪(fǎng)問(wèn)終止模式(abt):當數據或指令預取終止時(shí)進(jìn)入該模式,可用于虛擬存儲以及存儲保護信盈達嵌入式企鵝要妖氣嗚嗚吧久零就要;
6、系統模式(sys):運行具有特權的操作系統任務(wù);
7、未定義指令中止模式(und):當未定義的指令執行時(shí)進(jìn)入該模式,可用于支持硬件。
CPU的模式可以簡(jiǎn)單的理解為當前CPU的工作狀態(tài),比如:當前操作系統正在執行用戶(hù)程序,那么當前CPU工作在用戶(hù)模式,這時(shí)網(wǎng)卡上有數據到達,產(chǎn)生中斷信號,CPU自動(dòng)切換到一般中斷模式下處理網(wǎng)卡數據(普通應用程序沒(méi)有權限直接訪(fǎng)問(wèn)硬件),處理完網(wǎng)卡數據,返回到用戶(hù)模式下繼續執行用戶(hù)程序。
特權模式
除用戶(hù)模式外,其它模式均為特權模式(Privileged Modes)。ARM內部寄存器和一些片內外設在硬件設計上只允許(或者可選為只允許)特權模式下訪(fǎng)問(wèn)。此外,特權模式可以自由的切換處理器模式,而用戶(hù)模式不能直接切換到別的模式。
異常模式
特權模式中除系統(system)模式之外的其他5種模式又統稱(chēng)為異常模式。它們除了可以通過(guò)在特權下的程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。比如硬件產(chǎn)生中斷信號進(jìn)入中斷異常模式,讀取沒(méi)有權限數據進(jìn)入中止異常模式,執行未定義指令時(shí)進(jìn)入未定義指令中止異常模式。其中管理模式也稱(chēng)為超級用戶(hù)模式,是為操作系統提供軟中斷的特有模式,正是由于有了軟中斷,用戶(hù)程序才可以通過(guò)系統調用切換到管理模式信盈達嵌入式物聯(lián)網(wǎng)一零吧五六零五四五吧。
(1)用戶(hù)模式
用戶(hù)模式是用戶(hù)程序的工作模式,它運行在操作系統的用戶(hù)態(tài),它沒(méi)有權限去操作其它硬件資源,只能執行處理自己的數據,也不能切換到其它模式下,要想訪(fǎng)問(wèn)硬件資源或切換到其它模式只能通過(guò)軟中斷或產(chǎn)生異常。
(2)系統模式
系統模式是特權模式,不受用戶(hù)模式的限制。用戶(hù)模式和系統模式共用一套寄存器,操作系統在該模式下可以方便的訪(fǎng)問(wèn)用戶(hù)模式的寄存器,而且操作系統的一些特權任務(wù)可以使用這個(gè)模式訪(fǎng)問(wèn)一些受控的資源。
(3)一般中斷模式
一般中斷模式也叫普通中斷模式,用于處理一般的中斷請求,通常在硬件產(chǎn)生中斷信號之后自動(dòng)進(jìn)入該模式,該模式為特權模式,可以自由訪(fǎng)問(wèn)系統硬件資源。
(4)快速中斷模式
快速中斷模式是相對一般中斷模式而言的,它是用來(lái)處理對時(shí)間要求比較緊急的中斷請求,主要用于高速數據傳輸及通道處理中。
(5)管理模式
管理模式是CPU上電后默認模式,因此在該模式下主要用來(lái)做系統的初始化,軟中斷處理也在該模式下,當用戶(hù)模式下的用戶(hù)程序請求使用硬件資源時(shí)通過(guò)軟件中斷進(jìn)入該模式。
(6)終止模式
中止模式用于支持虛擬內存或存儲器保護,當用戶(hù)程序訪(fǎng)問(wèn)非法地址,沒(méi)有權限讀取的內存地址時(shí),會(huì )進(jìn)入該模式,Linux下編程時(shí)經(jīng)常出現的segment fault通常都是在該模式下拋出返回的。
(7)
未定義模式
未定義模式用于支持硬件協(xié)處理器的軟件仿真,CPU在指令的譯碼階段不能識別該指令操作時(shí),會(huì )進(jìn)入未定義模式。
評論