TMS, SWIO TMS, SWIO JTAG:Test Mode State pin ; SWD: Data I/O pin 8. GND GND或悬空 9. TCLK, SWCLK TMS, SWCLK JTAG: Test Clock pin ; SWD: Clock pin 10. GND GND或悬空 11. RTCK RTCK 12.
随着ARM公司对Cortex系列的推出,采样SWD方式调试成了大家的首选。SWD不仅速度可以与JTAG媲美,而且使用的调试线少得多。 很多人在采样SWD方式进行调试时,一般都是采用4线: ① VCC – 电源 ② GND – 地线 ③ SWDIO – 数据 ④ SWCLK – 时钟
JLink,SWD 接口定义 缺口向左,左边为JLink接口 定义, 右边为SWD接口定义 JTAG主要使用的有:TRST,TDI,TMS,TCLK,TDO,RESET,GND,(VCC可不连接) SWD主要使用的有:VCC,SWDIO,SWCLK,GND JLink,SWD 接口说明 仿真器端口 连接目标板 备注 1. TMS, SWIO TMS, SWIO JTAG:Test Mode State pin ; SWD: Data I/O pin 8. GND GND或悬空 — 9. TCLK, SWCLK TMS, SWCLK JTAG: Test Clock pin ; SWD: Clock pin 10. GND GND或悬空 — 11. RTCK RTCK — 12.
1、实验目的: 实现通过st-link调试stm32芯片 2、实验环境: stm32开发板留有20pin的调试接口,可接jlink和stlink 调试工具使用st-link v2 3、接线方式 SWD接口需要连接四根线 It is used by the STLINK/V2 Pin 7 – TMS/SWDIO: The SWD Data signal Pin 8 – GND: Be sure there is a common ground Pin 9 – TCK/SWCLK The SWD Clock Signal Pin 15 – nSRST/RESET System reset – probably
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141845.html原文链接:https://javaforall.cn
最近要使用stm32f103c8t6最小系统板,直接ISP串口下载程序太麻烦,就想着使用swd接口来调试。 结果:通过SWD接口下载程序成功,但调试失败,还不知原因,会的的人麻烦交流一下。 SWD接口:3.3V DIO(数据) CLK(时钟) GND 1.首先声明 jlink和stlink都有jtag和swd调试功能。 jlink接口如下:如图,我使用的就是VCC VCC(optional) GND SWDIO SWCLK RESET stlink我没有实际测试过,应该可以使用SWD接口,具体图自行百度 在下图的2中,如果没有SWD后面的芯片信息,说明stm32f1芯片没有识别,试着将VCC和VCC(optional)连接起来,此时颜色由绿色变红色,是正常的;检查连线是否正确。
SWD 和传统的调试方式区别 1. SWD 模式比 JTAG 在高速模式下面更加可靠。 在大数据量的情况下面 JTAG 下载程序会失败, 但是 SWD 发生的几率会小很多。 基本使用 JTAG 仿真模式的情况下是可以直接使用 SWD 模式的, 只要你的仿真器支持。 所以推荐大家使用这个模式。 2. 在大家 GPIO 刚好缺一个的时候, 可以使用 SWD 仿真, 这种模式支持更少的引脚。 3. 在大家板子的体积有限的时候推荐使用 SWD 模式, 它需要的引脚少, 当然需要的 PCB 空间就小啦! 比如你可以选择一个很小的 2.54 间距的 5 芯端子做仿真接口。 1. 注:SWD自带复位协议,所以无需接RST脚。 JTAG实测不接RST脚也可以下载。 对于网上需要接RST的说法可以不接。
1、SWD模式第15脚可接可不接(有问题再接) 2、SWD模式第1脚VCC由目标板提供参考电压,若目标板MCU电压与SWD第2脚电压相同,则可以将1脚与2脚短接,实现3线式SWD 发布者:全栈程序员栈长
TCK在IEEE1149.1标准里是强制要求的。TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。
如何制作SWD接口接线,并使用keil4_Jlink烧录芯片。 背景 过程 背景 刚到一个新公司的第一个礼拜。通过web界面更新app总是导致bios失效。 首先知道SWD需要Jlink的脚是GND(地线)、TMS(数据线)、TCK(时钟线)、NSRST(重启线)。所以得得将jlink这几个角引出来。
SWD_Delay(); SWD_CLK_H; SWD_Delay(); SWD_CLK_L; } } 写命令头函数 static void SwdSendByte(u8 } else { SWD_DIO_L; } dat<<=1; SWD_CLK_H; SWD_Delay(); SWD_CLK_L; (cmd); SWD_IN; for(i=0;i<3;i++)//ack 此处需要处理判断 { SWD_CLK_H; SWD_Delay(); SWD_CLK_L; SWD_IN; //trn for(i=0;i<2;i++) { SWD_CLK_H; SWD_Delay(); SWD_CLK_L; SWD_CLK_H; SWD_Delay(); SWD_CLK_L; SWD_Delay(); SWD_CLK_H; SWD_Delay
SWD:Serial Wire Debugging,翻译为:串行调试接口。 其中STM8使用的调试仿真接口是SWIM;STM32使用的调试仿真接口为JTAG或者SWD;因为SWD占用的MCU引脚数相比JTAG较少,所以一般情况下项目中大部分工程师都是采用SWD作为仿真调试接口。 三种接口如下图所示: 三、标准的JTAG和SWD接口定义如下: ST-LINK仿真上JTAG/SWD接口定义如下图所示,如果使用SWD进行STM32的仿真时,需要接下面红色框框中的4根线到MCU端; ,需要再次查找JTAG/SWD的接口定义而浪费时间;JTAG转SWD转接板上的JTAG引脚和SWD引脚都已经通过排针引出来,并且旁边有丝印进行注明(正反面都有哟),更加方便大家对各个引脚的识别;如果项目中用到的是 在JTAG转SWD转接板的背面,还增加了励志语句的丝印,希望各位大师都能享受项目的研发,希望JTAG转SWD转接板能够带给你各种便利。
关闭器件:SWC 关断,SWD 永久导通(提供电感电流回路)。 判据:当 VIN 足够高于 VOUT 时,单纯用降压即可满足控制需求。 典型导通顺序: SWA + SWD SWA + SWC SWA + SWD SWB + SWD 这样保证电感电流既能充放平衡,又能稳定调节输出。 Boost:只用 SWC+SWD。 Buck-Boost:混合使用四管,交替导通。 右边 (蓝色块):Boost 模式(VIN << VOUT),仅 SWC+SWD 开关,SWA 导通,SWB 关断。 下方 (红色块):Buck-Boost 模式(VIN ≈ VOUT),四管交替导通,顺序为 SWA+SWD → SWA+SWC → SWA+SWD → SWB+SWD。
而读保护的本质是芯片的选项字节被设置了,因为读保护就在选项字节里面,详情看此贴:链接 2、SWD锁 SWD接口锁住就是SWD引脚被锁住了,根本原因是用户使用这个引脚做其它功能了。 解决办法: 1、SWD引脚锁解决办法: (1)、SWD引脚被锁住的解决办法比较简单,只要下载器带了复位引脚,并且板子的SWD接口也留出了RST复位引脚,就可以正常下载程序。 原理是芯片复位上电后,SWD这几个引脚是工作在SWD默认模式的,之后才是用户为这几个引脚设置的其它功能,正是这些复用功能导致下载器无法连接到芯片。 所以只要下载器的硬件复位正常,芯片SWD接口锁住后就可以正常下载。 (2)MDK下载选择这里,复位状态进行下载。 ?
SWD_IP2COUNTY" "SWD_IP2COUNTY" WHERE "SWD_IP2COUNTY"." SQL> SELECT "SWD_IP2COUNTY"."IP_ID" "IP_ID","SWD_IP2COUNTY"."COUNTRY" "COUNTRY","SWD_IP2COUNTY"." SWD_IP2COUNTY" "SWD_IP2COUNTY" WHERE "SWD_IP2COUNTY"." SELECT "SWD_IP2COUNTY"."IP_ID" "IP_ID","SWD_IP2COUNTY"."COUNTRY" "COUNTRY","SWD_IP2COUNTY"." SWD_IP2COUNTY" "SWD_IP2COUNTY" WHERE "SWD_IP2COUNTY"."
【背景】 这个骚操作,骚就骚在SWD接口引脚复用其他功能了,板子还没有把硬件复位引脚接出来,硬件复位引脚是专治这种场景的。 【解决办法】 1、测试代码, 使用芯片LKS32MC034DF6Q8B swd.7z (311.11 KB) 2、配置SWD 转 GPIO // src file: main.c # include "lks32mc03x.h" #include "rtt_debug.h" #include "delay.h" /* USER CODE BEGIN Includes */ void SWD_to_GPIO / 向SYS_IO_CFG寄存器的第6位写入0,开启复用功能 SYS_WR_PROTECT = 0x7a83; SYS_IO_CFG &= ~BIT6; /*SWD _disable_irq(); Clock_Init(); delay_init(MAIN_CLOCK); __enable_irq(); SWD_to_GPIO
使用j-link下载程序或者在线调试的时候,有两种模式:JTAG和SWD 可以在keil中选择: 下面是两种模式下,分别用的接口引脚: 推荐使用SWD模式,因为更省引脚而且调试功能不受影响。 在SWD模式下,实际只需要4个IO口就可以了,包括下载程序和在线调试。
前面提到,在Level 1模式下,SWD调试器可以连接到MCU上。那连接上以后为什么不能读取flash中的固件信息呢?这个问题的答案一定可以从SWD调试器和MCU的交互中得出。 于是研究员利用MCU简单实现了一个SWD的简单功能,由于代码完全可控,所以能非常方便地看到SWD调试工具和MCU的所有交互流程。 又因实验需求比较明确,流程可以自动化地实现,所以笔记本电脑需要和SWD模块通信起来,“告诉”SWD模块使用哪些功能对MCU做操作。于是实验的方案如图 3所示。 ? ? 最终证实:锁定是由相应的SWD访问系统总线的数据包传输的最后一个SWCLK上升沿触发的。也就是说,SWD连接到MCU以后,只要不访问到系统总线,那flash就不会被锁定,而flash刚刚在系统总线上。 接着,发送读取flash某个地址一个字(32位)的请求,观察都有现象,最终研究员发现:当SWD像flash发起读取一个字的请求后,flash被锁定,但是,该地址的一个字的内容已经被读取到SWD调试器中,
------------------------------------------------------------ 5h92pf9xtbps4 UPDATE SWD_DRAWCN ------------------------------------------------------------ 5h92pf9xtbps4 UPDATE SWD_DRAWCN 2 TABLE ACCESS BY INDEX ROWID SWD_DRAWCN 1 111 62 (0) 00:00:01 3 INDEX RANGE SCAN IND_DRAWCN_TYPE 2 TABLE ACCESS BY INDEX ROWID SWD_DRAWCN 1 123 48 (0) 00:00:01 3 INDEX RANGE SCAN IND_SWD_DRAWCN_CN "@"UPD$1" ("SWD_DRAWCN"."