7.4 JTAG與串行調試(SWD)
7.4.1 JTAG簡介
JTAG(Joint Test Action Group;聯合測試行動小組)是一種國際標準測試協議(IEEE 1149.1兼容),主要用於芯片內部測試。現在多數的高級器件都支持JTAG協議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別爲模式選擇、時鐘、數據輸入和數據輸出線。
JTAG最初是用來對芯片進行測試的,JTAG的基本原理是在器件內部定義一個TAP(Test Access Port;測試訪問口)通過專用的JTAG測試工具對進行內部節點進行測試。JTAG測試允許多個器件通過JTAG接口串聯在一起,形成一個JTAG鏈,能實現對各個器件分別測試。現在,JTAG接口還常用於實現ISP(In-System Programmable�在線編程),對FLASH等器件進行編程。
JTAG編程方式是在線編程,傳統生產流程中先對芯片進行預編程現再裝到板上因此而改變,簡化的流程爲先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。
具有JTAG口的芯片都有如下JTAG引腳定義:
TCK——測試時鐘輸入;
TDI——測試數據輸入,數據通過TDI輸入JTAG口;
TDO——測試數據輸出,數據通過TDO從JTAG口輸出;
TMS——測試模式選擇,TMS用來設置JTAG口處於某種特定的測試模式。
可選引腳TRST——測試復位,輸入引腳,低電平有效。
含有JTAG口的芯片種類較多,如CPU、DSP、CPLD等。
JTAG內部有一個狀態機,稱爲TAP控制器。TAP控制器的狀態機通過TCK和TMS進行狀態的改變,實現數據和指令的輸入。
JTAG標準定義了一個串行的移位寄存器。寄存器的每一個單元分配給IC芯片的相應引腳,每一個獨立的單元稱爲BSC(Boundary-Scan Cell)邊界掃描單元。這個串聯的BSC在IC內部構成JTAG迴路,所有的BSR(Boundary-Scan Register)邊界掃描寄存器通過JTAG測試激活,平時這些引腳保持正常的IC功能。
7.4.2 SWD簡介
ARM Cortex-M0 集成了調試的功能。支持串行線調試功能。ARMCortex-M0 被配置爲支持多達 4個斷點和 2 個觀察點。
串行線調試技術可作爲 CoreSight調試訪問端口的一部分,它提供了2 針調試端口,這是 JTAG 的低針數和高性能替代產品。
串行線調試 (SWD) 爲嚴格限制針數的包裝提供一個調試端口,通常用於小包裝微控制器,但也用於複雜 ASIC 微控制器,此時,限制針數至關重要,這可能是設備成本的控制因素。
SWD 將 5 針 JTAG 端口替換爲時鐘 + 單個雙向數據針,以提供所有常規 JTAG 調試和測試功能以及實時系統內存訪問,而無需停止微控制器或需要任何目標駐留代碼。SWD 使用 ARM 標準雙向線協議(在 ARM 調試接口第 5 版中定義),以標準方式與調試器和目標系統之間高效地傳輸數據。作爲基於 ARM 微控制器的設備的標準接口,軟件開發人員可以使用 ARM 和第三方工具供應商提供的各種可互操作的工具。
l 僅需要 2 個針 - 對於非常低的連接設備或包裝至關重要
l 提供與 JTAG TAP 控制器的調試和測試通信
l 使調試器成爲另一個 AMBA 總線主接口,以訪問系統內存和外設或調試寄存器
l 高性能數據速率 - 4 M 字節/秒 @ 50 MHz
l 低功耗 - 不需要額外電源或接地插針
l 較小的硅面積 - 2.5k 附加門數
l 低工具成本
l 可靠 - 內置錯誤檢測
l 安全 - 防止未連接工具時出現插針故障
SWD 提供了從 JTAG 的輕鬆且無風險的遷移,因爲兩個信號 SWDIO 和 SWCLK 重疊在 TMS 和 TCK 插針上,從而使雙模式設備能夠提供其他 JTAG 信號。在 SWD 模式下,可以將這些額外的 JTAG 針切換到其他用途。SWD 與所有 ARM 微控制器以及使用 JTAG 進行調試的任何微控制器兼容,它可以訪問 Cortex微控制器和 CoreSight 調試基礎結構中的調試寄存器。目前,批量生產設備中實現了串行線技術,例如,NuMicro M051系列微控制器。
ARM 多點 SWD 技術允許通過單個連接同時訪問任意數量的設備,以將 SWD 優點應用於基於多微控制器的複雜 SoC,從而爲複雜設備開發人員提供了低功耗 2 針調試和跟蹤解決方案。這對連接受限的產品特別重要,例如,手機,其中多晶片和多芯片是很常見的。
多點 SWD 完全向後兼容,從而保留現有的單一點到點主機設備連接,並允許在未選擇設備時將其完全關閉以降低功耗。
SWD串行調試具有以下特性:
l 支持ARM串行線調試模式;
l 可直接對所有存儲器、寄存器和外設進行調試;
l 調試階段不需目標資源;
l 4 個斷點。4 個指令斷點,可以用來重映射修補代碼的指令地址。2個數據比較器,可用來重映射修補文字的地址;
l 2 個數據觀察點,可用作跟蹤觸發器;
下表列出了與調試和跟蹤相關的JTAG與SWD不同管腳功能。有些功能與其它功能共用管腳,因此這些功能不能同時使用。
表7.4-1 JTAG與SWD功能引腳
管教名稱 |
類型 |
說明 |
TCK |
輸入 |
JTAG測試時鐘。該管腳在 JTAG模式下是調試邏輯的時鐘 |
TMS |
輸入 |
JTAG測試模式選擇。TMS 管腳負責選擇 TAP 狀態機的下一個狀態 |
TDI |
輸入 |
JTAG測試數據輸入。這是移位寄存器的串行數據輸入 |
TDO |
輸出 |
JTAG 測試數據輸出。這是移位寄存器的串行數據輸出。在 TCK 信號 的下降沿,數據將通過移位寄存器從器件向外輸出 |
TRST |
輸入 |
JTAG測試復位。可用TRST 管腳來複位調試邏輯中的測試邏輯 |
SWCLK |
輸入 |
串行線時鐘。這個管腳在串行線調試模式下是調試邏輯的時鐘 (SWDCLK)。在 JTAG 模式下該管腳爲 TCK 管腳。 |
SWDIO |
輸入/輸出 |
串行線調試數據輸入/輸出。外部調試工具可通過 SWDIO 管腳來與 NuMicro M051通訊,並對其進行控制。在 JTAG 模式下該管腳爲 TMS管腳 |
……………………………………………………
書籍名稱:ARM Cortex-M0原理與應用實踐