JTAG也是一種國際標準測試協定(IEEE1149.1兼容),主要用於晶片內部測試。現在多數的高級器件都支持JTAG協定,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、數據輸入和數據輸出線。相關JTAG引腳的定義為:TCK為測試時鐘輸入;TDI為測試數據輸入,數據通過TDI引腳輸入JTAG接口;TDO為測試數據輸出,數據通過TDO引腳從JTAG接口輸出;TMS為測試模式選擇,TMS用來設定JTAG接口處於某種特定的測試模式;TRST為測試復位,輸入引腳,低電平有效。GNDTI還定義了一種叫SBW-JTAG的接口,用來在引腳較少的晶片上通過最少的利用引腳實現JTAG接口,它只有兩條線,SBWTCK,SBWTDIO。實際使用時一般通過四條線連線,VCC,SBWTCK,SBTDIO,GND,這樣就可以很方便的實現連線,又不會占用大量引腳。
JTAG最初是用來對晶片進行測試的,基本原理是在器件內部定義一個TAP(TestAccessPort測試訪問口)通過專用的JTAG測試工具對進行內部節點進行測試。JTAG測試允許多個器件通過JTAG接口串聯在一起,形成一個JTAG鏈,能實現對各個器件分別測試。現在,JTAG接口還常用於實現ISP(In-SystemProgrammable;線上編程),對FLASH等器件進行編程。JTAG編程方式是線上編程,傳統生產流程中先對晶片進行預編程現再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。JTAG接口可對PSD晶片內部的所有部件進行編程。
在硬體結構上,JTAG接口包括兩部分:JTAG連線埠和控制器。與JTAG接口兼容的器件可以是微處理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、ASIC或其它符合IEEE1149.1規範的晶片。IEEE1149.1標準中規定對應於數字積體電路晶片的每個引腳都設有一個移位暫存單元,稱為邊界掃描單元BSC。它將JTAG電路與核心邏輯電路聯繫起來,同時隔離核心邏輯電路和晶片引腳。由積體電路的所有邊界掃描單元構成邊界掃描暫存器BSR。邊界掃描暫存器電路僅在進行JTAG測試時有效,在積體電路正常工作時無效,不影響積體電路的功能。
JTAG的一些說明
通常所說的JTAG大致分兩類,一類用於測試晶片的電氣特性,檢測晶片是否有問題;一類用於Debug;一般支持JTAG的CPU內都包含了這兩個模組。
一個含有JTAGDebug接口模組的CPU,只要時鐘正常,就可以通過JTAG接口訪問CPU的內部暫存器和掛在CPU匯流排上的設備,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)內置模組的暫存器,象UART,Timers,GPIO等等的暫存器。上面說的只是JTAG接口所具備的能力,要使用這些功能,還需要軟體的配合,具體實現的功能則由具體的軟體決定。
例如下載程式到RAM功能。了解SOC的都知道,要使用外接的RAM,需要參照SOCDataSheet的暫存器說明,設定RAM的基地址,匯流排寬度,訪問速度等等。有的SOC則還需要Remap,才能正常工作。運行Firmware時,這些設定由Firmware的初始化程式完成。但如果使用JTAG接口,相關的暫存器可能還處在上電值,甚至時錯誤值,RAM不能正常工作,所以下載必然要失敗。要正常使用,先要想辦法設定RAM。在ADW中,可以在Console視窗通過Let命令設定,在AXD中可以在Console視窗通過Set命令設定。