小麥大叔是我認識玩單片機,搞嵌入式的小夥伴,他經常用仿真器調試/下載軟件,對J-Link、ST-Link,JTAG,SWD這些傻傻分不清楚,趁着空閒時刻我就寫了這篇博客,和他一起進步。
1. J-Link
J-Link
是德國SEGGER
公司爲支持仿真ARM
內核芯片推出的JTAG
仿真器,很多ARM
芯片的接口協議是JTAG
,JLink
一端接電腦USB
接口,一端接CPU
的JTAG
接口,JLink
充當的作用就是USB
轉JTAG
,支持JTAG
和SWD
兩種模式。
- 可配合
IAR EWAR,ADS,KEIL,WINARM,RealView
等集成開發環境; - 支持
ARM7/ARM9/ARM11
,Cortex M0/M1/M3/M4
,Cortex A5/A8/A9
等內核芯片的仿真;
JLink仿真器
2. ST-Link
ST-Link
是ST
意法半導體爲評估、開發STM8/STM32
系列MCU
而設計的集在線仿真與下載爲一體的開發工具,支持JTAG/SWD/SWIM
三種模式。
- 支持所有帶
SWIM
接口的STM8
系列單片機 - 支持所有帶
JTAG/SWD
接口的STM32
系列單片機
ST-Link仿真器
3. ULink
ULINK
已經停產,在售的是ULINK2
和ULINKpro
版本,ULINK2
是ARM/KEIL
公司(2005年ARM收購了KEIL
)最新推出的配套RealView MDK
使用的仿真器,ULINK2
仿真器也被稱爲Keil ULINK2
、ARM ULINK2
仿真器。
ULINK2仿真器
ULINK2仿真器支持:
- 片上調試(使用片上
JTAG/SWD/SWV
) FLASH
存儲器編程(用戶可配置FLASH
編程算法)
以下是各版本ULINK
仿真器的區別,可見支持的芯片內核,軟件開發工具等內容;
ULink各版本之間的區別
4. JTAG
JTAG
(Joint Test Action Group
,聯合測試行動小組)是一種國際標準測試協議(IEEE 1149.1
兼容),主要用於芯片內部測試,現在多數的器件都支持JTAG
協議,ARM
、DSP
、FPGA
等,JTAG
接口的單片機用電腦USB下載調試程序,需要用到J-Link
(USB轉JTAG
)。
標準的JTAG
是四線:TDI,TMS,TCK,TDO
,分別對應數據輸入,模式選擇,時鐘,數據輸出,復位管腳可不接。
仿真器Pin no. | 仿真器接口 | 目標板接口 | 信號描述 |
---|---|---|---|
19 |
5V supply |
VCC |
電源正極 |
5 |
TDI |
TDI |
數據輸入 |
7 |
TMS |
TMS |
模式選擇 |
9 |
TCK |
TCK |
時鐘信號 |
13 |
TDO |
TDO |
數據輸出 |
20 |
GND |
GND |
電源負極 |
JTAG模式J-Link與CPU的連接圖
5. SWD
SWD
全稱是Serial Wire Debug
(串行調試),SWD
模式下用JLink
給我們的板子debug
時,是用標準的二線DIO
和CLK
,RESET
管腳可不接,當你頻繁下載失敗時,可接上RESET
管腳再試。
在高速模式下,SWD
比JTAG
更可靠一些,常見的接線信號如下所示,根據具體情況自主選擇。
仿真器接口 | 仿真器接口 | 目標板接口 | 信號描述 |
---|---|---|---|
19 |
5V supply |
VCC |
電源正極 |
7 |
SWDIO |
SWDIO |
數據信號 |
9 |
SWCLK |
SWCLK |
時鐘信號 |
20 |
GND |
GND |
電源負極 |
15 |
RESET |
nRST |
復位信號 |
注意: SWD
模式下,SWDIO
的上拉電阻可預留不貼,在ST
的一些MCU
參考設計中,有提到建議添加,實際測試不加不影響下載。
SWD模式J-Link與CPU的連接圖
6. SWIM
SWIM
接口常見於ST
的STM8
系列單片機,ST-Link2
與STM8
連接只需要4根線,見表格。
Pin no. | 仿真器接口 | 目標板接口 | 信號描述 |
---|---|---|---|
Pin1 |
VDD |
VCC |
電源正極 |
Pin2 |
DATA |
SWIM |
SWIM pin |
Pin3 |
GND |
GND |
電源負極 |
Pin4 |
RESET |
RESET |
復位信號 |
ST-Link上的SWIM管腳排列
8. 小結一下
附上JTAG/SWD模式管腳對照表:
JTAG/SWD模式管腳對照表
總結一下J-Link、ST-Link、ULink三種仿真器之間的區別:
JLink
是通用型的ARM
內核芯片仿真器,支持的芯片和軟件開發環境多,優選
;ST-Link
是針對STM8/STM32
,如果你使用STM8/STM32
單片機,首選ST-Link
,當然用JLink
下載ST
系列單片機也可以;ULink
專注於Keil
平臺,支持ARM7/9
,Cortex-M0~M4
,ULink2
還支持8051
系列芯片,綜合性能(支持芯片種類、軟件開發環境及及調試速度)均不如JLink
;- 三者都支持
JTAG
和SWD
模式;
再總結一下JTAG、SWD、SWIM三種下載模式的區別:
JTAG
接線比較多,高速模式下穩定性不如SWD
;SWD
接線少,可空出多餘的GPIO
,所需要的接線信號不同仿真器會有所差別(主要在VCC
和RESET
),DIO
和CLK
必接;SWIM
常見於STM8
單片機,需用4
根線;
小麥大叔快來學習了,點點滴滴,皆是學問,一起進步吧!
永遠相信美好的事情即將發生!作者記得誠,寫於安徽合肥,時間2020-04-14 PM22:36