01JTAG簡介
JTAG(JointTest ActionGroup)是一個接口,為了這個接口成立了一個小組叫JTAG小組,它成立于1985年。在1990年IEEE覺得一切妥當,于是發(fā)布了IEEE Standard 1149.1-1990,并命名為Standard Test Access Port and Boundary-ScanArchitecture,這就是大名鼎鼎的JTAG了。
JTAG的三大功能你知道嗎,響當當的:
1.下載器,即下載軟件到FLASH里。
2. DEBUG,跟醫(yī)生的聽診器似的,可探聽芯片內部小心思。
3. 邊界掃描,可以訪問芯片內部的信號邏輯狀態(tài),還有芯片引腳的狀態(tài)等等。
JTAG根本沒有標準的接口定義,甚至每家公司定義都不一樣。在ARM的《系統(tǒng)和接口設計參考》文檔中
文檔下載地址:
鏈接:https://pan.baidu.com/s/13aQXOXR73_wiERz2kwN15w
提取碼:xaaf
這篇文檔列舉了不同的 JTAG 接口
而我們經常在互聯網看到的下圖,是SEGGER公司的Jlink的JTAG接口。
J-Link是德國SEGGER公司推出基于JTAG的仿真器。簡單地說,是給一個JTAG協(xié)議轉換盒,即一個小型USB到JTAG的轉換盒,其連接到計算機用的是USB接口,而到目標板內部用的還是jtag協(xié)議。它完成了一個從軟件到硬件轉換的工作。
同時Jlink也是個人覺的最流行的調試器。通過《系統(tǒng)和接口設計參考》可知,這個ARM官方的JTAG20pin并不相同。
在這里希望大家明白,ARM,Jlink,JTAG之間的關系。
使用頻率也挺高的ST-linkV2的接口由上文可知,這也是ST公司自己定義的接口,如下:
Ulink、CMSIS_DAP和其他STM32的仿真器是一樣的道理。
邊界測試:
舉個例子你有兩個芯片,這兩個芯片之間連接了很多很多的線,怎么確保這些線之間的連接是OK的呢,用JTAG,它可以控制所有IC的引腳。這叫做芯片邊界測試。
在JTAG接口中,最常用的信號有四個,分別是TCK/TMS/TDO/TDI。JTAG接口可以一對一的使用,也可以組成菊花鏈的一對多拓撲結構,兩種拓撲結構如下圖所示。多核的芯片,其芯片內部已經接成了菊花鏈的形式。
JTAG的菊花鏈還有很多玩法
CPU和FPGA制造商允許JTAG用來端口debug;FPGA廠商允許通過JTAG配置FPGA,使用JTAG信號通入FPGA核。
SWD接口:串行調試(SerialWireDebug),應該可以算是一種和JTAG不同的調試模式,最直接的體現在調試接口上,與JTAG的20個引腳相比,SWD只需要4(或者5)個引腳。
VCC、SWDIO、SWCLK、GND(有些情況,也加上了RESET腳)。
SWD和傳統(tǒng)的調試方式區(qū)別:
-
SWD模式比JTAG在高速模式下面更加可靠。在大數據量的情況下面JTAG下載程序會失敗,但是SWD發(fā)生的幾率會小很多。基本使用JTAG仿真模式的情況下是可以直接使用SWD模式的,只要你的仿真器支持,所以推薦大家使用這個模式。
-
當CPU的GPIO不夠用的時候,可以使用SWD仿真,這種模式支持更少的引腳。
-
在硬件PCB的體積有限的時候推薦使用SWD模式,它需要的引腳少,當然需要的PCB空間就小,可以選擇一個很小的2.54間距的5芯端子做仿真接口。
Keil環(huán)境下Jlink調試器的JTAG模式和SWD模式
IAR環(huán)境下Jlink調試器的JTAG模式和SWD模式
Jlink的JTAG模式和SWD模式對比圖
JTAG引腳說明
SWD引腳說明
上面我們提到Vref引腳,屬于IO接口的電源域,目的是為了使芯片邏輯電平與調試器的邏輯電平一致,避免邏輯錯誤,甚至對設備造損壞。
在Jlink上有Vref的跳線帽。
三個排針:①是NC,②是Vref,是和輸出的1腳相連的,③是3.3V
如果要Jlink的1腳Vref輸出3.3V,直接將②和③短接即可。
JTAG定義中的TRST引腳,用來復位TAP控制器的。在STM32系列單片機中,并沒有TRST引腳,名字為NJTRST。
以STM32F207為例,NJTRST引腳在JTAG和SWD模式中的說明。
STM32F207的SWJI/O引腳可用性
在一些STM32的產品仿真時使用4線的SWD模式,發(fā)布版通常會將JTAG口設置為普通IO,或者由于管腳不夠用,在發(fā)布版用作其他用途。我們在調試發(fā)布版,因為禁止了JTAG模式,沒有辦法仿真了。
這個時候,最常用的做法是,拉高BOOT0管腳,進入MainFlash memory模式,進行debug仿真。
對比STM32的官方開發(fā)板,我們在使用SWD模式沒有引出RST引腳,當然屬于SWD的還有SWO信號,這是個監(jiān)視用的,也是非常有用。這兩個信號都可以連接仿真器的。
板子上對照:
仿真器有UnderReset的方式,因此,仿真器在需要仿真的時候,會把RST信號送到MCU,讓MCU處于RST,或者采用Reset后仿真,代碼還沒執(zhí)行到禁止JTAG狀態(tài)下,所以可以直接仿真。當然,也可以主動復位供電,也是可以脫離原來的JTAG禁止狀態(tài)。也可以拉高boot0管腳。
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!