小麦大叔是我认识玩单片机,搞嵌入式的小伙伴,他经常用仿真器调试/下载软件,对J-Link、ST-Link,JTAG,SWD这些傻傻分不清楚,趁着空闲时刻我就写了这篇博客,和他一起进步。
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仿真器
ST-Link
是ST
意法半导体为评估、开发STM8/STM32
系列MCU
而设计的集在线仿真与下载为一体的开发工具,支持JTAG/SWD/SWIM
三种模式。
SWIM
接口的STM8
系列单片机JTAG/SWD
接口的STM32
系列单片机ST-Link仿真器
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各版本之间的区别
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的连接图
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的连接图
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管脚排列
附上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