當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]1.ARM的7種工作模式ARMv4和ARMv5的指令集規(guī)定了ARM的7種工作模式,由寄存器CPSR[4:0]決定(見下表),分別是用戶(User)模式:ARM處理器正常的程序執(zhí)行狀態(tài)系統(tǒng)(System)模式:運行具有特權(quán)的操作系統(tǒng)任務(wù)快速中斷(FIQ)

1.ARM的7種工作模式

ARMv4和ARMv5的指令集規(guī)定了ARM的7種工作模式,由寄存器CPSR[4:0]決定(見下表),分別是

用戶(User)模式:ARM處理器正常的程序執(zhí)行狀態(tài)

系統(tǒng)(System)模式:運行具有特權(quán)的操作系統(tǒng)任務(wù)

快速中斷(FIQ)模式:用于處理緊急的中斷,如高速數(shù)據(jù)傳輸或通道處理

普通中斷(IRQ)模式:用于處理通用的中斷,通常在硬件中斷信號后進入該模式

管理(Supervisor)模式:操作系統(tǒng)使用的保護模式,是CPU上電后的默認模式,主要用于系統(tǒng)的初始化

數(shù)據(jù)訪問終止(Abort)模式:用于虛擬存儲及存儲保護,當訪問非法地址或讀取無權(quán)限內(nèi)存地址時進入該模式

未定義指令中止(Undifined)模式:當執(zhí)行未定義的指令時進入該模式,用于支持硬件協(xié)處理器的軟件仿真

CPSR[4:0]定義的ARM工作模式CPSR[4:0]處理器模式可訪問的寄存器0b10000USERR0~R14;PC;CPSR0b11111SYSTEMR0~R14;PC;CPSR0b10001FIQR0~R7;R8_FIQ-R14_fiq;PC;CPSR;SPSR_fiq0b10010IRQR0~R12;R13_irq-R14_irq;PC;CPSR;SPSR_irq0b10011SUPERVISORR0~R12;R13_svc-R14_svc;PC;CPSR;SPSR_svc0b10111ABORTR0~R12;R13_abt-R14_abt;PC;CPSR;SPSR_abt0b11011UNDEFINEDR0~R12;R13_und-R14_und;PC;CPSR;SPSR_und

現(xiàn)在ARMv6和ARMv7指令集做出了改變,由MSP(主堆棧指針)和PSP(進程堆棧指針),用戶模式和特權(quán)模式組合成4種工作模式,將其他模式整合到異常向量表中,干凈簡潔舒服啦。

2.ARM寄存器
ARM共有37個32位物理寄存器,7種工作模式下可訪問的寄存器見下表,User和System使用完全相同的物理寄存器。


2.1 R0~R7
所有工作模式下,R0-R7都分別指向同一個物理寄存器(共8個物理寄存器),它們未被系統(tǒng)用作特殊的用途。在中斷或異常處理進行工作模式轉(zhuǎn)換時,由于不同工作模式均使用相同的物理寄存器,可能造成寄存器中數(shù)據(jù)的破壞。
2.2 R8~R12

在User&System、IRQ、Svc、Abt和Und模式下訪問的R8~R12都是同一個物理寄存器(共5個物理寄存器);在FIQ模式下,訪問的R8_fiq~R12_fiq是另外獨立的物理寄存器(共5個物理寄存器)。

2.3 R13和R14

在User&System、IRQ、FIQ、Svc、Abt和Und訪問的R13_~R14都是各自模式下獨立的物理寄存器(共12個物理寄存器)。

R13在ARM指令中常用作堆棧指針(SP),但這只是一種習(xí)慣用法,用戶也可使用其他的寄存器作為堆棧指針。而在Thumb指令集中,某些指令強制性的要求使用R13作為堆棧指針。

由于處理器的每種工作模式均有自己獨立的物理寄存器R13,在用戶應(yīng)用程序的初始化部分,一般都要初始化每種模式下的R13,使其指向該工作模式的??臻g。這樣,當程序進入異常模式時,可以將需要保護的寄存器放入R13所指向的堆棧,而當程序從異常模式返回時,則從對應(yīng)的堆棧中恢復(fù),采用這種方式可以保證異常發(fā)生后程序的正常執(zhí)行。
R14稱為鏈接寄存器(Link Register),當執(zhí)行子程序調(diào)用指令(BL)時,R14可得到R15(程序計數(shù)器PC)的備份。在每一種工作模式下,都可用R14保存子程序的返回地址,當用BL或BLX指令調(diào)用子程序時,將PC的當前值復(fù)制給R14,執(zhí)行完子程序后,又將R14的值復(fù)制回PC,即可完成子程序的調(diào)用返回。以上的描述可用指令完成。

執(zhí)行以下任意一條指令:
MOV PC, LR
BX LR
在子程序入口處使用以下指令將R14存入堆棧:
STMFD SP!,{,LR}
對應(yīng)的,使用以下指令可以完成子程序返回:
LDMFD SP!,{,PC}
R14也可作為通用寄存器。
2.4 程序計數(shù)器PC(R15)
所有工作模式下訪問的R15都是同一個物理寄存器,由于ARM體系結(jié)構(gòu)采用了多級流水線技術(shù),對于ARM指令集而言,PC總是指向當前指令的下兩條指令的地址,即PC的值為當前指令的地址值加8個字節(jié)。

在ARM狀態(tài)下,R15[1:0]為0,R15[31:2]用于保存PC;在Thumb狀態(tài)下,R15[0]為0,R15[31:1]用于保存PC。

2.5 CPSR和SPSR

R16用作CPSR(CurrentProgram Status Register,當前程序狀態(tài)寄存器),CPSR可在任何工作模式下被訪問,它包括條件標志位、中斷禁止位、當前處理器模式標志位,以及其他一些相關(guān)的控制和狀態(tài)位。

每一種工作模式下又都有一個專用的物理狀態(tài)寄存器,稱為SPSR(Specified Program Status Register,備份的程序狀態(tài)寄存器),當異常發(fā)生時,SPSR用于保存CPSR的當前值,從異常退出時則可由SPSR來恢復(fù)CPSR。
User模式和System模式不屬于異常模式,它們沒有SPSR,當在這兩種模式下訪問SPSR,結(jié)果是未知的。

2.6 CPSR各標志位含義

31302928272676543210NZCVQDNM(RAZ)IFTM4M3M2M1M0

N(Negative)---設(shè)置成當前指令運算結(jié)果的bit[31]的值。當兩個有符號整數(shù)運算時,N=1運算結(jié)果為負數(shù),N=0運算結(jié)果為正。

Z(Zero)---Z=1運算結(jié)果為零;Z=0表示運算的結(jié)果不為零。對于CMP指令,Z=1表示進行比較的兩個數(shù)大小相等。

C(Carried out)---分四種情況討論
1)在加法指令中(包括比較指令CMP),當結(jié)果產(chǎn)生進位,則C=1,表示無符號運算發(fā)生上溢出;其他情況C=0。
2)在減法指令中(包括減法指令CMP),當運算發(fā)生借位,則C=0,表示無符號運算發(fā)生下溢出;其他情況下C=1。
3)對于包含移位操作的非加減運算指令,C中包含最后一次溢出的位的數(shù)值
4)對于其他非加減運算指令,C位的值通常不受影響
V(oVerflow)---對于加減運算指令,當操作數(shù)和運算結(jié)果為二進制的補碼表示的帶符號數(shù)時,V=1符號為溢出;通常其他指令不影響V位。

Q---在ARM V5的E系列處理器中,CPSR的bit[27]稱為Q標識位,主要用于指示增強的DSP指令是否發(fā)生了溢出。同樣的spsr的bit[27]位也稱為Q標識位,用于在異常中斷發(fā)生時保存和恢復(fù)CPSR中的Q標識位。在ARM V5以前的版本及ARM V5的非E系列的處理器中,Q標識位沒有被定義。

I和F---當I=1時禁止IRQ中斷,當F=1時禁止FIQ中斷

T---對于ARM V4以更高版本的T系列ARM處理器,T=0表示執(zhí)行ARM指令;T=1表示執(zhí)行Thumb指令
對于ARM V5以及更高版本的非T系列處理器,T=0表示執(zhí)行ARM指令;T=1表示強制下一條執(zhí)行的指令產(chǎn)生未定指令中斷

M[4:0]---定義了的ARM工作模式,具體見1中表CSPR[4:0]定義的ARM工作模式

3 控制程序的執(zhí)行流程的3種方式

1)在正常執(zhí)行過程中,每執(zhí)行一條ARM指令,程序計數(shù)器(PC)的值加4個字節(jié);每執(zhí)行一條Thumb指令,程序計數(shù)器寄存器(PC)加2個字節(jié)。整個過程是按順序執(zhí)行。

2)跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到特定的地址處執(zhí)行,或者跳轉(zhuǎn)到特定的子程序處執(zhí)行。其中,B指令用于執(zhí)行跳轉(zhuǎn)操作;BL指令在執(zhí)行跳轉(zhuǎn)操作同時,保存子程序的返回地址;BX指令在執(zhí)行跳轉(zhuǎn)操作同時,根據(jù)目標地址為可以將程序切換到Thumb狀態(tài);BLX指令執(zhí)行3個操作,跳轉(zhuǎn)到目標地址處執(zhí)行,保存子程序的返回地址,根據(jù)目標地址為可以將程序切換到Thumb狀態(tài)。

3)當異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。當異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷指令的下條指令處執(zhí)行。在進入異常中斷處理程序時,要保存被中斷程序的執(zhí)行現(xiàn)場,從異常中斷處理程序退出時,要恢復(fù)被中斷程序的執(zhí)行現(xiàn)場。


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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

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

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

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

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

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

關(guān)鍵字: 騰訊 編碼器 CPU

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

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

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

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

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

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

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

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

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

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉