1. 程式人生 > >JLINK與JTAG簡單介紹

JLINK與JTAG簡單介紹

除錯ARM,要遵循ARM的除錯介面協議,JTAG就是其中的一種。當模擬時,IAR、KEIL、ADS等都有一個公共的除錯介面,RDI就是其中的一種,那麼我們如何完成RDI-->ARM除錯協議(JTAG)的轉換呢?有以下兩種做法:

1.在電腦上寫一個服務程式,把IAR、KEIL和ADS中的RDI命令解析成相關的JTAG協議,然後通後一個物理轉換介面(注意,這個轉換隻是電氣 物理層上的轉換,就像RS232那樣的作用)傳送你的的目標板。H-JTAG就是這樣的。H-JTAG的硬體就僅是一個物理電平的轉換介面,所以很簡單。 而電腦中裝的h-JTAG軟體就是前面說到的服務程式,負責協議轉換的。

2.做一個板,用此板直接接收來自IAR、KEIL和ADS等軟體的除錯命令,由此板做RDI->JTAG協議的轉換。然後與目標板通訊,這就是JLINK的工作原理。

由上可以看出H-JTAG由於是軟體作協議轉換的,所以速度較慢,但是硬體簡單。而第二種方法的JLINK一般帶一個強勁的CPU,作硬體協議轉換,把以硬體複雜,但速度快。

JTAG的基本原理

JTAG(JointTestActionGroup,聯合測試行動組)是一種國際標準測試協議(IEEE1149.1相容)。標準的JTAG介面是4線——TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、資料輸入和資料輸出線。

JTAG的主要功能有兩種,或者說JTAG主要有兩大類:

1)一類用於測試晶片的電氣特性,檢測晶片是否有問題;

2)另一類用於Debug,對各類晶片以及其外圍裝置進行除錯;一個含有JTAGDebug介面模組的CPU,只要時鐘正常,就可以通過JTAG介面訪問CPU的內部暫存器、掛在CPU總線上的裝置以及內建模組的暫存器。本文主要介紹的是Debug功能。

JTAG原理分析

簡單地說,JTAG的工作原理可以歸結為:在器件內部定義一個TAP(TestAccessPort,測試訪問口),通過專用的JTAG測試工具對內部節點進行測試和除錯。首先介紹一下邊界掃描和TAP的基本概念和內容。

邊界掃描

邊界掃描(Boundary-Scan)技術的基本思想是在靠近晶片的輸入/輸出引腳上增加一個移位暫存器單元,也就是邊界掃描暫存器(Boundary-ScanRegister)。

當晶片處於除錯狀態時,邊界掃描暫存器可以將晶片和外圍的輸入/輸出隔離開來。通過邊界掃描暫存器單元,可以實現對晶片輸入/輸出訊號的觀察和控制。對 於晶片的輸入引腳,可以通過與之相連的邊界掃描暫存器單元把訊號(資料)載入到該引腳中去;對於晶片的輸出引腳,也可以通過與之相連的邊界掃描暫存器“捕 獲”該引腳上的輸出訊號。在正常的執行狀態下,邊界掃描暫存器對晶片來說是透明的,所以正常的執行不會受到任何影響。這樣,邊界掃描暫存器提供了一種便捷 的方式用於觀測和控制所需除錯的晶片。另外,晶片輸入/輸出引腳上的邊界掃描(移位)暫存器單元可以相互連線起來,在晶片的周圍形成一個邊界掃描鏈 (Boundary-ScanChain)。邊界掃描鏈可以序列地輸入和輸出,通過相應的時鐘訊號和控制訊號,就可以方便地觀察和控制處在除錯狀態下的芯 片。

測試訪問口TAP

TAP(TestAccessPort)是一個通用的埠,通過TAP 可以訪問晶片提供的所有資料暫存器(DR)和指令暫存器(IR)。對整個TAP的控制是通過TAP控制器(TAPController)來完成的。下面先 分別介紹一下TAP的幾個介面訊號及其作用。其中,前4個訊號在IEEE1149.1標準裡是強制要求的。

TCK:時鐘訊號,為TAP的操作提供了一個獨立的、基本的時鐘訊號。

TMS:模式選擇訊號,用於控制TAP狀態機的轉換。

TDI:資料輸入訊號。

TDO:資料輸出訊號。

TRST:復位訊號,可以用來對TAPController進行復位(初始化)。這個訊號介面在IEEE1149.1標準裡並不是強制要求的,因為通過TMS也可以對TAPController進行復位。

STCK:時鐘返回訊號,在IEEE1149.1標準裡非強制要求。

簡單地說,PC機對目標板的除錯就是通過TAP介面完成對相關資料暫存器(DR)和指令暫存器(IR)的訪問。

系統上電後,TAPController首先進入Test-LogicReset狀態,然後依次進入Run-Test/Idle、Selcct-DR- Scan、Select-IR-Scan、Capture-IR、Shift-IR、Exitl-IR、Update-IR狀態,最後回到Run- Tcst/Idle狀態。在此過程中,狀態的轉移都是通過TCK訊號進行驅動(上升沿),通過TMS訊號對TAP的狀態進行選擇轉換的。其中,在 Capture-IR狀態下,一個特定的邏輯序列被載入到指令暫存器中;在Shift-IR狀態下,可以將一條特定的指令送到指令暫存器中;在 Update—IR狀態下,剛才輸入到指令暫存器中的指令將用來更新指令暫存器。最後,系統又回到Run—Test/Idle狀態,指令生效,完成對指令 暫存器的訪問。當系統又返回到Run—Test/Idle狀態後,根據前面指令暫存器的內容選定所需要的資料暫存器,開始執行對資料暫存器的工作。其基本 原理與指令暫存器的訪問完全相同,依次為seIect—DR—Scan、Capture—DR、Shift—D、Exitl一DR、Update—DR, 最後回到Run-Tcst/Idle狀態。通過TDl和TDO,就可以將新的資料載入到資料暫存器中。經過一個週期後,就可以捕獲資料暫存器中的資料,完 成對與資料暫存器的每個暫存器單元相連的晶片引腳的資料更新,也完成了對資料暫存器的訪問。

目前,市場上的JTAG介面有14引腳和20引腳兩種。其中,以20引腳為主流標準,但也有少數的目標板採用14引腳。經過簡單的訊號轉換後,可以將它們通用。

 

轉自:https://blog.csdn.net/finewind/article/details/45913119