新聞中心

ARM體系的7種工作模式

作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
一、ARM體系的CPU有以下7種工作模式
用戶模式(usr)       大多數(shù)程序運(yùn)行于用戶模式
特權(quán)模式系統(tǒng)模式(sys)      運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)
異常模式中斷模式(irq)      
快速中斷模式(fiq)     必須進(jìn)快處理中斷請求,并離開這個(gè)模式
管理模式(svc)      操作系統(tǒng)使用的保護(hù)模式
數(shù)據(jù)訪問終止模式(abt)  數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式
未定義指令終止模式(und) 未定義的指令執(zhí)行時(shí)進(jìn)入該模式

注解:

本文引用地址:http://butianyuan.cn/article/201611/317770.htm

可以通過軟件來進(jìn)行模式切換,或者發(fā)生各類中斷、異常時(shí)CPU自動進(jìn)入相應(yīng)的模式;

用戶模式與系統(tǒng)模式兩者使用相同的寄存器,都沒有SPSR(Saved Program Statement Register,已保存程序狀態(tài)寄存器),但系統(tǒng)模式比用戶模式有更高的權(quán)限;

系統(tǒng)復(fù)位或開機(jī)時(shí)則進(jìn)入到SVC模式下;

當(dāng)遇到軟中斷(SWI,Software Interrupt)時(shí),也將進(jìn)入到SVC模式下;

進(jìn)入特權(quán)模式是為了處理中斷、異常、或者訪問被保護(hù)的系統(tǒng)資源;

ARM中斷模式(IRQ)和快速中斷模式(FIQ)區(qū)別:

1. FIQ的優(yōu)先級比IRQ高。

2. IRQ可以被FIQ所中斷,但FIQ不能被IRQ所中斷,在處理FIQ時(shí)必須要關(guān)閉中斷。

3. FIQ模式下,比IRQ模式多了幾個(gè)獨(dú)立的寄存器。

不要小看這幾個(gè)寄存器,ARM在編譯的時(shí)候,如果你FIQ中斷處理程序足夠用這幾個(gè)獨(dú)立的寄存器來運(yùn)作,它就不會進(jìn)行通用寄存器的壓棧,這樣也省了一些時(shí)間。

4. FIQ的中斷向量地址在0x1C,而IRQ的在0x18。(也有的在FFFF001C以及FFFF0018)

寫過完整匯編系統(tǒng)的都比較明白這點(diǎn)的差別,18只能放一條指令(18-1c 4個(gè)字節(jié)),為了不與1C處的FIQ沖突,這個(gè)地方只能跳轉(zhuǎn),而FIQ不一樣,1C以后沒有任何中斷向量表了,這樣可以直接在1C處放FIQ的中斷處理程序,由于跳轉(zhuǎn)的范圍限制,至少少了一條跳轉(zhuǎn)指令。

5.IRQ和FIQ的響應(yīng)延遲有區(qū)別

IRQ的響應(yīng)并不及時(shí),從Verilog仿真來看,IRQ會延遲幾個(gè)指令周期才跳轉(zhuǎn)到中斷向量處,看起來像是在等預(yù)取的指令執(zhí)行完。FIQ的響應(yīng)不清楚,也許比IRQ快。

二、ARM體系的CPU有兩種工作狀態(tài)

1、ARM:32位,ARM狀態(tài)執(zhí)行字對齊的32位ARM指令。

2、THumb:16位,執(zhí)行半字對齊的16位指令

注:1、ARM和Thumb兩種狀態(tài)之間的切換不影響處理器的工作模式和寄存器的內(nèi)容。

2、ARM處理器在處理異常時(shí),不過處理器處于什么狀態(tài),則都將切換到ARM狀態(tài)。

  3、CPU上電處于ARM狀態(tài)

三、寄存器

ARM有31個(gè)通用的32位寄存器,6個(gè)32位程序狀態(tài)寄存器,共分為7組,有些寄存器是所有工作模式共用的,還有一些寄存器專屬于每一種工作模式;

R13——棧指針寄存器,用于保存堆棧指針;

R14——程序連接寄存器,當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),R14中得到R15的備份,而當(dāng)發(fā)生中斷或異常時(shí),R14保存R15的返回值;

R15——程序計(jì)數(shù)器;

快速中斷模式有7個(gè)備份寄存器R8—R14,這使得進(jìn)入快速中斷模式執(zhí)行很大部分程序時(shí),甚至不需要保存任何寄存器;

其它特權(quán)模式都含有兩個(gè)獨(dú)立的寄存器副本R13、R14,這樣可以令每個(gè)模式都擁有自己的堆棧指針和連接寄存器;

四、當(dāng)前程序狀態(tài)寄存器(CPSR)

CPSR中各位意義如下:

T位:1——CPU處于Thumb狀態(tài), 0——CPU處于ARM狀態(tài);

I、F(中斷禁止位): 1——禁止中斷, 0——中斷使能;

工作模式位:可以改變這些位,進(jìn)行模式切換;

五、程序狀態(tài)保存寄存器(SPSR)

當(dāng)切換進(jìn)入某一個(gè)特權(quán)模式時(shí),SPSR保存前一個(gè)工作模式的CPSR值,這樣,當(dāng)返回前一個(gè)工作模式時(shí),可以將SPSR的值恢復(fù)到CPSR中;

六、模式切換

當(dāng)異常發(fā)生,CPU進(jìn)入相應(yīng)的異常模式時(shí),以下工作是由CPU自動完成的:

1、在異常模式的R14中保存前一工作模式的下一條即將執(zhí)行的指令地址;

2、將CPSR的值到異常模式的SPSR中;

3、將CPSR的工作模式設(shè)為該異常模式對應(yīng)的工作模式;

4、令PC值等于這個(gè)異常模式在異常向量表中的地址,即跳轉(zhuǎn)去執(zhí)行異常向量表中的相應(yīng)指令;

從異常工作模式退回到之前的工作模式時(shí),需要由軟件來完成以下工作:

1、將異常模式的R14減去一個(gè)適當(dāng)?shù)闹担?或8)后賦給PC寄存器;

2、將異常模式SPSR的值賦給CPSR;



關(guān)鍵詞: ARM體系工作模

評論


技術(shù)專區(qū)

關(guān)閉