當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > JTAG接口
JTAG是(Joint Test Action Group(聯(lián)合測(cè)試行為組織))的英文縮寫,該組織成立于1985 年,是由幾家主要的電子制造商發(fā)起制訂的PCB 和IC 測(cè)試標(biāo)準(zhǔn)。JTAG 主要應(yīng)用于:電路的邊界掃描測(cè)試和可編程芯片的在線系統(tǒng)編程。
JTAG的發(fā)展:
JTAG現(xiàn)在發(fā)展已經(jīng)成為了一種標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試。現(xiàn)今多數(shù)的高級(jí)器件都支持JTAG協(xié)議,如DSP、FPGA、ARM、部分單片機(jī)器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。相關(guān)JTAG引腳的定義為:TCK為測(cè)試時(shí)鐘輸入;TDI為測(cè)試數(shù)據(jù)輸入,數(shù)據(jù)通過(guò)TDI引腳輸入JTAG接口;TDO為測(cè)試數(shù)據(jù)輸出,數(shù)據(jù)通過(guò)TDO引腳從JTAG接口輸出;TMS為測(cè)試模式選擇,TMS用來(lái)設(shè)置JTAG接口處于某種特定的測(cè)試模式;TRST為測(cè)試復(fù)位,輸入引腳,低電平有效。GND
TI還定義了一種叫SBW-JTAG的接口,用來(lái)在引腳較少的芯片上通過(guò)少的利用引腳實(shí)現(xiàn)JTAG接口,它只有兩條線,SBWTCK,SBWTDIO。實(shí)際使用時(shí)一般通過(guò)四條線連接,VCC,SBWTCK,SBWTDIO,GND,這樣就可以很方便的實(shí)現(xiàn)連接,又不會(huì)占用大量引腳。比如STM32/8系列的芯片調(diào)試就有Serial wire調(diào)試模式,使用該方法可以在僅用4根線的情況下對(duì)芯片進(jìn)行程序下載和單步調(diào)試等功能。
JATG的作用和原理:
一個(gè)含有JTAG Debug接口模塊的CPU,只要時(shí)鐘正常,就可以通過(guò)JTAG接口訪問(wèn)CPU的內(nèi)部寄存器和掛在CPU總線上的設(shè)備,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)內(nèi)置模塊的寄存器,像UART,Timers,GPIO等等的寄存器。
JTAG中輸入/輸出的捕獲/模擬使用的是邊界掃描技術(shù)。
邊界掃描(Boundary-Scan)技術(shù)的基本思想是在靠近芯片的輸入/輸出引腳上增加一個(gè)移位寄存器單元,也就是邊界掃描寄存器(Boundary-Scan Register)。
當(dāng)芯片處于調(diào)試狀態(tài)時(shí),邊界掃描寄存器可以將芯片和外圍的輸入/輸出隔離開(kāi)來(lái)。通過(guò)邊界掃描寄存器單元,可以實(shí)現(xiàn)對(duì)芯片輸入/輸出信號(hào)的觀察和控制。對(duì)于芯片的輸入引腳,可以通過(guò)與之相連的邊界掃描寄存器單元把信號(hào)(數(shù)據(jù))加載到該引腳中去;對(duì)于芯片的輸出引腳,也可以通過(guò)與之相連的邊界掃描寄存器“捕獲”該引腳上的輸出信號(hào)。在正常的運(yùn)行狀態(tài)下,邊界掃描寄存器對(duì)芯片來(lái)說(shuō)是透明的,所以正常的運(yùn)行不會(huì)受到任何影響。這樣,邊界掃描寄存器提供了一 種便捷的方式用于觀測(cè)和控制所需調(diào)試的芯片。另外,芯片輸入/輸出引腳上的邊界掃描(移位)寄存器單元可以相互連接起來(lái),任芯片的周圍形成一個(gè)邊界掃描鏈 (Boundary-Scan Chain)。邊界掃描鏈可以串行地輸入和輸出,通過(guò)相應(yīng)的時(shí)鐘信號(hào)和控制信號(hào),就可以方便地觀察和控制處在調(diào)試狀態(tài)下的芯片。
JTAG接口:
通常所說(shuō)的JTAG大致分兩類,一類用于測(cè)試芯片的電氣特性,檢測(cè)芯片是否有問(wèn)題;一類用于Debug;一般支持JTAG的CPU內(nèi)都包含了這兩個(gè)模塊。
上面說(shuō)的只是JTAG接口所具備的能力,要使用這些功能,還需要軟件的配合,具體實(shí)現(xiàn)的功能則由具體的軟件決定。
通過(guò)JTAG下載程序前應(yīng)關(guān)閉所有中斷,在使用JTAG接口的時(shí)候,各中斷的使能未知,尤其是FLASH里有可執(zhí)行碼的情況,可能會(huì)有一些中斷被使能。使用JTAG下載完代碼,要執(zhí)行時(shí),有可能因?yàn)槲赐瓿沙跏蓟彤a(chǎn)生了中斷,導(dǎo)致程序異常。所以,需要先關(guān)閉中斷,一般通過(guò)設(shè)置SOC的中斷控制寄存器完成。
現(xiàn)如今使用JTAG對(duì)于ARM系列芯片,在需要燒寫大量數(shù)據(jù)時(shí),一般先會(huì)制作一段特殊的代碼,比如U-boot集成這些功能,可以調(diào)試和下載程序,甚至可以使用多種手段,如使用串口,USB,網(wǎng)卡等方式下載,極大的提高了程序燒寫的速度,特別是在下載和移植系統(tǒng)的時(shí)候效果尤為明顯。