jtag工作原理詳解
JTAG(Joint Test AcTIon Group,聯(lián)合測(cè)試行動(dòng)組)是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議(IEEE 1149.1兼容)。標(biāo)準(zhǔn)的JTAG接口是4線——TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。
JTAG是最基本的通訊協(xié)議之一,大家可以理解為與RX TX或者USB的道理是一樣的,只是一種通訊手段,但與RX TX以及USB有很重大的不同,那就是這個(gè)JTAG協(xié)議是最底層的,說(shuō)的通俗一點(diǎn),一般來(lái)說(shuō),手機(jī)里邊,CPU是老大,對(duì)吧?但在JTAG面前,他就不是老大了,JTAG協(xié)議就是用來(lái)控制CPU的,在JTAG面前CPU變成嘍啰了。一般的協(xié)議是求著CPU讀寫(xiě)字庫(kù)的程序,但JTAG可以讀寫(xiě)CPU的程序,命令讓CPU啥活都干,擒賊先擒王,JTAG就是屠龍刀。
JTAG也是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測(cè)試。現(xiàn)在多數(shù)的高級(jí)器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標(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ù)位,輸入引腳,低電平有效
JTAG的主要功能有兩種,或者說(shuō)JTAG主要有兩大類(lèi):一類(lèi)用于測(cè)試芯片的電氣特性,檢測(cè)芯片是否有問(wèn)題;另一類(lèi)用于Debug,對(duì)各類(lèi)芯片以及 其外圍設(shè)備進(jìn)行調(diào)試。一個(gè)含有JTAG Debug接口模塊的CPU,只要時(shí)鐘正常,就可以通過(guò)JTAG接口訪問(wèn)CPU的內(nèi)部寄存器、掛在CPU總線上的設(shè)備以及內(nèi)置模塊的寄存器。本文主要介紹 的是Debug功能。
注釋?zhuān)篔TAG可以訪問(wèn)一些內(nèi)部寄存器,主要是CPU內(nèi)的寄存器,例如一些通用寄存器等;也可以訪問(wèn)一些掛在總線上的設(shè)備,比如片內(nèi)的內(nèi)存L1,L2,L3等;還可以訪問(wèn)內(nèi)置模塊的寄存器,比如MMU模塊,通過(guò)JTAG都可以訪問(wèn)這些寄存器。
1 JTAG原理分析簡(jiǎn)單地說(shuō),JTAG的工作原理可以歸結(jié)為:在器件內(nèi)部定義一個(gè)TAP(Test Access Port,測(cè)試訪問(wèn)口),通過(guò)專(zhuān)用的JTAG測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試和調(diào)試。首先介紹一下邊界掃描和TAP的基本概念和內(nèi)容。
1.1 邊界掃描邊界掃描(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),任芯片的周?chē)纬梢粋€(gè)邊界掃描鏈 (Boundary-Scan Chain)。邊界掃描鏈可以串行地輸入和輸出,通過(guò)相應(yīng)的時(shí)鐘信號(hào)和控制信號(hào),就可以方便地觀察和控制處在調(diào)試狀態(tài)下的芯片。
1.2 測(cè)試訪問(wèn)口TAPTAP(Test Access Port)是一個(gè)通用的端口,通過(guò)TAP可以訪問(wèn)芯片提供的所有數(shù)據(jù)寄存器(DR)和指令寄存器(IR)。對(duì)整個(gè)TAP的控制是通過(guò)TAP控制器(TAP Controller)來(lái)完成的。下面先分別介紹一下TAP的幾個(gè)接口信號(hào)及其作用。其中,前4個(gè)信號(hào)在IEEE1149.1標(biāo)準(zhǔn)里是強(qiáng)制要求的。
◇TCK:時(shí)鐘信號(hào),為T(mén)AP的操作提供了一個(gè)獨(dú)立的、基本的時(shí)鐘信號(hào)。
◇TMS:模式選擇信號(hào),用于控制TAP狀態(tài)機(jī)的轉(zhuǎn)換。
◇TDI:數(shù)據(jù)輸入信號(hào)。
◇TDO:數(shù)據(jù)輸出信號(hào)。
◇TRST:復(fù)位信號(hào),可以用來(lái)對(duì)TAP Controller進(jìn)行復(fù)位(初始化)。這個(gè)信號(hào)接口在IEEE 1149.1標(biāo)準(zhǔn)里并不是強(qiáng)制要求的,因?yàn)橥ㄟ^(guò)TMS也可以對(duì)TAP Controller進(jìn)行復(fù)位。
◇STCK:時(shí)鐘返回信號(hào),在IEEE 1149.1標(biāo)準(zhǔn)里非強(qiáng)制要求。
◇DBGRQ:目標(biāo)板上工作狀態(tài)的控制信號(hào)。在IEEE 1149.1標(biāo)準(zhǔn)里沒(méi)有要求,只是在個(gè)別目標(biāo)板(例如STR710)中會(huì)有。
簡(jiǎn)單地說(shuō),PC機(jī)對(duì)目標(biāo)板的調(diào)試就是通過(guò)TAP接口完成對(duì)相關(guān)數(shù)據(jù)寄存器(DR)和指令寄存器(IR)的訪問(wèn)。
系統(tǒng)上電后,TAP Controller首先進(jìn)入Test-LogicReset狀態(tài),然后依次進(jìn)入Run-Test/Idle、Select-DR- Scan、Select-IR-Scan、Capture-IR、Shift-IR、Exitl-IR、Update-IR狀態(tài),最后回到Run- Test/Idle狀態(tài)。在此過(guò)程中,狀態(tài)的轉(zhuǎn)移都是通過(guò)TCK信號(hào)進(jìn)行驅(qū)動(dòng)(上升沿),通過(guò)TMS信號(hào)對(duì)TAP的狀態(tài)進(jìn)行選擇轉(zhuǎn)換的。其中,在 Capture-IR狀態(tài)下,一個(gè)特定的邏輯序列被加載到指令寄存器中;在Shift-IR狀態(tài)下,可以將一條特定的指令送到指令寄存器中;在 Update-IR狀態(tài)下,剛才輸入到指令寄存器中的指令將用來(lái)更新指令寄存器。最后,系統(tǒng)又回到Run-Test/Idle狀態(tài),指令生效,完成對(duì)指令 寄存器的訪問(wèn)。當(dāng)系統(tǒng)又返回到Run-Test/Idle狀態(tài)后,根據(jù)前面指令寄存器的內(nèi)容選定所需要的數(shù)據(jù)寄存器,開(kāi)始執(zhí)行對(duì)數(shù)據(jù)寄存器的工作。其基本 原理與指令其存器的訪問(wèn)完全相同,依次為Select-DR-Scan、Capture-DR、Shift-D、Exit1-DR、Update-DR, 最后回到Run-Test/Idle狀態(tài)。通過(guò)TDI和TDO,就可以將新的數(shù)據(jù)加載到數(shù)據(jù)寄存器中。經(jīng)過(guò)一個(gè)周期后,就可以捕獲數(shù)據(jù)寄存器中的數(shù)據(jù),完 成對(duì)與數(shù)據(jù)寄存器的每個(gè)寄存器單元相連的芯片引腳的數(shù)據(jù)更新,也完成了對(duì)數(shù)據(jù)寄存器的訪問(wèn)。
目前,市場(chǎng)上的JTAG接口有14引腳和20引腳兩種。其中,以20引腳為主流標(biāo)準(zhǔn),但也有少數(shù)的目標(biāo)板采用14引腳。經(jīng)過(guò)簡(jiǎn)單的信號(hào)轉(zhuǎn)換后,可以將它們通用。