SWD、JTAG、Jlink、Ulink、STlink的區別
- 前言
- JTAG協議
- SWD
- RDI介面
- JLink模擬器
- ULink模擬器
前言
搞嵌入式開發和ARM開發搞了半輩子了,除錯程式是不可避免的。接觸了那麼多的除錯規範、除錯工具、除錯手段,彼此之間的關係卻也不是特別清楚,今天就來捋一捋:
JTAG協議
JTAG(Joint Test Action Group,聯合測試行動小組)是一種國際標準測試協議(IEEE 1149.1相容),主要用於晶片內部測試。現在多數的高階器件都支援JTAG協議,如ARM、DSP、FPGA器件等。標準的JTAG介面是4線:TMS、 TCK、TDI、TDO,分別為模式選擇、時鐘、資料輸入和資料輸出線。 相關JTAG引腳的定義為:
TMS:測試模式選擇,TMS用來設定JTAG介面處於某種特定的測試模式;
TCK:測試時鐘輸入;
TDI:測試資料輸入,資料通過TDI引腳輸入JTAG介面;
TDO:測試資料輸出,資料通過TDO引 腳從JTAG介面輸出;
JTAG協議在定義時,由於當時的計算機(PC機)普遍帶有並口,因而在連線計算機端是定義使用的並口。而計算機到了今天,不要說膝上型電腦,現在臺式計算機上面有並口的都很少了,取而代之的是越來越多的USB介面。所以,目前市場上已經很少看到它的身影了。
SWD
SWD介面
序列除錯(Serial Wire Debug),應該可以算是一種和JTAG不同的除錯模式,使用的除錯協議也應該不一樣,所以最直接的體現在除錯介面上,與JTAG的20個引腳相比,SWD只需要4個(或者5個)引腳,結構簡單,但是使用範圍沒有JTAG廣泛,主流偵錯程式上也是後來才加的SWD除錯模式。
SWD和傳統的除錯方式區別:
SWD模式比JTAG在高速模式下面更加可靠。在大資料量的情況下面JTAG下載程式會失敗,但是SWD發生的機率會小很多。基本使用JTAG模擬模式的情況下是可以直接使用SWD模式的,只要你的模擬器支援,所以推薦大家使用這個模式。
在大家GPIO剛好缺一個的時候,可以使用SWD模擬,這種模式支援更少的引腳。
在大家板子的體積有限的時候推薦使用SWD模式,它需要的引腳少,當然需要的PCB空間就小啦!比如你可以選擇一個很小的2.54間距的5芯端子做模擬介面。
這裡寫圖片描述
RDI介面
遠端除錯介面(Remote Debug Interface),是ARM公司提出的標準除錯介面,主要用於ARM晶片的模擬,由於各個IDE廠商使用的除錯介面各自獨立,硬體無法進行跨平臺的除錯。現在眾多的IDE廠家都逐步採用標準RDI作為ARM模擬器的除錯介面,因此使跨平臺的硬體除錯成為可能。EasyJTAG由於使用標準RDI除錯介面,因此在任何使用標準RDI介面的IDE除錯環境中都可以使用,例如ARM公司的ADS1.2/IAR公司的EWARM 3.30 。
JLink模擬器
J-Link是德國SEGGER公司推出基於JTAG的模擬器。簡單地說,是給一個JTAG協議轉換盒,即一個小型USB到JTAG的轉換盒,其連線到計算機用的是USB介面,而到目標板內部用的還是jtag協議。它完成了一個從軟體到硬體轉換的工作。
JLINK是一個通用的開發工具,可以用於KEIL、IAR、ADS 等平臺。速度,效率,功能都很好,據說是眾多模擬器裡最強悍的。
ULink模擬器
ULINK是ARM/KEIL公司推出的模擬器,目前網上可找到的是其升級版本,ULINK2和ULINK Pro模擬器。ULINK/ULINK2可以配合Keil軟體實現模擬功能,並且僅可以在Keil軟體上使用,增加了序列除錯(SWD)支援,返回時鐘支援和實時代理等功能。開發工程師通過結合使用RealView MDK的偵錯程式和ULINK2,可以方便的在目標硬體上進行片上除錯(使用on-chip JTAG,SWD和OCDS)、Flash程式設計。
但是要注意的是,ULINK是KEIL公司開發的模擬器,專用於KEIL平臺下使用,ADS、IAR下不能使用。