ARM Processor Exception
雖然依賴於硬件實現,當一個給定的預定義事件發生時, 大多數ARM處理器都提供了專用硬件來進入調試模式。
大多數較新的ARM處理器提供了捕捉異常的硬件單元。 如果使能該硬件單元,其效果類似於在選定的向量表入口
放置一個斷點, 這被成爲是 vector catch。 然而,
1) 一些ARM處理器, 例如 ARM7, 沒有提供向量捕捉硬件。 對於這些處理器, 調試硬件用指令斷點來模擬它。
2) 對於Cortex-M3, 其等同於在目標向量放置一個斷點。 Cortex-M3 具有一個有限的向量捕捉集合。
3) 如果異常向量位於 ROM 中, 調試硬件必須使用硬件斷點來模擬向量捕捉。
如果該處理器不具有向量捕捉支持, 這將減少能爲其他目的提供的硬件資源數量。
當調試硬件模擬一些早期的ARM處理器, 但是這些處理器又不具有向量捕捉硬件支持,
如果向量表位於 RAM 中間, 這時調試硬件使用軟件斷點。
當調試期間發生系統 RESET 時, 必須特別注意。 一些被調試目標硬件會在 RESET 後改變內存佈局,
因此含有軟件斷點的物理內存地址可能不在正確的復位地址。
(譯者注: u-boot 在運行時的重定位也類似。 因此在重定位前後, Trace32 debugger 必須手動計算一下新的地址偏移量)
如果被調試硬件使用軟件指令斷點來模擬復位向量, 下述警告信息可能被輸出到你的調試器終端:
Warning: A software breakpoint is being used to simulate reset vector catch.
This may fail to be hit if the memory is remapped when a reset occurs.
ARM 向量捕捉的精確行爲取決於處理器。 ARM9 處理器僅在特定的異常發生時菜金如調試模式。
其他處理器,比如 ARM11, 或者更老舊的使用斷點的處理器, 只要異常向量處的指令被執行, 即進入調試模式,
而無須考慮異常發生與否。