關於JTAG,你知道的和不知道的都在這里


01、JTAG簡介

JTAG(JointTest ActionGroup)是一個接口,為了這個接口成立了一個小組叫JTAG小組,它成立於1985年。在1990年IEEE覺得一切妥當,於是發布了IEEE Standard 1149.1-1990,並命名為Standard Test Access Port and Boundary-ScanArchitecture,這就是大名鼎鼎的JTAG了。

JTAG的三大功能你知道嗎,響當當的:

1.下載器,即下載軟件到FLASH里。

2. DEBUG,跟醫生的聽診器似的,可探聽芯片內部小心思。

3. 邊界掃描,可以訪問芯片內部的信號邏輯狀態,還有芯片引腳的狀態等等。

JTAG根本沒有標准的接口定義,甚至每家公司定義都不一樣。在ARM的《系統和接口設計參考》文檔中

圖片

文檔下載地址:

鏈接:https://pan.baidu.com/s/13aQXOXR73_wiERz2kwN15w

提取碼:xaaf

這篇文檔列舉了不同的JTAG接口

圖片

而我們經常在互聯網看到的下圖,是SEGGER公司的Jlink的JTAG接口。

圖片

J-Link是德國SEGGER公司推出基於JTAG的仿真器。簡單地說,是給一個JTAG協議轉換盒,即一個小型USB到JTAG的轉換盒,其連接到計算機用的是USB接口,而到目標板內部用的還是jtag協議。它完成了一個從軟件到硬件轉換的工作。

同時Jlink也是個人覺的最流行的調試器。通過《系統和接口設計參考》可知,這個ARM官方的JTAG20pin並不相同。

在這里希望大家明白,ARM,Jlink,JTAG之間的關系。

圖片

使用頻率也挺高的ST-linkV2的接口由上文可知,這也是ST公司自己定義的接口,如下:

圖片

Ulink、CMSIS_DAP和其他STM32的仿真器是一樣的道理。

 

02、JTAG介紹

邊界測試:

舉個例子你有兩個芯片,這兩個芯片之間連接了很多很多的線,怎么確保這些線之間的連接是OK的呢,用JTAG,它可以控制所有IC的引腳。這叫做芯片邊界測試。

圖片

在JTAG接口中,最常用的信號有四個,分別是TCK/TMS/TDO/TDI。JTAG接口可以一對一的使用,也可以組成菊花鏈的一對多拓撲結構,兩種拓撲結構如下圖所示。多核的芯片,其芯片內部已經接成了菊花鏈的形式。

圖片

JTAG的菊花鏈還有很多玩法

CPU和FPGA制造商允許JTAG用來端口debug;FPGA廠商允許通過JTAG配置FPGA,使用JTAG信號通入FPGA核。

圖片

03、JTAG和SWD

SWD接口:串行調試(SerialWireDebug),應該可以算是一種和JTAG不同的調試模式,最直接的體現在調試接口上,與JTAG的20個引腳相比,SWD只需要4(或者5)個引腳。

VCC、SWDIO、SWCLK、GND(有些情況,也加上了RESET腳)。

 

SWD和傳統的調試方式區別:

  1. SWD模式比JTAG在高速模式下面更加可靠。在大數據量的情況下面JTAG下載程序會失敗,但是SWD發生的幾率會小很多。基本使用JTAG仿真模式的情況下是可以直接使用SWD模式的,只要你的仿真器支持,所以推薦大家使用這個模式。

  2. 當CPU的GPIO不夠用的時候,可以使用SWD仿真,這種模式支持更少的引腳。

  3. 在硬件PCB的體積有限的時候推薦使用SWD模式,它需要的引腳少,當然需要的PCB空間就小,可以選擇一個很小的2.54間距的5芯端子做仿真接口。

Keil環境下Jlink調試器的JTAG模式和SWD模式

圖片

IAR環境下Jlink調試器的JTAG模式和SWD模式

圖片

Jlink的JTAG模式和SWD模式對比圖

圖片

JTAG引腳說明

圖片

SWD引腳說明

圖片

04、關於Vref引腳

上面我們提到Vref引腳,屬於IO接口的電源域,目的是為了使芯片邏輯電平與調試器的邏輯電平一致,避免邏輯錯誤,甚至對設備造損壞。

在Jlink上有Vref的跳線帽。

圖片

三個排針:①是NC,②是Vref,是和輸出的1腳相連的,③是3.3V

如果要Jlink的1腳Vref輸出3.3V,直接將②和③短接即可。

05、關於TRST引腳

JTAG定義中的TRST引腳,用來復位TAP控制器的。在STM32系列單片機中,並沒有TRST引腳,名字為NJTRST。

以STM32F207為例,NJTRST引腳在JTAG和SWD模式中的說明。

圖片

STM32F207的SWJI/O引腳可用性

圖片

06、RESET引腳作用

在一些STM32的產品仿真時使用4線的SWD模式,發布版通常會將JTAG口設置為普通IO,或者由於管腳不夠用,在發布版用作其他用途。我們在調試發布版,因為禁止了JTAG模式,沒有辦法仿真了。

這個時候,最常用的做法是,拉高BOOT0管腳,進入MainFlash memory模式,進行debug仿真。

圖片

對比STM32的官方開發板,我們在使用SWD模式沒有引出RST引腳,當然屬於SWD的還有SWO信號,這是個監視用的,也是非常有用。這兩個信號都可以連接仿真器的。

圖片

板子上對照:

圖片

仿真器有UnderReset的方式,因此,仿真器在需要仿真的時候,會把RST信號送到MCU,讓MCU處於RST,或者采用Reset后仿真,代碼還沒執行到禁止JTAG狀態下,所以可以直接仿真。當然,也可以主動復位供電,也是可以脫離原來的JTAG禁止狀態。也可以拉高boot0管腳。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM