DataAbort簡(jiǎn)單分析
DataAbort中止表示當前存儲器訪(fǎng)問(wèn)不能被完成。
本文引用地址:http://dyxdggzs.com/article/148322.htm有兩種類(lèi)型的中止:
預取指中止: 發(fā)生在指令預取指過(guò)程中
數據中止: 發(fā)生在對數據訪(fǎng)問(wèn)時(shí)
1.預取指中止
當發(fā)生預取指中止時(shí)ARM7TDMI-S內核將預取的指令標記為無(wú)效但在指令到達流水線(xiàn)的執行階段時(shí)才進(jìn)入異常,如果指令在流水線(xiàn)中因為發(fā)生分支而沒(méi)有被執行,中止將不會(huì )發(fā)生。
在處理中止的原因之后不管處于哪種處理器操作狀態(tài)處理程序都會(huì )執行下面的指令
SUBSPC,R14_abt,#4
這個(gè)動(dòng)作恢復了PC和CPSR并重試被中止的指令
2.數據中止
當發(fā)生數據中止時(shí)根據指令的類(lèi)型產(chǎn)生不同的動(dòng)作
●數據轉移指令LDR,STR回寫(xiě)到被修改的基址寄存器中止處理程序必須注意這一點(diǎn)
●交還指令SWP中止好像沒(méi)有被執行過(guò)一樣中止必須發(fā)生在SWP指令進(jìn)行讀訪(fǎng)問(wèn)時(shí)
●塊數據轉移指令LDM,STM完成 當回寫(xiě)被設置時(shí)基址寄存器被更新在指示出現中止后。ARM7TDMI-S內核防止所有寄存器被覆蓋這意味著(zhù)ARM7TDMI-S內核總是會(huì )保護被中止的LDM指令中的r15(總是最后一個(gè)被轉移的寄存器)
中止的機制使指令分頁(yè)的虛擬存儲器系統能夠被實(shí)現。在這樣一個(gè)系統中,處理器允許產(chǎn)生仲裁地址。當某一地址的數據無(wú)法訪(fǎng)問(wèn)時(shí),存儲器管理單元MMU通知產(chǎn)生了中止,中止處理程序必須找出中止的原因,使請求的數據可以被訪(fǎng)問(wèn)并重新執行被中止的指令。應用程序不必知道可用存儲器的數量,也不必知道它的被中止時(shí)所處的狀態(tài)。在修復產(chǎn)生中止的原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執行下面的返回指令 SUBSPC,R14_abt,#8 這個(gè)動(dòng)作恢復了PC和CPSR并重試被中止的指令
評論