哈嘍,大家好,我是程序員秘書LittleG。
上篇:常見文件系統(tǒng)(ext4、squashfs、ubifs、jffs2、tmpfs、fat32/vfat、f2fs)特性匯總對(duì)比
前言
上學(xué)的時(shí)候玩過arm 32的板子,工作后一直接處的都是arm64架構(gòu)的產(chǎn)品,但最近公司有一款32的產(chǎn)品要搞,不得不再倒回去學(xué)習(xí)學(xué)習(xí)了。
正文
ARM32(ARMv7)異常分類
1. 同步異常(Synchronous Exceptions)
? 定義:由當(dāng)前執(zhí)行指令直接觸發(fā),異常處理返回地址精確指向觸發(fā)指令;
? 類型:
? 復(fù)位(RESET):硬件初始化時(shí)觸發(fā);
? 未定義指令(Undefined Instruction):執(zhí)行非法指令時(shí)觸發(fā);
? 軟件中斷(SWI):通過SWI指令主動(dòng)觸發(fā)系統(tǒng)調(diào)用;
? 預(yù)取指令異常(Prefetch Abort):指令預(yù)取階段內(nèi)存訪問失??;
? 數(shù)據(jù)訪問異常(Data Abort):數(shù)據(jù)加載/存儲(chǔ)階段內(nèi)存訪問失?。?/p>
2. 異步異常(Asynchronous Exceptions)
? 定義:由外部事件觸發(fā),與當(dāng)前指令無關(guān),返回地址不精確指向觸發(fā)源;
? 類型:
? IRQ(普通中斷):外設(shè)請(qǐng)求處理;
? FIQ(快速中斷):高優(yōu)先級(jí)外設(shè)請(qǐng)求;
------
ARM64(ARMv8)異常分類
1. 同步異常(Synchronous Exceptions)
? 定義:指令執(zhí)行直接導(dǎo)致,返回地址精確指向觸發(fā)指令,異常處理需立即響應(yīng);
? 類型:
? 系統(tǒng)調(diào)用(SVC/HVC/SMC):特權(quán)級(jí)別切換指令觸發(fā);
? 內(nèi)存訪問異常:缺頁、權(quán)限錯(cuò)誤等MMU相關(guān)錯(cuò)誤;
? 未定義指令/對(duì)齊錯(cuò)誤:執(zhí)行非法指令或未對(duì)齊內(nèi)存訪問;
? 調(diào)試異常:斷點(diǎn)、觀察點(diǎn)觸發(fā);
2. 異步異常(Asynchronous Exceptions)
? 定義:由外部硬件信號(hào)觸發(fā),與當(dāng)前指令無關(guān),處理可延遲;
? 類型:
? IRQ(普通中斷):外設(shè)請(qǐng)求,如定時(shí)器、網(wǎng)絡(luò)包到達(dá);
? FIQ(快速中斷):高優(yōu)先級(jí)外設(shè)請(qǐng)求;
? SError(系統(tǒng)錯(cuò)誤):總線錯(cuò)誤、硬件故障等不可恢復(fù)錯(cuò)誤;
------
關(guān)鍵差異說明
1. ARM32
? 同步異常涵蓋內(nèi)存訪問錯(cuò)誤(Prefetch/Data Abort),因其由指令執(zhí)行直接導(dǎo)致,需立即處理。
? 異步異常僅限中斷(IRQ/FIQ),無SError概念。
2. ARM64
? 同步異常更廣泛:包括系統(tǒng)調(diào)用、內(nèi)存錯(cuò)誤等需精確響應(yīng)的場(chǎng)景。
? 新增SError類別:歸類為異步異常,用于硬件錯(cuò)誤處理。
? 異常級(jí)別(EL0-EL3):同步異??稍贓L0觸發(fā)(如用戶態(tài)系統(tǒng)調(diào)用),異步異常僅由EL1及以上處理。
------
總結(jié)
? 同步/異步定義:通過指令相關(guān)性、返回地址精度區(qū)分。
? ARM64新增SError:歸類為異步異常,用于硬件錯(cuò)誤。
? 內(nèi)存訪問異常歸屬:Prefetch/Data Abort由指令觸發(fā),屬于同步異常。
按照ARM官方文檔定義,異常分類嚴(yán)格遵循指令執(zhí)行與外部事件的因果關(guān)系。
下期見~