• 正文
    • 前言
    • 正文
    • ARM64(ARMv8)異常分類
    • 關鍵差異說明
    • 總結
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

arm32和arm64異常分類梳理 | 同步異常、異步異常經(jīng)常搞得我暈頭轉向,現(xiàn)在終于搞清楚了

04/08 16:10
577
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

哈嘍,大家好,我是程序員秘書LittleG。

上篇:常見文件系統(tǒng)(ext4、squashfs、ubifs、jffs2、tmpfs、fat32/vfat、f2fs)特性匯總對比

前言

上學的時候玩過arm 32的板子,工作后一直接處的都是arm64架構的產(chǎn)品,但最近公司有一款32的產(chǎn)品要搞,不得不再倒回去學習學習了。

正文

ARM32(ARMv7)異常分類

1. 同步異常(Synchronous Exceptions)

? 定義:由當前執(zhí)行指令直接觸發(fā),異常處理返回地址精確指向觸發(fā)指令;

? 類型:

? 復位(RESET):硬件初始化時觸發(fā);

? 未定義指令(Undefined Instruction):執(zhí)行非法指令時觸發(fā);

? 軟件中斷(SWI):通過SWI指令主動觸發(fā)系統(tǒng)調用;

? 預取指令異常(Prefetch Abort):指令預取階段內(nèi)存訪問失??;

? 數(shù)據(jù)訪問異常(Data Abort):數(shù)據(jù)加載/存儲階段內(nèi)存訪問失?。?/p>

2. 異步異常(Asynchronous Exceptions)

? 定義:由外部事件觸發(fā),與當前指令無關,返回地址不精確指向觸發(fā)源;

? 類型:

? IRQ(普通中斷):外設請求處理;

? FIQ(快速中斷):高優(yōu)先級外設請求;

------

ARM64(ARMv8)異常分類

1. 同步異常(Synchronous Exceptions)

? 定義:指令執(zhí)行直接導致,返回地址精確指向觸發(fā)指令,異常處理需立即響應;

? 類型:

? 系統(tǒng)調用(SVC/HVC/SMC):特權級別切換指令觸發(fā);

? 內(nèi)存訪問異常:缺頁、權限錯誤等MMU相關錯誤;

? 未定義指令/對齊錯誤:執(zhí)行非法指令或未對齊內(nèi)存訪問;

? 調試異常:斷點、觀察點觸發(fā);

2. 異步異常(Asynchronous Exceptions)

? 定義:由外部硬件信號觸發(fā),與當前指令無關,處理可延遲;

? 類型:

? IRQ(普通中斷):外設請求,如定時器、網(wǎng)絡包到達;

? FIQ(快速中斷):高優(yōu)先級外設請求;

? SError(系統(tǒng)錯誤):總線錯誤、硬件故障等不可恢復錯誤;

------

關鍵差異說明

1. ARM32

? 同步異常涵蓋內(nèi)存訪問錯誤(Prefetch/Data Abort),因其由指令執(zhí)行直接導致,需立即處理。

? 異步異常僅限中斷(IRQ/FIQ),無SError概念。

2. ARM64

? 同步異常更廣泛:包括系統(tǒng)調用、內(nèi)存錯誤等需精確響應的場景。

? 新增SError類別:歸類為異步異常,用于硬件錯誤處理。

? 異常級別(EL0-EL3):同步異??稍贓L0觸發(fā)(如用戶態(tài)系統(tǒng)調用),異步異常僅由EL1及以上處理。

------

總結

? 同步/異步定義:通過指令相關性、返回地址精度區(qū)分。

? ARM64新增SError:歸類為異步異常,用于硬件錯誤。

? 內(nèi)存訪問異常歸屬:Prefetch/Data Abort由指令觸發(fā),屬于同步異常。

按照ARM官方文檔定義,異常分類嚴格遵循指令執(zhí)行與外部事件的因果關系。

下期見~

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄