摘要: 本文主要對Armv8體系的異常處理的基本概念進(jìn)行介紹。
關(guān)鍵字:Armv8、體系結(jié)構(gòu)、ARM架構(gòu)、異常處理、中斷、復(fù)位、同步異常、異步異常
1. 異常處理的基本概念
異常是任何可能導(dǎo)致當(dāng)前正在執(zhí)行的程序暫停并導(dǎo)致狀態(tài)更改以執(zhí)行代碼來處理該異常的事件。Armv8體系結(jié)構(gòu)將異常分為兩大類:同步異常和異步異常。
1.1同步異常
同步異常是指處理器執(zhí)行某條指令而直接導(dǎo)致的異常,往往需要在異常處理函數(shù)處理該異常之后,處理器才能繼續(xù)執(zhí)行。這意味著同步異常與執(zhí)行流同步。
常見的同步異常如下:
- 嘗試訪問一個異常等級不恰當(dāng)?shù)募拇嫫鳌?/span>
- 嘗試執(zhí)行沒有定義的指令
- 使用沒有對齊的SP
- 嘗試執(zhí)行與PC指針沒有對齊的指令。
1.2 異步異常
異步異常是指異常觸發(fā)的原因與處理器當(dāng)前正在執(zhí)行的指令無關(guān)的異常,中斷屬于異步異常的一種。因此與當(dāng)前指令流不同步。這意味著無法準(zhǔn)確保證何時會發(fā)生異步異常。Armv8-A 架構(gòu)只要求它在有限的時間內(nèi)發(fā)生。也可以暫時屏蔽異步異常。這意味著異步異常可以在發(fā)生異常之前處于掛起狀態(tài)。
常見的異步異常包括物理中斷和虛擬中斷。物理中斷是響應(yīng)于 PE 外部產(chǎn)生的信號而產(chǎn)生的。虛擬中斷可以由外部產(chǎn)生,也可以由在 EL2 處執(zhí)行的軟件產(chǎn)生。
Arm 架構(gòu)有兩種中斷類型,IRQ 和 FIQ。在舊版本的 Arm 架構(gòu)中,F(xiàn)IQ 被用作更高優(yōu)先級的快速中斷。在Armv8-A 和 Armv9-A 中 FIQ 與 IRQ 具有相同的優(yōu)先級。
IRQ 和 FIQ 具有獨(dú)立的路由控制,通常用于實(shí)現(xiàn)安全和非安全中斷。
Armv8.8-A 和 Armv9.3-A 添加了不可屏蔽中斷 (NMI) 。
2. 異常處理及返回
當(dāng)發(fā)生異常時,中斷當(dāng)前程序流程。處理元件 (PE) 將更新當(dāng)前狀態(tài)并分支到向量表中的某個位置。通常這個位置將包含通用代碼,用于將當(dāng)前程序的狀態(tài)推送到堆棧上,然后分支到進(jìn)一步的代碼。
當(dāng)發(fā)生異常時,必須保留當(dāng)前狀態(tài)以便可以返回。PE 會自動保存異常返回地址和當(dāng)前PSTATE.存儲在通用寄存器中的狀態(tài)必須由軟件保存。然后,PE 會將當(dāng)前更新為PSTATE體系結(jié)構(gòu)中為該異常類型定義的類型,并分支到向量表中的異常處理程序。
獲取異常的PSTATE位置存儲在 System registerSPSR_ELx中,其中 <x> 是獲取異常的異常級別的編號。異常返回地址存儲在 中ELR_ELx,其中 <x> 是異常被處理到的異常級別。
軟件可以通過從 AArch64 執(zhí)行 ERET 指令來啟動異常返回。這將根據(jù)SPSR_ELx的值配置返回的異常級別,其中 <x> 是返回的級別。SPSR_ELx包含要返回的目標(biāo)級別和目標(biāo)執(zhí)行狀態(tài)。
執(zhí)行 ERET 指令時,狀態(tài)將從SPSR_ELx 中恢復(fù),程序計數(shù)器將更新為ELR_ELx中的值。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
關(guān)于億道電子
億道電子技術(shù)有限公司(英文名稱:Emdoor Electronics Technology Co.,Ltd)是國內(nèi)資深的研發(fā)工具軟件提供商,公司成立于 2002 年,面向中國廣大的制造業(yè)客戶提供研發(fā)、設(shè)計、管理過程中使用的各種軟件開發(fā)工具,致力于幫助客戶提高研發(fā)管理效率、縮短產(chǎn)品設(shè)計周期,提升產(chǎn)品可靠性。
20 年來,先后與 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立戰(zhàn)略合作伙伴關(guān)系,并作為他們在中國區(qū)的主要分銷合作伙伴服務(wù)了數(shù)千家中國本土客戶,為客戶提供從芯片級開發(fā)工具、EDA 設(shè)計工具、軟件編譯以及測試工具、結(jié)構(gòu)設(shè)計工具、仿真工具、電氣設(shè)計工具、以及嵌入式 GUI 工具等等。億道電子憑借多年的經(jīng)驗(yàn)積累,真正的幫助客戶實(shí)現(xiàn)了讓研發(fā)更簡單、更可靠、更高效的目標(biāo)。

歡迎關(guān)注“億道電子”公眾號
了解更多研發(fā)工具軟件知識

首頁 > 新聞資訊
