EJTAG
EJTAG
EJTAG(Enhanced Joint Test Action Group)是MIPS公司根據IEEE 1149.1協議的基本構造和功能擴展而制定的規範,是一個硬體/軟體子系統,在處理器內部實現了一套基於硬體的調試特性,用於支持片上調試。
所有MIPS的微處理器或是包含MIPS核的SoC晶元組件均提供對EJTAG調試的支持。EJTAG介面利用JTAG的TAP(Test Access Port)訪問方式,將測試數據傳入或者傳出處理器核。EJTAG可實現的功能包括:訪問處理器的寄存器、訪問系統內存空間、設置軟體/硬體斷點、單步/多步執行等。如圖1所示,EJTAG調試功能模塊由4部分組成:CPU核內部的組件擴展,硬體斷點單元,調試控制寄存器(DCR)以及TAP介面。
處理器在某個調試例外(debug exception,如單步運行、斷點等)產生以後,進入到調試模式(debug mode),直到DERET指令執行以後從調試模式退出來。在這段時間裡,處理器執行調試例外處理過程。在調試例外處理過程中,調試軟體通過對TAP處理器的訪問操作,實現了對普通寄存器的訪問、協處理器的訪問、系統內存空間的訪問等功能。系統退出調試模式以後允許應用程序或是系統代碼繼續執行,直到遇到下一個調試例外
在體系結構的設計上,EJTAG並不需要與CPU緊密結合,但CPU必須提供調試寄存器、進入調試模式和在調試模式下執行指令的能力,更重要的是調試例外的優先順序必須高於其他處理器的例外(exception)。EJTAG調試是通過處理器的調試例外來實現的,調試例外將CPU從非調試模式(non-debug mode)轉到調試模式。在調試模式下也可以再發生調試例外,這種例外就叫做“調試模式例外(debug mode exception)”。
MIPS 4KC處理器提供的調試例外如表1所列。
當CPU執行了軟體斷點指令(SDBBP),或者發生了單步調試,或者在EJTAG迴路中產生了JtagBrk調試事件,或者發生了硬體斷點時,CPU就會產生調試例外。SDBBP是一個標準的MIPS指令集指令,軟體斷點的設置就是調試軟體通過把正常的應用程序代碼替換成軟體斷點指令來實現的。EJTAG支持指令斷點和數據斷點兩種類型的硬體斷點,指令斷點發生在處理器取指過程中,數據斷點發生載入/存儲傳輸過程中,它們可以設置在任何地址空間中,包括不能被改寫的ROM空間。調試例外發生后,CPU首先屏蔽地址錯誤異常和中斷異常,然後轉向調試例外處理程序的執行。調試例外處理程序是由調試軟體通過與TAP處理器的配合,利用EJTAG介面實現的。在調試模式下,CPU仍能夠正常地訪問協處理器和系統內存空間等處理器資源。