JTAG & SWD

JTAG(Joint Test Action Group,聯合測試工作組):是一種國際標準測試協議(IEEE 1149.1兼容),主要用於芯片內部測試。現在多數的高級器件都支持JTAG協議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別爲模式選擇、時鐘、數據輸入和數據輸出線。

JTAG最初是用來對芯片進行測試的,JTAG的基本原理是在器件內部定義一個TAP(Test Access Port,測試訪問口)通過專用的JTAG測試工具對內部節點進行測試。JTAG測試允許多個器件通過JTAG接口串聯在一起,形成一個JTAG鏈,能實現對各個器件分別測試。如今,JTAG接口還常用於實現ISP(In-System Programmer,在系統編程),對FLASH等器件進行編程。
JTAG編程方式是在線編程,傳統生產流程中先對芯片進行預編程然後再裝到板上,簡化的流程爲先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。JTAG接口可對DSP芯片內部的所有部件進行編程。

如今大多數比較複雜的器件都支持 JTAG 協議,如 ARM 、 DSP 、 FPGA 器件等。標準的 JTAG 接口是 4 線: TMS 、 TCK 、 TDI 、 TDO ,分別爲測試模式選擇、測試時鐘、測試數據輸入和測試數據輸出。如今 JTAG 接口的連接有兩種標準,即 14 針接口和 20 針接口,其定義分別如下所示。

在這裏插入圖片描述

JTAG 接口引腳

JTAG調試接口必須使用VCC、GND電源信號,以及TMS、TCK、TDI、TDO四根調試信號,可選TRST、RESET復位信號和RTCK(同步時鐘)信號。

  • VRef:目標板參考電壓信號,但不向外輸出電壓。用於檢查目標板是否供電,直接與目標板VDD聯;
  • GND:公共地信號;
  • TRST:JTAG復位,連接到目標CPU的nTRST引腳,用於復位CPU調試接口的TAP控制器;目標板上應將此腳上拉到高電位,避免意外復位;
  • TDI:仿真器連接至目標CPU的數據輸入信號,建議在目標板上將此腳上拉到Vdd;TMS:仿真器輸出給目標CPU的JTAG模式設置信號。必須在目標板上將此腳上拉;TCK:仿真器輸出給目標CPU的JTAG時鐘信號,建議在目標板上將此腳上拉;TDO:目標CPU返回給仿真器的數據信號;
  • RTCK:目標CPU提供給仿真器的時鐘信號。有些目標要求JTAG的輸入與其內部時鐘同步。仿真器利用此引腳的輸入可動態地控制自己的TCK速率。若不使z用此功能,在目標板上將此腳接地,有些芯片可能要求上拉;
  • RESET:仿真器輸出至目標CPU的系統復位信號。’

雖然TRST、RESET是可選的信號;但一般都建議接上,使得仿真器能夠在連接器件前對器件進行復位,以獲得較理想的初始狀態,便於後續仿真。

SWD 接口引腳

SWD是ARM公司提出的另一種調試接口,相對於JTAG接口,使用更少的信號。四根信號如下:

  • VRef:目標板參考電壓信號,但不向外輸出電壓。用於檢查目標板是否供電,直接與目標板VDD聯;
  • GND:公共地信號;
  • SWDIO:串行數據輸入輸出,作爲仿真信號的雙向數據信號線,建議上拉;
  • SWCLK:串行時鐘輸入,作爲仿真信號的時鐘信號線,建議下拉;
  • SWO:串行數據輸出引腳,CPU調試接口可通過SWO引腳輸出一些調試信息。該引腳是可選的;
  • RESET:仿真器輸出至目標CPU的系統復位信號。

同樣的,雖然RESET是可選的信號;但一般都建議接上,使得仿真器能夠在連接器件前對器件進行復位,以獲得較理想的初始狀態,便於後續連接仿真。

JTAG 和 SWD 的調試方式區別

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

  2. SWD模式支持更少的引腳,在大家GPIO剛好缺一個的時候,可以使用SWD仿真。

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

仿真器對SWD模式支持情況

(1)JTAGV6支持SWD仿真模式,速度較慢。

(2)JTAGV7比較好的支持SWD仿真模式,速度有了明顯的提高,速度是JTAGV6的6倍。

(3)JTAGV8非常好的支持SWD仿真模式,速度可以到10M。

(4)ULINK1不支持SWD模式。

(5)盜版ULINK2非常好的支持SWD模式,速度可以達到10M。

(6)正版ULINK2非常好的支持SWD模式,速度可以達到10M。

硬件接口上的區別

  1. JTAGV6需要的硬件接口爲:GND,RST,SWDIO,SWDCLK
  2. JTAGV7需要的硬件接口爲:GND,RST,SWDIO,SWDCLK
  3. JTAGV8需要的硬件接口爲:VCC,GND,RST,SWDIO,SWDCLK
  4. ULINK1 不支持SWD模式
  5. 盜版ULINK2需要的硬件接口爲:GND,RST,SWDIO,SWDCLK
  6. 正版ULINK2需要的硬件接口爲:GND,RST,SWDIO,SWDCLK

由此可以看到只有JTAGV8需要5個引腳,即多了一個VCC引腳;
其好處是:仿真器對目標板子的仿真需要用到RST引腳,使用仿真器內部的VCC作這個功能其實並不是非常美妙。因此,JTAGV8選擇了只和目標板共GND,但不共VCC。因此我覺得這種模式最合理,當然通常情況下仿真器和目標板共GND和VCC是沒有錯的。

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