當(dāng)前位置:首頁 > 嵌入式 > 嵌入式分享
[導(dǎo)讀]在我們的工作中,偶爾使得ARM處理器進(jìn)入異常模式,那么進(jìn)入異常模式之后,ARM處理器是怎樣的呢,一起來看。關(guān)于“進(jìn)入異?!保涸诋惓0l(fā)生后,ARM7TDMI內(nèi)核會作以下工作:

在我們的工作中,偶爾使得ARM處理器進(jìn)入異常模式,那么進(jìn)入異常模式之后,ARM處理器是怎樣的呢,一起來看。關(guān)于“進(jìn)入異?!保涸诋惓0l(fā)生后,ARM7TDMI內(nèi)核會作以下工作:

1.在適當(dāng)?shù)腖R中保存下一條指令的地址,當(dāng)異常入口來自:

ARM狀態(tài),那么ARM7TDMI將當(dāng)前指令地址加4或加8復(fù)制(取決于異常的類型)到LR中;

為Thumb狀態(tài),那么ARM7TDMI將當(dāng)前指令地址加4或加8 (取決于異常的類型)復(fù)制到LR中;異常處理器程序不必確定狀態(tài)。

2.將CPSR復(fù)制到適當(dāng)?shù)腟PSR中;

3. 將CPSR模式位強(qiáng)制設(shè)置為與異常類型相對應(yīng)的值;

4.強(qiáng)制PC從相關(guān)的異常向量處取指。

ARM7TDMI內(nèi)核在中斷異常時置位中斷禁止標(biāo)志,這樣可以防止不受控制的異常嵌套。

注:異常總是在ARM狀態(tài)中進(jìn)行處理。當(dāng)處理器處于Thumb狀態(tài)時發(fā)生了異常,在異常向量地址裝入PC時,會自動切換到ARM狀態(tài)。

關(guān)于“退出異常”:當(dāng)異常結(jié)束時,異常處理程序必須:

1.將LR中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同;

2.將SPSR的值復(fù)制回CPSR;

3.清零在入口置位的中斷禁止標(biāo)志。

注:恢復(fù)CPSR的動作會將T、F和I位自動恢復(fù)為異常發(fā)生前的值。

下面利用,圖示來演示“進(jìn)入異?!边^程:

1. 程序在系統(tǒng)模式下運(yùn)行用戶程序,假定當(dāng)前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;

2. 用戶程序運(yùn)行時發(fā)生IRQ中斷,硬件完成以下動作:

(1)將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器

(2)置位I位(禁止IRQ中斷)

(3)清零T位(進(jìn)入ARM狀態(tài))

(4)設(shè)置MOD位,切換處理器模式至IRQ模式

(5)將下一條指令的地址存入IRQ模式的LR寄存器

(6)將跳轉(zhuǎn)地址存入PC,實現(xiàn)跳轉(zhuǎn)


圖示“退出異?!边^程:

在異常處理結(jié)束后,異常處理程序完成以下動作:

(1)將SPSR寄存器的值復(fù)制回CPSR寄存器;

(2)將LR寄存的值減去一個常量后復(fù)制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序。


下面講講“快速中斷請求”:快速中斷請求(FIQ)適用于對一個突發(fā)事件的快速響應(yīng),這得益于在ARM狀態(tài)中,快中斷模式有8個專用的寄存器可用來滿足寄存器保護(hù)的需要(這可以加速上下文切換的速度)。

不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會通過執(zhí)行下面的指令從中斷返回: SUBS PC,R14_fiq,#4

在一個特權(quán)模式中,可以通過置位CPSR中的F位來禁止FIQ異常。

關(guān)于“中斷請求”:中斷請求(IRQ)異常是一個由nIRQ輸入端的低電平所產(chǎn)生的正常中斷(在 具體的芯片中,nIRQ由片內(nèi)外設(shè)拉低,nIRQ是內(nèi)核的一個信號,對用戶不可見)。IRQ的優(yōu)先級 低于FIQ。對于FIQ序列它是被屏蔽的。任何時候在一個特權(quán)模式下,都可通過置位CPSR中的I 位來禁止IRQ。

不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會通過執(zhí)行下面的指令從中斷返回: SUBS PC,R14_fiq,#4

關(guān)于“中止”:中止發(fā)生在對存儲器的訪問不能完成時,中止包含兩種類型:

(1)預(yù)取中止:發(fā)生在指令預(yù)取過程中

(2)數(shù)據(jù)中止:發(fā)生在對數(shù)據(jù)訪問時

中止——預(yù)取指中止:當(dāng)發(fā)生預(yù)取中止時,ARM7TDMI內(nèi)核將預(yù)取的指令標(biāo)記為無效,但在指 令到達(dá)流水線的執(zhí)行階段時才進(jìn)入異常。如果指令在流水線中因為發(fā)生分支而沒有被執(zhí)行,中止將不會發(fā)生。在處理中止的原因之后,不管處于哪種處理器操作狀態(tài),處理程序都會執(zhí)行下面的指令恢復(fù)PC和CPSR并重試被中止的指令: SUBS PC,R14_abt,#4

中止——數(shù)據(jù)中止:當(dāng)發(fā)生數(shù)據(jù)中止后,根據(jù)產(chǎn)生數(shù)據(jù)中止的指令類型作出不同的處理:

(1)數(shù)據(jù)轉(zhuǎn)移指令(LDR、STR)回寫到被修改的基址寄存器。中止處理程序必須注意這一點;

(2)交換指令(SWP)中止好像沒有被執(zhí)行過一樣(中止必須發(fā)生在SWP指令進(jìn)行讀訪問時);

(3)塊數(shù)據(jù)轉(zhuǎn)移指令(LDM,STM)完成。 當(dāng)回寫被設(shè)置時,基址寄存器被更新。在指示出現(xiàn)中止后,ARM7TDMI內(nèi)核防止所有寄存器被覆蓋。這意味著ARM7TDMI內(nèi)核總是會保護(hù)被中止的LDM指令中的R15(總是最后一個被轉(zhuǎn)移的寄存器)。

在修復(fù)產(chǎn)生中止的原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執(zhí)行下面的返回指令 : SUBS PC,R14_abt,#8

關(guān)于“軟件中斷指令”:使用軟件中斷(SWI)指令可以進(jìn)入管理模式,通常用于請求一個特定的管理函數(shù)。SWI處理程序通過執(zhí)行下面的指令返回: MOVS PC,R14_svc

這個動作恢復(fù)了PC和CPSR并返回到SWI之后的指令。SWI處理程序讀取操作碼以提取SWI函數(shù)編號。

關(guān)于“未定義的指令”:當(dāng)ARM7TDMI處理器遇到一條自己和系統(tǒng)內(nèi)任何協(xié)處理器都無法處理的指令時,ARM7TDMI內(nèi)核執(zhí)行未定義指令陷阱。軟件可使用這一機(jī)制通過模擬未定義的協(xié)處理器指令來擴(kuò)展ARM指令集。

注:ARM7TDMI處理器完全遵循ARM結(jié)構(gòu)v4T,可以捕獲所有分類未被定義的指令位格式。在模擬處理了失敗的指令后,陷阱程序執(zhí)行下面的指令:MOVS PC,R14_svc

這個動作恢復(fù)了PC和CPSR并返回到未定義指令之后的指令。


關(guān)于“異常優(yōu)先級”:當(dāng)多個異常同時發(fā)生時,一個固定的優(yōu)先級系統(tǒng)決定它們被處理的順序:


注意:(1)未定義的指令和SWI異?;コ狻R驗橥粭l指令不能既是未定義的,又能產(chǎn)生有效的軟件中斷;

(2)當(dāng)FIQ使能,并且FIQ和數(shù)據(jù)中止異常同時發(fā)生時,ARM7TDMI內(nèi)核首先進(jìn)入數(shù)據(jù)中止處理程序,然后立即跳轉(zhuǎn)到FIQ向量。在FIQ處理結(jié)束后返回到數(shù)據(jù)中止處理程序。數(shù)據(jù)中止的優(yōu)先級必須高于FIQ以確保數(shù)據(jù)轉(zhuǎn)移錯誤不會被漏過。

本站聲明: 本文章由作者或相關(guān)機(jī)構(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)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

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

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(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 手機(jī) 衛(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ā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

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

北京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ù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

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