欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

ARM中斷異常處理的基本術(shù)語

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

異常處理的基本術(shù)語

中斷搶占 Preemption

如果異常的優(yōu)先級高于當(dāng)前執(zhí)行優(yōu)先級,則可以先發(fā)制人當(dāng)前執(zhí)行。 當(dāng)一個異常優(yōu)先于另一個異常時,這些異常被稱為嵌套異常。

中斷返回 Return

當(dāng)異常處理程序完成時,就會發(fā)生這種情況。 處理器彈出堆棧,并將處理器狀態(tài)恢復(fù)到中斷發(fā)生前的狀態(tài)。

末尾連續(xù)中斷 Tail-chaining

這種機制加快了異常服務(wù)。在異常處理程序完成后或返回操作期間,如果有符合異常輸入要求的掛起異常,則跳過堆棧彈出,控制直接傳輸?shù)叫碌漠惓L幚沓绦颉?/p>

遲到中斷 Late arriving interrupts

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

中斷進入

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

高優(yōu)先級中斷打斷低優(yōu)先級中斷的情況稱為中斷嵌套。

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

當(dāng)處理器接受異常時,除非異常是尾鏈或延遲到達的異常,否則處理器會將信息推送到當(dāng)前堆棧中。此操作稱為壓棧,壓入堆棧數(shù)據(jù)結(jié)構(gòu)稱為堆棧Frame。

如果浮點上下文處于活動狀態(tài),Cortex-M33處理器可以在中斷處理過程中自動將浮點處理的數(shù)據(jù)壓入堆棧。下圖顯示了當(dāng)堆棧上中斷或異常時Cortex-M33處理器堆棧數(shù)據(jù)結(jié)構(gòu):

  • 具有浮點狀態(tài)。
  • 沒有浮點狀態(tài)。

圖片
堆棧數(shù)據(jù)結(jié)構(gòu)

在未分配浮點狀態(tài)的堆??臻g時,堆棧結(jié)構(gòu)與沒有FPU的Armv8-M實現(xiàn)相同。

上圖中無論是否處于浮點狀態(tài),處理器狀態(tài)結(jié)構(gòu)體(state context)都會保存在堆棧中。

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

圖片
有TrustZone時的堆棧數(shù)據(jù)結(jié)構(gòu)

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

圖片
包含浮點額外上下文的堆棧數(shù)據(jù)結(jié)構(gòu)

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

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

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

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

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

如果中斷進入期間沒有發(fā)生更高的優(yōu)先級中斷,處理器將開始執(zhí)行異常處理程序,并自動將相應(yīng)掛起中斷的狀態(tài)更改為活動狀態(tài)。

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

異常返回

當(dāng)處理器處于處理程序模式,并且執(zhí)行以下指令之一試圖將PC設(shè)置為EXC_RETURN值時,就會發(fā)生異常返回:

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

使用安全擴展實現(xiàn)中的異常返回

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

表2-22異常返回行為

BitNameFunction
[31:24]PREFIX表示這是一個EXC_RETURN值。
此字段讀為0b11111111。
[23:7]保留,RES1。
[6]S指示寄存器是否已推送到安全堆?;蚍前踩褩?。0表示使用非安全堆棧。1表示使用安全堆棧。
[5]DCRS指示默認(rèn)堆棧規(guī)則是否適用,或者被調(diào)用方寄存器是否已經(jīng)在堆棧上。0表示跳過被調(diào)用方保存的寄存器的堆棧。1表示遵循堆棧的默認(rèn)規(guī)則。
[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指示被異常的安全狀態(tài)。0不安全。1安全。

沒有安全擴展系統(tǒng)中的異常返回

處理器在中斷進入時將EXC_RETURN值保存到LR。處理器的異常處理機制依賴于此值來檢測處理器何時完成異常處理程序。當(dāng)處理器將與此模式匹配的值加載到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。

系統(tǒng)的工作模式

線程模式(Thread mode)

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

處理模式(Handler mode)

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

特權(quán)訪問

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

用戶訪問

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

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

    關(guān)注

    68

    文章

    19432

    瀏覽量

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

    關(guān)注

    134

    文章

    9176

    瀏覽量

    369364
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    900

    瀏覽量

    41786
  • 異常處理
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7315
收藏 人收藏

    評論

    相關(guān)推薦

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

    ARM處理器是一種流行的處理器架構(gòu),用于許多現(xiàn)代移動設(shè)備和嵌入式系統(tǒng)中。中斷異常ARM
    發(fā)表于 09-05 15:45 ?2000次閱讀
    什么是<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異常中斷處理流程分析

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

    關(guān)于ARM異常中斷處理機制研究

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

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

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

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

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

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

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

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

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

    嵌入式系統(tǒng)原理及應(yīng)用教程之ARM異常中斷處理及編程的資料說明

    ARM體系結(jié)構(gòu)中,存在7種異常處理。當(dāng)異常發(fā)生時,處理器會把PC設(shè)置為一個特定的存儲器地址。這一地址放在被稱為向量表(vector tabl
    發(fā)表于 03-20 10:25 ?7次下載
    嵌入式系統(tǒng)原理及應(yīng)用教程之<b class='flag-5'>ARM</b><b class='flag-5'>異常中斷</b><b class='flag-5'>處理</b>及編程的資料說明

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

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

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

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

    處理器中異常中斷解決

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

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

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

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

    ARM中的異常中斷是如何實現(xiàn)進入中斷程序的?如何進入呢? 在計算機系統(tǒng)中,異常中斷是兩個常見的概念。 在
    的頭像 發(fā)表于 10-19 16:36 ?1119次閱讀

    arm中斷是怎么實現(xiàn)的

    ARM中斷的實現(xiàn)是通過中斷控制器和異常模式實現(xiàn)的。ARM處理器通過
    的頭像 發(fā)表于 01-05 15:18 ?988次閱讀

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

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