JTag和Jlink的區別
JTAG是arm芯片的調試協議,諸如Keil/ADS/IAR等IDE集成了JTAG解析功能。
JLink,JTrace都是調試器/仿真器,即在線調試工具,他們支持從JTAG協議/接口轉換到USB協議/接口。
一、工作原理
調試ARM,總要遵循ARM的調試接口協議吧,jtag就是其中的一種吧。當仿真時,IAR,KEIL,ADS等等都有一個公共的調試接口,RDI(RDI接口是ARM公司提出的調試接口標准,主要用於ARM芯片的JTAG仿真。) 那么我們如何完成RDI-->arm調試協議(JTAG)的轉換呢? 如是乎就有兩種做法:
(1) 在電腦上寫一個服務程序,把KEIL,ADS,IAR中的RDI命令解析成相關的JTAG協議,然后通后一個物理轉換接口(注意,這個轉換只是電氣物理層 上的轉換,就像RS232那樣的作用)發送你的的目標板。 H-JTAG就是這樣的。 H-JTAG的硬件就僅是一個物理電平的轉換接口,所以很簡單。而電腦中裝的H-JTAG軟件就是前面說到的服務程序,負責協議轉換的。
(2)另一種做法,就是做一個板,用此板直接接收來自KEIL,ADS,IAR等軟件的調試命令,由此板做RDI->JTAG協議的轉換。然后與目標板通信,這就是jlink的工作原理。(這也就實現了USB轉JTAG協議)。
1.JTAG工作原理
JTAG(Joint Test AcTIon Group,聯合測試行動組)是一種國際標准測試協議(IEEE 1149.1兼容)。標准的JTAG接口是4線——TMS、TCK、TDI、TDO,分別為模式選擇、時鍾、數據輸入和數據輸出線。
JTAG是最基本的通訊協議之一,大家可以理解為與RX TX或者USB的道理是一樣的,只是一種通訊手段,但與RX TX以及USB有很重大的不同,那就是這個JTAG協議是最底層的,說的通俗一點,一般來說,手機里邊,CPU是老大,對吧?但在JTAG面前,他就不是老大了,JTAG協議就是用來控制CPU的,在JTAG面前CPU變成嘍啰了。一般的協議是求着CPU讀寫字庫的程序,但JTAG可以讀寫CPU的程序,命令讓CPU啥活都干,擒賊先擒王,JTAG就是屠龍刀。
JTAG也是一種國際標准測試協議(IEEE 1149.1兼容),主要用於芯片內部測試。現在多數的高級器件都支持JTAG協議,如DSP、FPGA器件等。
標准的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鍾、數據輸入和數據輸出線。
相關JTAG引腳的定義為:
TCK為測試時鍾輸入;
TDI為測試數據輸入,數據通過TDI引腳輸入JTAG接口;
TDO為測試數據輸出,數據通過TDO引腳從JTAG接口輸出;
TMS為測試模式選擇,TMS用來設置JTAG接口處於某種特定的測試模式;
TRST為測試復位,輸入引腳,低電平有效。
JTAG的主要功能有兩種,或者說JTAG主要有兩大類:一類用於測試芯片的電氣特性,檢測芯片是否有問題;另一類用於Debug,對各類芯片以及 其外圍設備進行調試。一個含有JTAG Debug接口模塊的CPU,只要時鍾正常,就可以通過JTAG接口訪問CPU的內部寄存器、掛在CPU總線上的設備以及內置模塊的寄存器。
注釋:JTAG可以訪問一些內部寄存器,主要是CPU內的寄存器,例如一些通用寄存器等;也可以訪問一些掛在總線上的設備,比如片內的內存L1,L2,L3等;還可以訪問內置模塊的寄存器,比如MMU模塊,通過JTAG都可以訪問這些寄存器。
1 JTAG原理分析
簡單地說,JTAG的工作原理可以歸結為:在器件內部定義一個TAP(Test Access Port,測試訪問口),通過專用的JTAG測試工具對內部節點進行測試和調試。首先介紹一下邊界掃描和TAP的基本概念和內容。
1.1 邊界掃描
邊界掃描(Boundary-Scan)技術的基本思想是在靠近芯片的輸入/輸出引腳上增加一個移位寄存器單元,也就是邊界掃描寄存器(Boundary-Scan Register)。
當芯片處於調試狀態時,邊界掃描寄存器可以將芯片和外圍的輸入/輸出隔離開來。通過邊界掃描寄存器單元,可以實現對芯片輸入/輸出信號的觀察和控 制。對於芯片的輸入引腳,可以通過與之相連的邊界掃描寄存器單元把信號(數據)加載到該引腳中去;對於芯片的輸出引腳,也可以通過與之相連的邊界掃描寄存 器“捕獲”該引腳上的輸出信號。在正常的運行狀態下,邊界掃描寄存器對芯片來說是透明的,所以正常的運行不會受到任何影響。這樣,邊界掃描寄存器提供了一 種便捷的方式用於觀測和控制所需調試的芯片。另外,芯片輸入/輸出引腳上的邊界掃描(移位)寄存器單元可以相互連接起來,任芯片的周圍形成一個邊界掃描鏈 (Boundary-Scan Chain)。邊界掃描鏈可以串行地輸入和輸出,通過相應的時鍾信號和控制信號,就可以方便地觀察和控制處在調試狀態下的芯片。
1.2 測試訪問口TAP
TAP(Test Access Port)是一個通用的端口,通過TAP可以訪問芯片提供的所有數據寄存器(DR)和指令寄存器(IR)。對整個TAP的控制是通過TAP控制器(TAP Controller)來完成的。下面先分別介紹一下TAP的幾個接口信號及其作用。其中,前4個信號在IEEE1149.1標准里是強制要求的。
◇TCK:時鍾信號,為TAP的操作提供了一個獨立的、基本的時鍾信號。
◇TMS:模式選擇信號,用於控制TAP狀態機的轉換。
◇TDI:數據輸入信號。
◇TDO:數據輸出信號。
◇TRST:復位信號,可以用來對TAP Controller進行復位(初始化)。這個信號接口在IEEE 1149.1標准里並不是強制要求的,因為通過TMS也可以對TAP Controller進行復位。
◇STCK:時鍾返回信號,在IEEE 1149.1標准里非強制要求。
◇DBGRQ:目標板上工作狀態的控制信號。在IEEE 1149.1標准里沒有要求,只是在個別目標板(例如STR710)中會有。
簡單地說,PC機對目標板的調試就是通過TAP接口完成對相關數據寄存器(DR)和指令寄存器(IR)的訪問。
系統上電后,TAP Controller首先進入Test-LogicReset狀態,然后依次進入Run-Test/Idle、Select-DR- Scan、Select-IR-Scan、Capture-IR、Shift-IR、Exitl-IR、Update-IR狀態,最后回到Run- Test/Idle狀態。在此過程中,狀態的轉移都是通過TCK信號進行驅動(上升沿),通過TMS信號對TAP的狀態進行選擇轉換的。其中,在 Capture-IR狀態下,一個特定的邏輯序列被加載到指令寄存器中;在Shift-IR狀態下,可以將一條特定的指令送到指令寄存器中;在 Update-IR狀態下,剛才輸入到指令寄存器中的指令將用來更新指令寄存器。最后,系統又回到Run-Test/Idle狀態,指令生效,完成對指令 寄存器的訪問。當系統又返回到Run-Test/Idle狀態后,根據前面指令寄存器的內容選定所需要的數據寄存器,開始執行對數據寄存器的工作。其基本 原理與指令其存器的訪問完全相同,依次為Select-DR-Scan、Capture-DR、Shift-D、Exit1-DR、Update-DR, 最后回到Run-Test/Idle狀態。通過TDI和TDO,就可以將新的數據加載到數據寄存器中。經過一個周期后,就可以捕獲數據寄存器中的數據,完 成對與數據寄存器的每個寄存器單元相連的芯片引腳的數據更新,也完成了對數據寄存器的訪問。
參考:http://www.dzsc.com/data/2017-12-11/113966.html