j-tag 和j-link 關係

調試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(Joint Test Action Group,聯合測試行動組)是一種國際標準測試協議(IEEE 11491兼容)標準的JTAG接口是4——TMSTCKTDITDO,分別爲模式選擇、時鐘、數據輸入和數據輸出線。

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

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

    2)另一類用於Debug,對各類芯片以及其外圍設備進行調試;一個含有JTAG Debug接口模塊的CPU,只要時鐘正常,就可以通過JTAG接口訪問CPU的內部寄存器、掛在CPU總線上的設備以及內置模塊的寄存器。本文主要介紹的是Debug功能。

1.JTAG原理分析

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

1. 邊界掃描

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

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

1. 測試訪問口TAP

  TAP(Test Access Port)是一個通用的端口,通過TAP可以訪問芯片提供的所有數據寄存器(DR)和指令寄存器(IR)。對整個TAP的控制是通過TAP控制器(TAP Controller)來完成的。下面先分別介紹一下TAP的幾個接口信號及其作用。其中,前4個信號在IEEE11491標準裏是強制要求的。

TCK:時鐘信號,爲TAP的操作提供了一個獨立的、基本的時鐘信號。 
TMS:模式選擇信號,用於控制TAP狀態機的轉換。 
TDI:數據輸入信號。 
TDO:數據輸出信號。 
TRST:復位信號,可以用來對TAP Controller進行復位(初始化)。這個信號接口在IEEE 11491標準裏並不是強制要求的,因爲通過TMS也可以對TAP Controller進行復位。 
STCK:時鐘返回信號,在IEEE 11491標準裏非強制要求。

  簡單地說,PC機對目標板的調試就是通過TAP接口完成對相關數據寄存器(DR)和指令寄存器(IR)的訪問。

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

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

舉例:如圖:

[如圖,從左到右1-5 分別是市場上常見20PIN2.54間距、20PIN2.0間距、14PIN2.54間距、10PIN2.0間距、10PIN2.54間距的JTAG口]

Mini2440 ARM開發板採用的是10針JTAG接口,而JLink使用的是標準的20針JTAG,因此需要製作一個連接線纜,一頭是20針的頭,另外一頭是10針的頭,中間的連線如下所示:

10針JTAG針序

20針JTAG針序

信號

1,2 1 VTref
- 2 NC
3 3 nTRST
- 4 GND
5 5 TDI
- 6 GND
7 7 TMS
8 8 GND
9 9 TCK
10 10 GND
- 11 RTCK
- 12 GND
6 13 TDO
- 14 GND
4 15 RESET
- 16 GND
- 17 DBGRQ
- 18 GND
- 19 5V-Supply
- 20 GND

其他廠商的10針JTAG是否可以和20針標準JTAG同樣連接,請參照廠商的說明書確認各個信號線.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章