在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ARM中斷異常處理的基本術語

CHANBAEK ? 來源:嵌入式修煉手冊 ? 作者:Major Lin ? 2023-07-24 09:57 ? 次閱讀

異常處理的基本術語

中斷搶占 Preemption

如果異常的優先級高于當前執行優先級,則可以先發制人當前執行。 當一個異常優先于另一個異常時,這些異常被稱為嵌套異常。

中斷返回 Return

當異常處理程序完成時,就會發生這種情況。 處理器彈出堆棧,并將處理器狀態恢復到中斷發生前的狀態。

末尾連續中斷 Tail-chaining

這種機制加快了異常服務。在異常處理程序完成后或返回操作期間,如果有符合異常輸入要求的掛起異常,則跳過堆棧彈出,控制直接傳輸到新的異常處理程序。

遲到中斷 Late arriving interrupts

這種機制可以有效的提高高優先級搶占中斷速度。如果在為上一個異常保存狀態期間發生更高優先級異常,處理器將切換以處理高優先級異常,并啟動該高優先級異常的向量獲取。狀態保存可能會受到當前中斷和遲到的更高優先級中斷的影響,具體取決于原始異常和延遲到達異常的堆棧要求。從延遲到達異常的異常處理程序返回時,系統會通過末尾連續中斷的方式處理懸起的低優先級中斷。

中斷進入

當處理器正在處理中斷或者處于線程模式的時候,如果此時有更高優先級的異常事件發生,處理器就會開始進入異常處理流程,在這種情況下,新的中斷會搶占正在處理的低優先級的中斷。

高優先級中斷打斷低優先級中斷的情況稱為中斷嵌套。

如果處理器在處理中斷的過程中,發生了優先級較低的中斷,那么這個低優先級的中斷會懸起(pending),處理器必須在處理完當前中斷之后才會通過末尾連續的中斷方式處理低優先級中斷。

當處理器接受異常時,除非異常是尾鏈或延遲到達的異常,否則處理器會將信息推送到當前堆棧中。此操作稱為壓棧,壓入堆棧數據結構稱為堆棧Frame。

如果浮點上下文處于活動狀態,Cortex-M33處理器可以在中斷處理過程中自動將浮點處理的數據壓入堆棧。下圖顯示了當堆棧上中斷或異常時Cortex-M33處理器堆棧數據結構:

  • 具有浮點狀態。
  • 沒有浮點狀態。

圖片
堆棧數據結構

在未分配浮點狀態的堆棧空間時,堆棧結構與沒有FPU的Armv8-M實現相同。

上圖中無論是否處于浮點狀態,處理器狀態結構體(state context)都會保存在堆棧中。

如果實現了安全擴展,當非安全異常搶占安全狀態運行的軟件時,處理器會將額外的其他上下文信息將保存到堆棧中,并清除壓入過堆棧的寄存器,以確保非安全軟件沒有不會讀取到安全數據,如下圖所示。

圖片
有TrustZone時的堆棧數據結構

如果浮點上下文處于活動狀態,Cortex-M33處理器會自動將浮點狀態堆疊到堆棧幀中。有兩種幀格式包含浮點上下文。如果從安全狀態中提取異常并設置了FPCR.TS,則系統還需要保存額外的浮點上下文。在所有其他情況下,系統堆棧僅保存標準浮點上下文,如下圖所示。

圖片
包含浮點額外上下文的堆棧數據結構

處理器將會根據不同的觸發條件決定是否需要保存額外的浮點信息上下文數據。

在中斷發生的時候,系統總是直接使用當前的堆棧指針來進行壓棧操作。例如,如果異常從安全狀態帶到非安全處理程序,則使用安全堆棧指針來保存狀態。

壓棧后,堆棧指針會立即指向堆棧幀中的最低地址。

堆棧數據包含中斷返回地址。這是中斷程序中下一個指令的地址。處理器在中斷返回時候通過這個值恢復PC,以便中斷的程序恢復。

在處理器進行壓棧操作的同時,處理器執行中斷向量獲取,從中斷向量表中讀取中斷處理程序開始地址。壓棧完成后,處理器開始執行中斷處理程序。同時,處理器將EXC_RETURN值寫入LR。此值用于在異常處理程序完成后觸發異常返回。

如果中斷進入期間沒有發生更高的優先級中斷,處理器將開始執行異常處理程序,并自動將相應掛起中斷的狀態更改為活動狀態。

如果在中斷處理期間發生另一個更高的優先級異常,處理器將開始執行此異常的異常處理程序,并且不會更改早期異常的掛起狀態。這種狀態就是中斷延遲。

異常返回

當處理器處于處理程序模式,并且執行以下指令之一試圖將PC設置為EXC_RETURN值時,就會發生異常返回:

  • 加載PC的POPLDM指令。
  • 加載PC的LDR指令
  • 使用任何寄存器的BX指令。

使用安全擴展實現中的異常返回

處理器在中斷進入時將EXC_RETURN值保存到LR。異常處理機制依賴于此值來檢測處理器何時完成異常處理程序。當處理器將與此模式匹配的值加載到PC時,它會檢測到該操作不是正常的分支操作,而是異常是完整的。因此,它開始異常返回序列。EXC_RETURN值的位[6:0]表示所需的返回堆棧、處理器模式、安全狀態和堆棧框架,如下表所示。

表2-22異常返回行為

BitNameFunction
[31:24]PREFIX表示這是一個EXC_RETURN值。
此字段讀為0b11111111。
[23:7]保留,RES1。
[6]S指示寄存器是否已推送到安全堆棧或非安全堆棧。0表示使用非安全堆棧。1表示使用安全堆棧。
[5]DCRS指示默認堆棧規則是否適用,或者被調用方寄存器是否已經在堆棧上。0表示跳過被調用方保存的寄存器的堆棧。1表示遵循堆棧的默認規則。
[4]FType在具有主點和浮點擴展的PE中:0表示PE在堆棧上為FP上下文分配了空間。1表示PE沒有為FP上下文在堆棧上分配空間。
在沒有浮點擴展的PE中,此位是保留的,RES1。
[3]Mode指示堆疊的模式。0表示Handler模式。1表示線程(Thread)模式。
[2]SPSEL指示哪個堆棧包含異常堆棧幀。0表示主堆棧指針。1表示進程堆棧指針。
[1]保留,RES0。
[0]ES指示被異常的安全狀態。0不安全。1安全。

沒有安全擴展系統中的異常返回

處理器在中斷進入時將EXC_RETURN值保存到LR。處理器的異常處理機制依賴于此值來檢測處理器何時完成異常處理程序。當處理器將與此模式匹配的值加載到PC時,它會檢測到該操作不是正常的分支操作,而是異常是完整的。因此,它開始異常返回序列。EXC_RETURN值的位[6:0]表示所需的返回堆棧、處理器模式和堆棧幀,如下表所示。

表2-23異常返回行為

比特姓名功能
[31:24]PREFIX表示這是一個EXC_RETURN值。
此字段讀為0b11111111。
[23:7]保留,RES1。
[6]保留,RES0。
[5]保留,RES1。
[4]FType在具有主點和浮點擴展的PE中:0表示PE在堆棧上為FP上下文分配了空間。1表示PE沒有為FP上下文在堆棧上分配空間。
在沒有浮點擴展的PE中,此位是保留的,RES1。
[3]Mode指示堆疊的模式。0表示Handler模式。1表示線程(Thread)模式。
[2]SPSEL指示哪個堆棧包含異常堆棧幀。0表示主堆棧指針。1表示線程堆棧指針。
[1:0]保留,RES0。

系統的工作模式

線程模式(Thread mode)

處理器復位或異常退出時為此模式。此模式下的代碼可以是特權代碼也可以是用戶代碼,通過CONTROL[0]控制。

處理模式(Handler mode)

出現異常(包括中斷)時進入此模式,此模式下所有代碼為特權訪問。

特權訪問

對處理器資源擁有完全訪問限權;處理器復位后進入此訪問模式;清零 CONTROL[0]進入用戶模式。

用戶訪問

禁止訪問多數系統寄存器。只能通過進入異常(中斷)來返回特權模式。進入異常前是用戶級訪問,則退出異常時自動回到用戶及,除非在異常中修改CONTROL[0]位。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19291

    瀏覽量

    229907
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9097

    瀏覽量

    367653
  • 中斷
    +關注

    關注

    5

    文章

    898

    瀏覽量

    41513
  • 異常處理
    +關注

    關注

    0

    文章

    14

    瀏覽量

    7290
收藏 人收藏

    評論

    相關推薦

    什么是ARM中斷事件?ARM中斷異常處理具體過程

    ARM處理器是一種流行的處理器架構,用于許多現代移動設備和嵌入式系統中。中斷異常ARM
    發表于 09-05 15:45 ?1915次閱讀
    什么是<b class='flag-5'>ARM</b><b class='flag-5'>中斷</b>事件?<b class='flag-5'>ARM</b><b class='flag-5'>中斷</b><b class='flag-5'>異常</b><b class='flag-5'>處理</b>具體過程

    arm異常處理方法

    ARM異常處理:只要正常的程序流被暫時中止,處理器就進入異常模式。例如響應一個來自外設的中斷。在
    發表于 04-20 10:52

    ARM異常中斷處理流程分析

    現場,在從異常中斷處理程序退出時,要恢復被中斷的程序的執行現場。本文討論ARM體系中的異常中斷機制。AR
    發表于 08-28 08:09

    關于ARM異常中斷處理機制研究

    一.ARM處理異常及其對應的模式當一個異常發生時,ARM處理器總是切換到
    發表于 04-18 08:34 ?2662次閱讀
    關于<b class='flag-5'>ARM</b>核<b class='flag-5'>異常</b>與<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>機制研究

    ARM體系中的異常中斷及其應用

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

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

    3.4 異常中斷處理 異常中斷是用戶程序中最基本的一種執行流程和形態。這部分主要對ARM架構下的異常中
    發表于 10-18 13:29 ?1次下載

    ARM異常中斷問題詳情分析總結

    ARM異常中斷的類型問題分析總結 一、ARM異常中斷的類型: 異常中斷名稱 含義 復位(Reset) 當
    發表于 04-05 10:51 ?1315次閱讀

    如何理解ARM異常中斷和向量表

    以前,我一直很疑惑這個“ ARM異常中斷以 及他們的 向量表 ”是怎么回事,他們到底是怎么實現的,沒有想到今天偶然看到(ARM System Developers Guide
    發表于 06-14 10:34 ?4302次閱讀
    如何理解<b class='flag-5'>ARM</b><b class='flag-5'>異常</b>、<b class='flag-5'>中斷</b>和向量表

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

    ARM異常中斷發生時,系統執行完當前指令后,將跳轉到相應的異常中斷處理程序處執行。當異常中斷處理
    的頭像 發表于 06-17 10:05 ?8104次閱讀

    ARM異常中斷發生時的處理措施

    外部中斷請求(IRQ) 當處理器的外部中斷請求引腳有效,而且CPSR的寄存器的I控制位被清除時,處理器產生外部中斷請求異常中斷。系統中個外設
    的頭像 發表于 08-27 14:21 ?2621次閱讀

    處理器中異常中斷解決

    異常是能夠引起程序流偏離正常流程的事件,當異常發生時,正在執行的程序就會被掛起,處理器轉而執行一塊與該事件相關的代碼(異常處理)。事件可以是
    的頭像 發表于 10-12 17:14 ?5099次閱讀

    arm處理器有哪些中斷源?arm處理器對異常中斷的響應過程

    arm處理器有哪些中斷源?arm處理器對異常中斷的響應過程?
    的頭像 發表于 10-19 16:35 ?1463次閱讀

    ARM中的異常中斷是如何實現進入中斷程序的?如何進入呢?

    ARM中的異常中斷是如何實現進入中斷程序的?如何進入呢? 在計算機系統中,異常中斷是兩個常見的概念。 在
    的頭像 發表于 10-19 16:36 ?1042次閱讀

    arm中斷是怎么實現的

    ARM中斷的實現是通過中斷控制器和異常模式實現的。ARM處理器通過
    的頭像 發表于 01-05 15:18 ?915次閱讀

    ARM處理器的異常中斷響應過程

    ARM處理器的異常中斷響應是嵌入式系統設計中一個至關重要的環節,它確保了系統在面對內部或外部事件時能夠穩定、可靠地運行。
    的頭像 發表于 09-10 11:18 ?968次閱讀
    主站蜘蛛池模板: 色老板在线视频一区二区| 欧美一级免费看| 人与牲动交xxxbbb| 最近2018中文字幕免费视频| 天天操女人| 久久精品伊人波多野结| 成人久久久久久| 久久成人国产精品青青| 黄色3急| 免费国产zzzwww色| 三级五月天| 欧美h视频| 日韩高清一级| 天使色吧| 一级做a爱片久久毛片| 无遮挡一级毛片| 有码视频在线观看| 四虎最新地址| 四虎在线免费视频| 欧美三级影院| 免费无遮挡很爽很污很黄| 韩国免费三片在线视频| 好硬好大好爽女房东在线观看| 国产乱人视频免费播放| 天天曰| 天堂资源8中文最新版在线| 呦交小u女国产秘密入口| sese久久| 久久综合色88| 丁香五月缴情综合网| 国产h在线观看| 国产亚洲卡二卡3卡4卡乱码| 精品一区二区三区在线视频| 亚洲成在线| 婷婷久久综合九色综合九七| 欧美就是色| 乱码中文字幕人成在线| 中文免费观看视频网站| 午夜精品福利视频| 岛国午夜精品视频在线观看| 97人洗澡人人澡人人爽|