stm32 JTAG和SWD的使用区别

发布者:心愿实现最新更新时间:2015-07-01 来源: 51hei关键字:stm32  JTAG  SWD 手机看文章 扫描二维码
随时随地手机看文章
对于JTAG和SWD的使用区别,觉得下面这篇文章讲的比较清晰了,所以转帖到这里,希望对新手有所帮助。

 SWD与JTAG区别及使用情况[转载]


一、SWD 和传统的调试方式区别

 

    1. SWD 模式比 JTAG 在高速模式下面更加可靠。 在大数据量的情况下面 JTAG 下载程序会失败, 但是 SWD 发生的几率会小很多。基本使用 JTAG 仿真模式的情况下是可以直接使用 SWD 模式的, 只要你的仿真器支持。 所以推荐大家使用这个模式。

    2. 在大家 GPIO 刚好缺一个的时候, 可以使用 SWD 仿真, 这种模式支持更少的引脚。

    3. 在大家板子的体积有限的时候推荐使用 SWD 模式, 它需要的引脚少, 当然需要的 PCB 空间就小啦! 比如你可以选择一个很小的 2.54 间距的 5 芯端子做仿真接口。


二、仿真器对 SWD 模式支持情况

 

1. 市面上的常用仿真器对 SWD 模式支持情况

 

(1) JLINKV6 支持 SWD 仿真模式, 速度较慢。
(2) JLINKV7 比较好的支持 SWD 仿真模式, 速度有了明显的提高,速度是 JLINKV6 的 6 倍。 
(3) JLINKV8 非常好的支持 SWD 仿真模式, 速度可以到 10M。
(4) ULINK1 不支持 SWD 模式。
(5) 盗版 ULINK2 非常好的支持 SWD 模式, 速度可以达到 10M。
(6) 正版 ULINK2 非常好的支持 SWD 模式, 速度可以达到 10M。

 

2. SWD 硬件接口上的不同

 

(1) JLINKV6 需要的硬件接口为: GND, RST, SWDIO, SWDCLK
(2) JLINKV7 需要的硬件接口为: GND, RST, SWDIO, SWDCLK
(3) JLINKV8 需要的硬件接口为: VCC, GND, RST, SWDIO, SWDCLK (注:下面有我自己用JLINKV8的实际连线及相应实验结果)
(4) ULINK1 不支持 SWD 模式
(5) 盗版 ULINK2 需要的硬件接口为: GND, RST, SWDIO, SWDCLK
(6) 正版 ULINK2 需要的硬件接口为: GND, RST, SWDIO, SWDCLK

 

    由此可以看到只有 JLINKV8 需要 5 个引脚, 即多了一个VCC引脚,其好处是: 仿真器对目标板子的仿真需要用到 RST 引脚, 使用仿真器内部的 VCC 作这个功能其实并不是非常美妙。 因此,JLINKV8 选择了只和目标板共 GND, 但不共 VCC。 因此我觉得这种模式最合理, 当然通常情况下仿真器和目标板共 GND 和 VCC 是没有错的。

 

三、在 MDK 中SWD 模式的设置

    在调试仿真的时候用J-LINK的Cortex-M3方式已经足够,并且在MDK下他的功能已经做得非常的好,用标准20脚的JTAG下载,速度是非常的快,一般初学者都是这样做的。但是SWD方式似乎速度更快、更加方便、简捷、,对于项目中对板子空间要求严格、I/O口资源紧张的用户来说更加的有利,正常的JTAG需要20管脚,而J-Link 的SWD只需要2根线(PA13/JTMS/SWDIO、PA14/JTCK/SWCLK)就够了(加上电源线也就4根),这样就节省了3个I/O口(PA15/JTDI、PB3/JTDO、PB4/JNTRST)为其它所用,并且可节省一部分板子的空间(只需4个口就可以了)。

    下面我说一下SWD两线仿真的一些步骤、注意事项及需要注意的问题。

    接口的连接如下:将JLINK的1、7、9、20分别与自己的开发板上JTAG的VCC、JTMS、JTCK、GND用杜邦线相连即可!

 

    接下来告诉大家怎么使用SWD设置:

 

打开工程OPTION设置:

 

 


    在设置中按照上图设置成 SWD 模式, 速度你可以按照你的实际需求来设置, 如果你的板子供电系统不是特别稳定, 纹波比较大或者仿真线比较长可以设置成 500K 或者 1M,如果环境很好当然可以选择 10M , 当然速度会飞起来。

 

 

    记得不要忽略了左下方的那个USB还是 TCP 模式, 当然我们是 USB 模式, 因为有的时候默认是 TCP 模式, 这个时候我们忽略这个设置后会仿真常常连接不上的。

 

 

 

 

/////转载结束


下面是我自己的试验(用JLINK V8)

 

(1)按SW方式来调试,实际需要接1,7,9,15,20脚,某些资料上说的需要6个脚(第13脚SWO也需要连上)是不对的,SWO不需要连接。

    按上所述连接5个引脚时出现的画面

 

 

   1脚不接时出现的画面

 

 

 

(2)用两种方式的速度没有太大的区别。


再次测试:

 

(1)不接第15脚,即RESET脚,仅接4条引线,即Vref,SWDIO,SWCLK,GND。

(2)设置时Reset位选择:AutoDetect,可以正常下载,仿真。

(3)如果Reset位选选择:HW Reset ,则不能正常下载。

(4)速度远没有上面转载中说的那样快,擦除和写入ucosDemo工程约需40多s。以下是这个工程的代码量:

Program Size: Code=96830 RO-data=143650 RW-data=1016 ZI-data=16440

   但是有个现象,即下载一次后退出,然后再次进入(没有重编译时),似乎没有擦除和下载的过程,时间飞快。也许这就是上面所说的时间快的原因?


////以下来自21icbbs

 

    问:一直在核心板上玩 103ZE,都是些小程序 都是在RAM中调试的,而且只接三根线GND SWDIO SWCLK (VCC 直接接JLINK内部的),很爽利。不过今天要试IIS 要放一个大的数据进去,于是要烧到FLASH中去, 发现很快进度条走完, 然后显示失败,放狗一搜,说要接RESET,于是接上,果然下进去了...惨了,我PCB都画好了,都只有4线(VCC SWDIO SWCLK GND),以后怎么办呢?

    答:可以不接,可以在MDK仿真器的设置里面不使用硬件复位,而是用system reset或者vect reset,前者适用的范围更广

/////转载结束


    JTAG引脚可以被复用为IO口,但是这样一来,JLINK就不能够连上芯片了。解决的方法有两种:

    (1)另写一段程序,不要将JTAG复用为I/O口,然后将这段程序用串口工具写入芯片中;

    (2)将BOOT0/BOOT1设置成为内部RAM启动,那么上电后就不会执行FLASH中的程序,这样JLINK就能顺利“接管”JTAG引脚。


关键字:stm32  JTAG  SWD 引用地址:stm32 JTAG和SWD的使用区别

上一篇:NVIC_PriorityGroupConfig()说明
下一篇:STM32在程序中禁用JTAG功能后不能进行仿真的解决办法

推荐阅读最新更新时间:2024-03-16 14:23

STM32开发环境(MDK)搭建及第一个项目工程
一、开发环境搭建 1.1 下载IDE 目前STM32开发常用的IDE有IAR、MDK等,这里我挑选MDK。如果你是IAR的爱好者,那么这篇文章可能不适合你。 MDK官方下载地址,目前最新版本是5.26。 官网下载页面入口: 下载需要填写个人信息: 点击下载即可: 从官网下载会比较慢,为了方便大家下载,有需要的同学可以到我的网盘上获取。 1.2 IDE安装 可以配置安装路径。默认安装在C盘根目录下。 填写用户信息。随便写,不影响使用。 一路Next,最后点击Finish。 弹出一个包安装的界面。如果你要开发的芯片MDK不支持,需要通过这个Pack Installer去安装相应的包,这里先关闭忽略掉。
[单片机]
<font color='red'>STM32</font>开发环境(MDK)搭建及第一个项目工程
STM32 M0时钟配置
本文主要讲STM32 M0的时钟配置。 先来看看M0内核的时钟树(stm32f072) 图中可以看出,M0芯片的时钟源有4个,一个高速内部RC时钟源,频率为8M;一个高速外部时钟源,频率为8到32MHz;一个低速外部时钟源,频率一般为32.768kHz;一个低速内部时钟源,频率为40kHz; 一、HSI 芯片上电的时候默认启用内部RC震荡,即8MHz的内部时钟源,如果对时钟要求不是特尔高的时候,使用内部时钟也够了,省下一个外部晶振的钱。 下面首先说说使用内部时钟的配置,官方提供的demo默认的就是使用内部时钟的,我们先从时钟树分析,HSI(8MHz)启动,经过PLLSRC(锁相环时钟源选择寄存器),然后来到PREDIV(预分频
[单片机]
stm32待机模式和停机模式唤醒程序的区别
这两天研究了STM32的低功耗知识,低功耗里主要研究的是STM32的待机模式和停机模式。让单片机进入的待机模式和停机模式比较容易,实验中通过设置中断口PA1来响应待机和停机模式。 void EXTI1_IRQHandler(void) { if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)) { delay_ms(10); while(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)); if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)) { EXTI_ClearITPendingBit(EXTI_Line1); RT
[单片机]
STM32 —— 多路ADC采集
#ifndef _ADC_H_ #define _ADC_H_ #include type.h #include debug.h void ADCInit(void); uint16_t ADCGetData(uint8_t channel); uint16_t ADCGetAverage(uint8_t channel, uint8_t times); #ifndef CONFIG_CAN void adc_test(void); #endif #endif /* _ADC_H_ */ // input1~5 -- 模拟量IO口; input6~10 -- 普通IO口用 #define ADC_CHANNEL
[单片机]
STM32触摸按键
01、触摸按键原理 触摸使用RC充放电原理: RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用的电路。 充电过程: 电源通过电阻给电容充电,由于一开始电容两端的电压为0,所以电压的电压都在电阻上,这时电流大,充电速度快。随着电容两端电压的上升,电阻两端的电压下降,电流也随之减小,充电速度小。充电的速度与电阻和电容的大小有关。电阻R越大,充电越慢,电容C越大,充电越慢。衡量充电速度的常数t(tao)=RC。 放电过程: 电容C通过电阻R放电,由于电容刚开始放电时电压为E,放电电流I=E/R,该电流很大,所以放电速度很快。随着电容不断的放电,电容的电压也随着下降。电流也很快减小。电容的放电速度与RC有关,R
[单片机]
<font color='red'>STM32</font>触摸按键
STM32F103关闭SWD/JTAG功能无法烧录时处理方法
现象: 1.SWD或者JTAG无法连接 2.FLASH ARM烧录出现以下错误 - Erasing affected sectors ... - ERROR: RAM check failed @ address 0x20000000. - ERROR: Write: 0x03020100 07060504 - ERROR: Read: 0x00000000 00000000 - ERROR: (0 bytes of RAM have been checked successfully) - ERROR: Failed to erase sectors - ERROR: Failed to
[单片机]
STM32系统架构
在小容量、中容量和 大容量产品中,主系统由以下部分构成: ● 四个驱动单元: ─ Cortex-M3内核DCode总线(D-bus),和系统总线(S-bus) ─ 通用DMA1和通用DMA2 ● 四个被动单元 ─ 内部SRAM ─ 内部闪存存储器 ─ FSMC ─ AHB到APB的桥(AHB2APBx),它连接所有的APB设备 这些都是通过一个多级的AHB总线构架相互连接的,如下图所示: 在互联型产品中,主系统由以下部分构成: ● 五个驱动单元: ─ Cortex-M3内核DCode总线(D-bus),和系统总线(S-bus) ─ 通用DMA1和通用DMA2 ─ 以太网DMA ● 三个被动单元 ─ 内部SRAM ─ 内部闪存
[单片机]
<font color='red'>STM32</font>系统架构
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved