那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

當(dāng)ARM異常中斷發(fā)生時(shí)的處理措施

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 2020-08-27 14:21 ? 次閱讀

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

1、引起異常的原因 對于ARM核,可以且只能識別7種處理器異常,每種異常都對應(yīng)一種ARM處理器模式,當(dāng)發(fā)生異常時(shí),ARM處理器就切換到相應(yīng)的異常模式,并調(diào)用異常處理 程序進(jìn)行處理。

(1)、指令執(zhí)行引起的異常 軟件中斷、未定義指令(包括所要求的協(xié)處理器不存在是的協(xié)處理器指令)、預(yù)取址中止(存儲器故障)、數(shù)據(jù)中止。

(2)、外部產(chǎn)生的中斷 復(fù)位、FIQ、IRQ。

2、ARM中異常中斷的種類

(1)、復(fù)位(RESET)

a、當(dāng)處理器復(fù)位引腳有效時(shí),系統(tǒng)產(chǎn)生復(fù)位異常中斷,程序跳轉(zhuǎn)到復(fù)位異常中斷處理程序處執(zhí)行,包括系統(tǒng)加電和系統(tǒng)復(fù)位。

b、通過設(shè)置PC跳轉(zhuǎn)到復(fù)位中斷向量處執(zhí)行稱為軟復(fù)位。

(2)、未定義的指令 當(dāng)ARM處理器或者是系統(tǒng)中的協(xié)處理器認(rèn)為當(dāng)前指令未定義時(shí),產(chǎn)生未定義的指令異常中斷,可以通過改異常中斷機(jī)制仿真浮點(diǎn)向量運(yùn)算。

(3)、軟件中斷 這是一個(gè)由用戶定義的中斷指令(SWI)??捎糜谟脩裟J较碌某绦蛘{(diào)用特權(quán)操作指令。在實(shí)時(shí)操作系統(tǒng)中可以通過該機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用。

(4)、指令與取終止(Prefech Abort) 如果處理器預(yù)取的指令的地址不存在,或者該地址不允許當(dāng)前指令訪問,當(dāng)被預(yù)取的指令執(zhí)行時(shí),處理器產(chǎn)生指令預(yù)取終止異常中斷。

(5)、數(shù)據(jù)訪問終止(DATAABORT) 如果數(shù)據(jù)訪問指令的目標(biāo)地址不存在,或者該地址不允許當(dāng)前指令訪問,處理器產(chǎn)生數(shù)據(jù)訪問終止異常中斷。

(6)、外部中斷請求(IRQ) 當(dāng)處理器的外部中斷請求引腳有效,而且CPSR的寄存器的I控制位被清除時(shí),處理器產(chǎn)生外部中斷請求異常中斷。系統(tǒng)中個(gè)外設(shè)通過該異常中斷請求處理服務(wù)。

(7)、快速中斷請求(FIQ) 當(dāng)處理器的外部快速中斷請求引腳有效,而且CPSR的F控制位被清除時(shí),處理器產(chǎn)生外部中斷請求異常中斷。

3、異常的響應(yīng)過程 除了復(fù)位異常外,當(dāng)異常發(fā)生時(shí),ARM處理器盡可能完成當(dāng)前指令(除了復(fù)位異常)后,再去處理異常。并執(zhí)行如下動作:

(1)、將引起異常指令的下一條指令的地址保存到新模式的R14中,若異常是從ARM狀態(tài)進(jìn)入,LR寄存器中保存的是下一條指令的地址(當(dāng)前PC+4或 PC+8,與異常的類型有關(guān));若異常是從Thumb狀態(tài)進(jìn)入,則在LR寄存器中保存當(dāng)前PC的偏移量,這樣,異常處理程序就不需要確定異常是從何種狀態(tài) 進(jìn)入的。例如:在軟件中斷異常SWI,指令MOV PC,R14_svc總是返回到下一條指令,不管SWI是在ARM狀態(tài)執(zhí)行,還是在Thumb狀 態(tài)執(zhí)行。

(2)、將CPSR的內(nèi)容保存到要執(zhí)行異常中斷模式的SPSR中。

(3)、設(shè)置CPSR相應(yīng)的位進(jìn)入相應(yīng)的中斷模式。

(4)、通過設(shè)置CPSR的第7位來禁止IRQ。如果異常為快速中斷和復(fù)位。則還要設(shè)置CPSR的第6位來禁止快速中斷。

(5)、給PC強(qiáng)制賦向量地址值。上面的異常處理操作都是由ARM核硬件邏輯自動完成的,程序計(jì)數(shù)器PC總是跳轉(zhuǎn)到相應(yīng)的固定地址。如果異常發(fā)生時(shí),處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時(shí),處理器自動切換到ARM狀態(tài),則異常處理返回時(shí),自動切換到Thumb狀態(tài)。

4、異常中斷處理返回 異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回:

(1)、將所有修改過的用戶寄存器從處理程序的保護(hù)棧中恢復(fù)。

(2)、將SPSR復(fù)制回CPSR中,將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。

(3)、若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。復(fù)位異常處理程序不需要返回。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19407

    瀏覽量

    231182
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9165

    瀏覽量

    369192
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7528

    瀏覽量

    164342

原文標(biāo)題:ARM異常中斷的原因及處理措施

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    電力系統(tǒng)應(yīng)急處理措施

    的重要性 電力系統(tǒng)應(yīng)急處理是指在電力系統(tǒng)發(fā)生突發(fā)事件時(shí),采取的一系列措施以最小化事件對電力供應(yīng)的影響。這些突發(fā)事件可能包括自然災(zāi)害、設(shè)備故障、人為破壞等。有效的應(yīng)急處理
    的頭像 發(fā)表于 01-18 09:42 ?198次閱讀

    串口通訊異常處理方法 串口設(shè)備連接方式

    串口通信異常處理方法 1. 異常檢測 在串口通信中,首先需要能夠檢測到異常情況。異常檢測可以通過以下幾種方式實(shí)現(xiàn): 硬件檢測 :利用串口硬件
    的頭像 發(fā)表于 12-27 09:53 ?681次閱讀

    單片機(jī)有哪些中斷類型

    單片機(jī)中斷是指在單片機(jī)執(zhí)行程序的過程中,當(dāng)外部設(shè)備或內(nèi)部條件發(fā)生某個(gè)特定事件時(shí),能夠暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行一個(gè)特定的服務(wù)程序(稱為中斷服務(wù)程序或
    的頭像 發(fā)表于 10-17 18:12 ?910次閱讀

    ARM處理器的工作模式和特點(diǎn)

    ARM處理器具有多種工作模式,這些模式根據(jù)處理器執(zhí)行的任務(wù)和當(dāng)前的狀態(tài)進(jìn)行劃分。常見的ARM處理器工作模式包括用戶模式(User Mode)
    的頭像 發(fā)表于 09-10 11:22 ?1431次閱讀

    ARM處理器的異常中斷響應(yīng)過程

    ARM處理器的異常中斷響應(yīng)是嵌入式系統(tǒng)設(shè)計(jì)中一個(gè)至關(guān)重要的環(huán)節(jié),它確保了系統(tǒng)在面對內(nèi)部或外部事件時(shí)能夠穩(wěn)定、可靠地運(yùn)行。
    的頭像 發(fā)表于 09-10 11:18 ?1142次閱讀

    【「ARM MCU嵌入式開發(fā) | 基于國產(chǎn)GD32F10x芯片」閱讀體驗(yàn)】+閱讀中斷

    一、前言 《ARM MCU嵌入式開發(fā) | 基于國產(chǎn)GD32F10x芯片》覆蓋的知識點(diǎn)非常全面,中斷在嵌入式開發(fā)中是必不可少的,尤其是裸板程序,也就是前后臺系統(tǒng)的項(xiàng)目開發(fā)。中斷是一種外設(shè)和處理
    發(fā)表于 09-01 23:59

    Panasonic松下焊接電異常處理

    電子發(fā)燒友網(wǎng)站提供《Panasonic松下焊接電異常處理.pdf》資料免費(fèi)下載
    發(fā)表于 08-19 14:24 ?0次下載

    ARM異常有哪些?ARM異常向量表基地址

    我們先回憶一下在單片機(jī)上的中斷的使用。
    的頭像 發(fā)表于 08-07 09:22 ?1161次閱讀
    <b class='flag-5'>ARM</b>的<b class='flag-5'>異常</b>有哪些?<b class='flag-5'>ARM</b>的<b class='flag-5'>異常</b>向量表基地址

    嵌入式C編程常用的異常錯誤處理

    。 3. 中斷服務(wù)程序 (Interrupt Service Routines, ISR) 在嵌入式系統(tǒng)中,中斷處理異常情況的常用方法。ISR用于
    發(fā)表于 08-06 14:32

    plc突然斷電會導(dǎo)致什么異常

    PLC(Programmable Logic Controller,可編程邏輯控制器)是一種廣泛應(yīng)用于工業(yè)自動化領(lǐng)域的控制器。當(dāng)PLC突然斷電時(shí),可能會導(dǎo)致一些異常情況,這些異常情況可能
    的頭像 發(fā)表于 07-25 10:11 ?1667次閱讀

    如何降低功率元器件發(fā)生絕緣品質(zhì)異常

    當(dāng)絕緣體內(nèi)存在氣泡(Void)或絕緣體間存在氣隙(Airgap)時(shí),在正常工作電壓下氣泡或氣隙容易發(fā)生局部放電(PartialDischarge,PD),導(dǎo)致絕緣劣化造成絕緣品質(zhì)異常。例如:樹酯內(nèi)有
    的頭像 發(fā)表于 05-28 10:51 ?326次閱讀
    如何降低功率元器件<b class='flag-5'>發(fā)生</b>絕緣品質(zhì)<b class='flag-5'>異常</b>

    RISC-V的中斷處理 中斷操作三個(gè)步驟

    中斷操作三個(gè)步驟: 1、中斷初始化 2、trap處理 3、用戶中斷處理
    的頭像 發(fā)表于 05-20 16:38 ?1380次閱讀

    STM32F429IGT6初始化LCD-TFT導(dǎo)致的晶振輸出異常怎么解決?

    干擾),此不影響產(chǎn)品的正常運(yùn)行,但是導(dǎo)致U盤在播放MP3歌曲時(shí)異常中斷,請問這是ST的stm32F429系列的硬件BUG嗎?
    發(fā)表于 04-01 07:48

    請問STM32IDE如何設(shè)定代碼到ITCM中運(yùn)行?

    摸索到了如何將變量定義到某個(gè)地址,但是不清楚如何讓代碼在指定RAM中運(yùn)行。按照設(shè)定變量的方式設(shè)定代碼,程序直接進(jìn)入了異常中斷{:16:}。
    發(fā)表于 03-26 06:08

    當(dāng)算術(shù)運(yùn)算期間發(fā)生除以零或下溢/溢出時(shí),ARM926EJ-S內(nèi)核的行為是什么?

    當(dāng)算術(shù)運(yùn)算期間發(fā)生除以零或下溢/溢出時(shí),ARM926EJ-S 內(nèi)核的行為是什么。 我知道有些架構(gòu)已經(jīng)定義了行為,或者可以將其配置為觸發(fā)中斷以響應(yīng)其中一個(gè)算術(shù)
    發(fā)表于 02-22 07:35
    博彩百家乐在线| 百家乐官网棋牌交| 百佬汇百家乐的玩法技巧和规则| 7人百家乐官网中号桌布| 青鹏棋牌官网下载| 百家乐长龙有几个| 赌百家乐官网波音备用网| 大发888游戏平台46| 博士百家乐现金网| 百家乐官网网络赌博地址| 德州扑克底牌| 澳门百家乐玩法心得技巧| 百家乐官网透视牌靴哪里有| 新全讯网| 斗地主百家乐的玩法技巧和规则| 网上百家乐官网是真的| 无极县| 大发888娱乐场下载dafaylcdown| 博九百家乐娱乐城| 百家乐官网官网下载| 大发888微信公众号2| 百家乐技巧微笑心法| 欧洲百家乐官网的玩法技巧和规则| 乾安县| 德州扑克起手牌| 百家乐的路图片| 十三张百家乐官网的玩法技巧和规则| 免费百家乐官网娱乐城| 大发888谨慎心态| 百家乐AG| 24山可以正针吗| 百家乐官网英皇娱乐城| 东山县| 大发888wf娱乐场下载| 百家乐真人娱乐平台| 百家乐官网园百乐彩| 电投百家乐官网网站| 百家乐官网单跳打法| 亿酷棋牌世界下载| 百家乐技巧看| 澳门百家乐的公式|