新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > DataAbort簡單分析

        DataAbort簡單分析

        作者: 時間:2012-10-22 來源:網絡 收藏

        中止表示當前存儲器訪問不能被完成。

        本文引用地址:http://www.104case.com/article/148322.htm

        有兩種類型的中止:

        預取指中止: 發生在指令預取指過程中

        數據中止:  發生在對數據訪問時

        1.預取指中止

        當發生預取指中止時ARM7TDMI-S內核將預取的指令標記為無效但在指令到達流水線的執行階段時才進入異常,如果指令在流水線中因為發生分支而沒有被執行,中止將不會發生。

        在處理中止的原因之后不管處于哪種處理器操作狀態處理程序都會執行下面的指令

        SUBSPC,R14_abt,#4

        這個動作恢復了PC和CPSR并重試被中止的指令

        2.數據中止

        當發生數據中止時根據指令的類型產生不同的動作

        ●數據轉移指令LDR,STR回寫到被修改的基址寄存器中止處理程序必須注意這一點

        ●交還指令SWP中止好像沒有被執行過一樣中止必須發生在SWP指令進行讀訪問時

        ●塊數據轉移指令LDM,STM完成 當回寫被設置時基址寄存器被更新在指示出現中止后。ARM7TDMI-S內核防止所有寄存器被覆蓋這意味著ARM7TDMI-S內核總是會保護被中止的LDM指令中的r15(總是最后一個被轉移的寄存器)

        中止的機制使指令分頁的虛擬存儲器系統能夠被實現。在這樣一個系統中,處理器允許產生仲裁地址。當某一地址的數據無法訪問時,存儲器管理單元MMU通知產生了中止,中止處理程序必須找出中止的原因,使請求的數據可以被訪問并重新執行被中止的指令。應用程序不必知道可用存儲器的數量,也不必知道它的被中止時所處的狀態。在修復產生中止的原因后,不管處于哪種處理器操作狀態,處理程序都必須執行下面的返回指令 SUBSPC,R14_abt,#8 這個動作恢復了PC和CPSR并重試被中止的指令



        關鍵詞: 分析 簡單 DataAbort

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阳山县| 泾源县| 梁平县| 长治市| 于田县| 友谊县| 馆陶县| 德化县| 桂阳县| 封开县| 连平县| 林州市| 怀柔区| 通渭县| 哈密市| 遂宁市| 桂平市| 内乡县| 凌海市| 富锦市| 遵化市| 华坪县| 阳谷县| 宣武区| 株洲县| 鄂尔多斯市| 深水埗区| 长葛市| 哈尔滨市| 潢川县| 长海县| 和静县| 辰溪县| 凤翔县| 关岭| 图木舒克市| 义马市| 宝丰县| 上高县| 瑞金市| 江都市|