電子工程師必須知道的JTAG知識,你都知道嗎?
JTAG(Joint Test AcTIon Group,聯(lián)合測試行動(dòng)組)是一種國際標準測試協(xié)議(IEEE 1149.1兼容)。標準的JTAG接口是4線(xiàn)——TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數據輸入和數據輸出線(xiàn)。
本文引用地址:http://dyxdggzs.com/article/201712/372874.htmJTAG是最基本的通訊協(xié)議之一,大家可以理解為與RX TX或者USB的道理是一樣的,只是一種通訊手段,但與RX TX以及USB有很重大的不同,那就是這個(gè)JTAG協(xié)議是最底層的,說(shuō)的通俗一點(diǎn),一般來(lái)說(shuō),手機里邊,CPU是老大,對吧?但在JTAG面前,他就不是老大了,JTAG協(xié)議就是用來(lái)控制CPU的,在JTAG面前CPU變成嘍啰了。一般的協(xié)議是求著(zhù)CPU讀寫(xiě)字庫的程序,但JTAG可以讀寫(xiě)CPU的程序,命令讓CPU啥活都干,擒賊先擒王,JTAG就是屠龍刀。

JTAG也是一種國際標準測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內部測試?,F在多數的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標準的JTAG接口是4線(xiàn):TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數據輸入和數據輸出線(xiàn)。 相關(guān)JTAG引腳的定義為:TCK為測試時(shí)鐘輸入;TDI為測試數據輸入,數據通過(guò)TDI引腳輸入JTAG接口;TDO為測試數據輸出,數據通過(guò)TDO引腳從JTAG接口輸出;TMS為測試模式選擇,TMS用來(lái)設置JTAG接口處于某種特定的測試模式;TRST為測試復位,輸入引腳,低電平有效
JTAG的主要功能有兩種,或者說(shuō)JTAG主要有兩大類(lèi):一類(lèi)用于測試芯片的電氣特性,檢測芯片是否有問(wèn)題;另一類(lèi)用于Debug,對各類(lèi)芯片以及 其外圍設備進(jìn)行調試。一個(gè)含有JTAG Debug接口模塊的CPU,只要時(shí)鐘正常,就可以通過(guò)JTAG接口訪(fǎng)問(wèn)CPU的內部寄存器、掛在CPU總線(xiàn)上的設備以及內置模塊的寄存器。本文主要介紹 的是Debug功能。
注釋?zhuān)篔TAG可以訪(fǎng)問(wèn)一些內部寄存器,主要是CPU內的寄存器,例如一些通用寄存器等;也可以訪(fǎng)問(wèn)一些掛在總線(xiàn)上的設備,比如片內的內存L1,L2,L3等;還可以訪(fǎng)問(wèn)內置模塊的寄存器,比如MMU模塊,通過(guò)JTAG都可以訪(fǎng)問(wèn)這些寄存器。
1 JTAG原理分析
簡(jiǎn)單地說(shuō),JTAG的工作原理可以歸結為:在器件內部定義一個(gè)TAP(Test Access Port,測試訪(fǎng)問(wèn)口),通過(guò)專(zhuān)用的JTAG測試工具對內部節點(diǎn)進(jìn)行測試和調試。首先介紹一下邊界掃描和TAP的基本概念和內容。
1.1 邊界掃描
邊界掃描(Boundary-Scan)技術(shù)的基本思想是在靠近芯片的輸入/輸出引腳上增加一個(gè)移位寄存器單元,也就是邊界掃描寄存器(Boundary-Scan Register)。
當芯片處于調試狀態(tài)時(shí),邊界掃描寄存器可以將芯片和外圍的輸入/輸出隔離開(kāi)來(lái)。通過(guò)邊界掃描寄存器單元,可以實(shí)現對芯片輸入/輸出信號的觀(guān)察和控 制。對于芯片的輸入引腳,可以通過(guò)與之相連的邊界掃描寄存器單元把信號(數據)加載到該引腳中去;對于芯片的輸出引腳,也可以通過(guò)與之相連的邊界掃描寄存 器“捕獲”該引腳上的輸出信號。在正常的運行狀態(tài)下,邊界掃描寄存器對芯片來(lái)說(shuō)是透明的,所以正常的運行不會(huì )受到任何影響。這樣,邊界掃描寄存器提供了一 種便捷的方式用于觀(guān)測和控制所需調試的芯片。另外,芯片輸入/輸出引腳上的邊界掃描(移位)寄存器單元可以相互連接起來(lái),任芯片的周?chē)纬梢粋€(gè)邊界掃描鏈 (Boundary-Scan Chain)。邊界掃描鏈可以串行地輸入和輸出,通過(guò)相應的時(shí)鐘信號和控制信號,就可以方便地觀(guān)察和控制處在調試狀態(tài)下的芯片。
1.2 測試訪(fǎng)問(wèn)口TAP
TAP(Test Access Port)是一個(gè)通用的端口,通過(guò)TAP可以訪(fǎng)問(wèn)芯片提供的所有數據寄存器(DR)和指令寄存器(IR)。對整個(gè)TAP的控制是通過(guò)TAP控制器(TAP Controller)來(lái)完成的。下面先分別介紹一下TAP的幾個(gè)接口信號及其作用。其中,前4個(gè)信號在IEEE1149.1標準里是強制要求的。
◇TCK:時(shí)鐘信號,為T(mén)AP的操作提供了一個(gè)獨立的、基本的時(shí)鐘信號。
◇TMS:模式選擇信號,用于控制TAP狀態(tài)機的轉換。
◇TDI:數據輸入信號。
◇TDO:數據輸出信號。
◇TRST:復位信號,可以用來(lái)對TAP Controller進(jìn)行復位(初始化)。這個(gè)信號接口在IEEE 1149.1標準里并不是強制要求的,因為通過(guò)TMS也可以對TAP Controller進(jìn)行復位。
◇STCK:時(shí)鐘返回信號,在IEEE 1149.1標準里非強制要求。
◇DBGRQ:目標板上工作狀態(tài)的控制信號。在IEEE 1149.1標準里沒(méi)有要求,只是在個(gè)別目標板(例如STR710)中會(huì )有。
簡(jiǎn)單地說(shuō),PC機對目標板的調試就是通過(guò)TAP接口完成對相關(guān)數據寄存器(DR)和指令寄存器(IR)的訪(fǎng)問(wèn)。
系統上電后,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)的轉移都是通過(guò)TCK信號進(jìn)行驅動(dòng)(上升沿),通過(guò)TMS信號對TAP的狀態(tài)進(jìn)行選擇轉換的。其中,在 Capture-IR狀態(tài)下,一個(gè)特定的邏輯序列被加載到指令寄存器中;在Shift-IR狀態(tài)下,可以將一條特定的指令送到指令寄存器中;在 Update-IR狀態(tài)下,剛才輸入到指令寄存器中的指令將用來(lái)更新指令寄存器。最后,系統又回到Run-Test/Idle狀態(tài),指令生效,完成對指令 寄存器的訪(fǎng)問(wèn)。當系統又返回到Run-Test/Idle狀態(tài)后,根據前面指令寄存器的內容選定所需要的數據寄存器,開(kāi)始執行對數據寄存器的工作。其基本 原理與指令其存器的訪(fǎng)問(wèn)完全相同,依次為Select-DR-Scan、Capture-DR、Shift-D、Exit1-DR、Update-DR, 最后回到Run-Test/Idle狀態(tài)。通過(guò)TDI和TDO,就可以將新的數據加載到數據寄存器中。經(jīng)過(guò)一個(gè)周期后,就可以捕獲數據寄存器中的數據,完 成對與數據寄存器的每個(gè)寄存器單元相連的芯片引腳的數據更新,也完成了對數據寄存器的訪(fǎng)問(wèn)。
目前,市場(chǎng)上的JTAG接口有14引腳和20引腳兩種。其中,以20引腳為主流標準,但也有少數的目標板采用14引腳。經(jīng)過(guò)簡(jiǎn)單的信號轉換后,可以將它們通用。
JTAG的基本原理進(jìn)行分析
下面通過(guò)對JD44B0X實(shí)驗開(kāi)發(fā)板的簡(jiǎn)易JTAG的基本原理進(jìn)行分析,以及對JD44B0X和STR710試驗開(kāi)發(fā)板主板的JTAG原理進(jìn)行對比,進(jìn)一步闡述JTAG的工作原理。JD44B0X實(shí)驗開(kāi)發(fā)板的簡(jiǎn)易JTAG的原理圖如圖1所示。

圖1中,74LS244為三態(tài)輸出的8組緩沖器和總線(xiàn)驅動(dòng)器,其功能如表1所列。

由表1可知,在JD44B0X實(shí)驗板的調試過(guò)程中,這款簡(jiǎn)易JTAG的主要作用就是將PC機發(fā)出的電信號與實(shí)驗板的電信號進(jìn)行匹配,以實(shí)現驅動(dòng)目標板的功能。
STR710和JD44B0X主板的JTAG原理圖如圖2和圖3所示。

通過(guò)圖2和圖3的對比可以發(fā)現,雖然所用的仿真器有很大的差別,但是,實(shí)際上忽略一些上下拉電阻以及保護電容(這些電阻、電容對于電路功能沒(méi)有意 義),它們的基本原理圖是十分相似的,唯一的差別就在于對RTCK信號(用于測試時(shí)鐘返回)和DBGRQ信號(用于設置目標板工作狀態(tài))的處理。實(shí)際上, 在IEEE 1149.1標準中這兩個(gè)信號都不是強制要求的。因此,在分析仿真器(JTAG)的工作原理時(shí)完全可以忽略這兩個(gè)信號的情況,而僅對IEEE 1149.1標準中強制要求的4個(gè)信號進(jìn)行分析。
2 仿真器與簡(jiǎn)易JTAG的性能對比
2.1 仿真器硬件連接
PC機配置:1.66 GHz,256 MB內仔。
調試軟件:ADS1.2。
目標板:JD44B0X。
完成任務(wù):文件的下載。
硬件連接如圖4所示。通過(guò)主機的并口與仿真器相連接,再將仿真器與目標板的JTAG調試接口連接。

2.2 性能對比
如表2所列,雖然通過(guò)不同的調試代理所需的下載時(shí)間有所不同,但是兩種仿真器所存在的性能差異仍然很明顯。在選剛簡(jiǎn)易JTAG下載文件的過(guò)程中,效 率最高的調試代理所需的時(shí)間仍將近是仿真器的6倍,這就是仿真器的優(yōu)勢所在。性能的提高必然要付出更多的代價(jià),對開(kāi)發(fā)者來(lái)說(shuō)這個(gè)代價(jià)就是成本。經(jīng)過(guò)市場(chǎng)的 考察,仿真器的價(jià)格一般在千元左右,而簡(jiǎn)易JTAG的價(jià)格一般在百元左右,也就是存在將近10倍的差別。另外,還需要考慮的就是其兼容性。兼容性包括與目 標板的兼容和與調試代理的兼容。在與目標板的兼容方面,后面的內容中會(huì )有詳細說(shuō)明;在與調試代理的兼容方面也有所反映。簡(jiǎn)易JTAG能夠與多個(gè)調試代理兼 容,而仿真器只能使用其自帶的調試代理,具有一定的局限性。

2.3 原因分析
既然所有JTAG的基奉原理都是一樣的,為什么這兩種仿真器的速度會(huì )存在如此大的差異,而且并不是所有的仿真器都是通用的呢?
首先介紹一下 ARM7掃描鏈架構,如圖5所示。

與簡(jiǎn)易JTAG比較,在掃描過(guò)程中,STR710的仿真器為ARM7TDMI添 加了一個(gè)專(zhuān)門(mén)的指針通道以及相應的存儲空間store-mulTIple(STM)。因此在調試狀態(tài)下,仿真器不再利用系統除了邊界掃描寄存器外的任何其 他資源,而是通過(guò)JTAG-style接口直接獲取系統的狀態(tài)信息,對系統狀態(tài)進(jìn)行觀(guān)測以及調試,進(jìn)而大大提高調試速度。
在STR710目標板中,ARM7TDMI可以通過(guò)外部信號和內部電路模塊(ICE)進(jìn)入調試狀態(tài)。當目標板一旦進(jìn)入調試狀態(tài)后,內核就將其與存儲器分離開(kāi)來(lái),這樣內核就可以保證在不影響系統正常運作的狀態(tài)下對系統的狀況進(jìn)行監測和調試。同時(shí),ARM7TDMI內部狀態(tài)的檢測是通過(guò)JTAG-style接口進(jìn)行的,這個(gè)接口允許指令不通過(guò)數據線(xiàn)直接進(jìn)入到內核的掃描通道。這樣在調試狀態(tài)下,STM就可以直接嵌入到指令通道并存儲ARM7TDMI寄存器的內容,在不影響系統工作的情況下將這些內容移位出來(lái),使仿真器獲得目標板的狀態(tài)信息。
與仿真器比較,簡(jiǎn)易JTAG完成的工作就要少得多。它只是完成了對主機信號的電平轉換,也就是相當于一個(gè)驅動(dòng)器。上面提到的所有工作都要交給CPU 去做,因此在使用簡(jiǎn)易JTAG下載文件時(shí)目標板自然會(huì )相應地降低速度。尤其是當程序相對較大時(shí),其速度就會(huì )大大降低,對于一些開(kāi)發(fā)人員來(lái)講,這是相當致命 的缺點(diǎn)。
關(guān)于仿真器與日標板的兼容問(wèn)題,現在市場(chǎng)上的部分仿真器出現不同程度的不兼容問(wèn)題,其產(chǎn)生的主要原因是對RTCK信號(DBGRQ信號極不常見(jiàn),這 里不作介紹)的處理情況存在一些差異(不包括周立功系列的實(shí)驗開(kāi)發(fā)板,它們的仿真器使用的是單片機,與大多數的仿真器都不能兼容)。例如,在STR710 中是將STCK信號與TCK信號直接相連了,而在nano2410A實(shí)驗開(kāi)發(fā)板中是將STCK信號直接接地,因此造成了ARM JTAG Emulator在nano2410A實(shí)驗開(kāi)發(fā)板中的不兼容。在對nano2410A主板的JTAG進(jìn)行了小小的改動(dòng)后就完成了仿真器兼容性的擴展。
評論