哈嘍,大家好,我是程序員秘書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í)行與外部事件的因果關系。
下期見~