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

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

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

ARM體系中異常中斷種類(lèi)及處理辦法

MCU開(kāi)發(fā)加油站 ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-04-25 11:08 ? 次閱讀

ARM體系中,通常有以下3種方式控制程序的執(zhí)行流程:

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

? 通過(guò)跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到特定的地址標(biāo)號(hào)處執(zhí)行,或者跳轉(zhuǎn)到特定的子程序處執(zhí)行。其中,B指令用于執(zhí)行跳轉(zhuǎn)操作;BL指令在執(zhí)行跳轉(zhuǎn)操作的同時(shí),保存子程序的返回地址;BX指令在執(zhí)行跳轉(zhuǎn)操作的同時(shí),根據(jù)目標(biāo)地址的最低位可以將程序狀態(tài)切換到Thumb狀態(tài);BLX指令執(zhí)行3個(gè)操作:跳轉(zhuǎn)到目標(biāo)地址處執(zhí)行,保存了子程序的返回地址,根據(jù)目標(biāo)地址的最低位可以將程序狀態(tài)切換到Thumb狀態(tài)。

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

ARM體系中異常中斷種類(lèi):

? 復(fù)位(Reset):當(dāng)處理器的復(fù)位引腳有效時(shí),系統(tǒng)產(chǎn)生復(fù)位異常中斷,程序跳轉(zhuǎn)到復(fù)位異常中斷處理程序處執(zhí)行。復(fù)位異常中斷通常用在下面兩種情況:系統(tǒng)加電時(shí)和系統(tǒng)復(fù)位時(shí)。跳轉(zhuǎn)到復(fù)位中斷向量處執(zhí)行,稱(chēng)為軟復(fù)位。

? 未定義指令(Undefined Instruction):當(dāng)ARM處理器或者是系統(tǒng)中的協(xié)處理器認(rèn)為當(dāng)前指令未定義時(shí),產(chǎn)生未定義的指令異常中斷。

? 軟件中斷(Software Interrupt SWI):這是一個(gè)由用戶(hù)定義的中斷指令??捎糜谟脩?hù)模式下的程序調(diào)用特權(quán)操作指令。在實(shí)時(shí)操作系統(tǒng)中可以通過(guò)該機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用。

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

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

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

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

對(duì)異常中斷的響應(yīng)過(guò)程(這幾點(diǎn)都是ARM核自己已經(jīng)完成的動(dòng)作):

? 保存處理器當(dāng)前狀態(tài)、中斷屏蔽位以及各條件標(biāo)志為。這是通過(guò)將當(dāng)前程序狀態(tài)寄存器CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對(duì)應(yīng)的SPSR寄存器中實(shí)現(xiàn)的。各異常中斷有自己的物理SPSR寄存器。

? 設(shè)置當(dāng)前程序狀態(tài)寄存器CPSR中相應(yīng)的為。包括:設(shè)置CPSR中的位,使處理器進(jìn)入當(dāng)前相應(yīng)的執(zhí)行模式(處理器模式);設(shè)置CPSR中的位,禁止IRQ中斷,當(dāng)進(jìn)入FIQ模式時(shí),禁止FIQ中斷。

? 將寄存器lr_mode設(shè)置成返回地址。

? 將程序計(jì)數(shù)器值(PC),設(shè)置成該異常中斷的中斷向量地址,從而跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。

從異常中斷處理程序中返回(這些返回動(dòng)作是需要自己寫(xiě)代碼完成的):

? 恢復(fù)被中斷的程序的處理器狀態(tài),即將SPSR_mode寄存器內(nèi)容復(fù)制到CPSR中。

? 返回到發(fā)生異常中斷的指令的下一條指令執(zhí)行,即將lr_mode寄存器的內(nèi)容復(fù)制到程序計(jì)算器PC中。

復(fù)位異常中斷處理程序不需要返回。在復(fù)位異常中斷處理程序開(kāi)始整個(gè)用戶(hù)程序的執(zhí)行,因而它不需要返回。

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

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119201
  • ARM處理器
    +關(guān)注

    關(guān)注

    6

    文章

    360

    瀏覽量

    41515

原文標(biāo)題:ARM異常中斷處理

文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開(kāi)發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM中斷體系和ZYNQ中斷體系詳解

    01、ARM中斷體系ARM體系,在存儲(chǔ)地址的低位,固化了一個(gè)32字節(jié)的硬件
    的頭像 發(fā)表于 11-27 11:01 ?5987次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>中斷</b><b class='flag-5'>體系</b>和ZYNQ<b class='flag-5'>中斷</b><b class='flag-5'>體系</b>詳解

    ARM S3C4510B系統(tǒng)異常中斷有什么特點(diǎn)?

    處理器模式和內(nèi)部多線程和外部多處理器的處理器結(jié)構(gòu)。在嵌入式系統(tǒng)具有重要意義的異常中斷技術(shù)在S3C4510B系統(tǒng)
    發(fā)表于 03-31 07:59

    ARM異常中斷處理流程分析

    現(xiàn)場(chǎng),在從異常中斷處理程序退出時(shí),要恢復(fù)被中斷的程序的執(zhí)行現(xiàn)場(chǎng)。本文討論ARM體系
    發(fā)表于 08-28 08:09

    教你一種ARM處理異常中斷的方法

    時(shí)間內(nèi)響應(yīng)中斷次數(shù)。二、異常源在ARM體系結(jié)構(gòu),存在7種異常
    發(fā)表于 08-18 15:26

    ARM處理中斷處理的編程實(shí)現(xiàn)

    摘要:本文首先簡(jiǎn)要概述了ARM處理器的異常中斷種類(lèi)、響應(yīng)和返回過(guò)程;然后重點(diǎn)討論了中斷解析程序的原理和實(shí)現(xiàn),并分別給出了普通中斷和向量
    發(fā)表于 03-11 12:18 ?809次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>處理</b>器<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>的編程實(shí)現(xiàn)

    ARM體系異常中斷及其應(yīng)用

    ARM體系異常中斷及其應(yīng)用
    發(fā)表于 09-22 16:51 ?4次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>體系</b><b class='flag-5'>中</b>的<b class='flag-5'>異常中斷</b>及其應(yīng)用

    ARM處理器編程模型之異常中斷處理分析

    3.4 異常中斷處理 異常中斷是用戶(hù)程序中最基本的一種執(zhí)行流程和形態(tài)。這部分主要對(duì)ARM架構(gòu)下的異常中
    發(fā)表于 10-18 13:29 ?1次下載

    ARM S3C4510B系統(tǒng)的異常中斷機(jī)制解析

    本文介紹A了RM S3C4510B系統(tǒng) 的 異常中斷 機(jī)制,包括異常中斷的分類(lèi),響應(yīng)與返回;中斷處理程序的安裝與調(diào)用;SWI,IRQ中斷的實(shí)
    發(fā)表于 02-03 05:32 ?1723次閱讀
    <b class='flag-5'>ARM</b> S3C4510B系統(tǒng)的<b class='flag-5'>異常中斷</b>機(jī)制解析

    ARM異常中斷問(wèn)題詳情分析總結(jié)

    ARM異常中斷的類(lèi)型問(wèn)題分析總結(jié) 一、ARM異常中斷的類(lèi)型:
    發(fā)表于 04-05 10:51 ?1245次閱讀

    ARM異常中斷的原因及處理措施

    當(dāng)ARM異常中斷發(fā)生時(shí),系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。當(dāng)異常中斷處理
    的頭像 發(fā)表于 06-17 10:05 ?7815次閱讀

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

    外部中斷請(qǐng)求(IRQ) 當(dāng)處理器的外部中斷請(qǐng)求引腳有效,而且CPSR的寄存器的I控制位被清除時(shí),處理器產(chǎn)生外部中斷請(qǐng)求異常中斷。系統(tǒng)
    的頭像 發(fā)表于 08-27 14:21 ?2512次閱讀

    ARM處理器對(duì)異常中斷的響應(yīng)過(guò)程

    當(dāng)異常中斷發(fā)生時(shí),程序?qū)?dāng)前執(zhí)行指令的下一條指令的地址存入新的異常模式的鏈接寄存器LR(R14_),以便程序在異常處理完后,能
    發(fā)表于 10-18 17:25 ?666次閱讀

    arm處理器有哪些中斷源?arm處理器對(duì)異常中斷的響應(yīng)過(guò)程

    arm處理器有哪些中斷源?arm處理器對(duì)異常中斷的響應(yīng)過(guò)程?
    的頭像 發(fā)表于 10-19 16:35 ?1246次閱讀

    ARM異常中斷是如何實(shí)現(xiàn)進(jìn)入中斷程序的?如何進(jìn)入呢?

    ARM異常中斷是如何實(shí)現(xiàn)進(jìn)入中斷程序的?如何進(jìn)入呢? 在計(jì)算機(jī)系統(tǒng),異常
    的頭像 發(fā)表于 10-19 16:36 ?820次閱讀

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

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