JTAG与SWD接口的.ppt
- 格式:ppt
- 大小:532.00 KB
- 文档页数:53
手贱将STM32F103的SWD、JTAG接口remap禁止后单片机:stm32f103开发环境:keil uvision4烧写器:J-link,SWD接口使用STM32F103的PB3引脚作为GPIO口,但其默认功能为JTDO,需要remap。
Remap 中,使能GPIO_Remap_SWJ_JTAGDisable就可以了,这样是禁止JTAG,但保留SWD,因为板子设计用的是使用SWD接口进行烧写。
结果手贱,尝试了GPIO_Remap_SWJ_Disable,将整个SWD和JTAG都禁止了。
好吧,接下来就是程序运行完毕remap后,keiluvision4就不能再读取stm32的寄存器内容了,变量窗口的变量不能再查看了;想再重新烧写下、擦除下,提示错误,no cortex-m device,断电再上电,也不行,因为flash中的程序上电后自动运行,将SWD口禁止了。
网上查,解决方法是“将BOOT0脚和BOOT1脚接3.3V,这种方法是由RAM启动,所以之前你烧进去的程序是不会运行的,也就不存在JTAG被禁止”。
如果你的板子上做了BOOT 启动选择电路,那你就可以不用往下看了。
但略坑的是我的板子上的BOOT0已经直接接到GND了,总不能割线再飞线吧。
然后想到的就是NRST复位了。
但是,再次略坑的是板子上没有做手动复位电路,NRST 悬空在。
好吧,还好,NRST复位脚悬空在,而不是直接拉高。
比较幸运的是板子上焊接了一个拨码开关模块,开关ON时,接GND,开关OFF时,悬空。
接下来使用NRST来实现重新烧写。
飞线将NRST接到该开关,打到ON档,将NRST接GND。
板子上电,烧写时提示错误:cpudid not halt after reset(类似于这样,记不清)。
这是因为NRST一直为低,CPU一直为复位。
比较幸运的是,keil+J-Link还是比较执着,尝试一次不成功后,还尝试了第2、第3次等(具体几次不记得了,从output消息窗口可看出J-Link尝试了好几次)。
For my breadboarded test rig, I used a four pin Harwin M20 connector. Even on a half size micromouse, this will not take up much room and I may use it as the only debug/programming connector.The pins on the 20-pin standard JTAG connector to use are:Pin 1 – VCC:This is the traget board Vcc. It is used by the STLINK/V2Pin 7 – TMS/SWDIO:The SWD Data signalPin 8 – GND:Be sure there is a common groundPin 9 – TCK/SWCLKThe SWD Clock SignalPin 15 – nSRST/RESETSystem reset – probably optional(你可以不要这个复位pin,直接关电源再上电来复位)ST-Link/V2 JTAG/SWD接口定义:可以自己做一些转接PCB板子,现在USB四线的可以用起来。
做一个现在智能手机usb接口,接四根线就好SWD不单单可以下载还可以单步调试,速度比JTAG快。
有人问,那为什么要发明JTAG这个20pin 的接口呢?因为JTAG标准制定不是为了下载程序调试程序用的,它用来做“边界扫描”用的,什么是边界扫描不知道的可以搜搜一些,在国内谷歌需要翻墙软件才好用。
百度搜索专业术语类不好用,最近我发现好多东西搜搜比百度好用不少。
JTAG接口
JTAG口(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行调试和仿真。
标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
JTAG模块采用了10PIN仿真调试接口,如图所示,表为对应管脚定义。
20PIN的插座连接C8051F360芯片的JTAG接口,插座的信号配置要和ARM LM LINK调试器接口一致。
JTAG调试电路设计如图所示。
136
79
248
5
10
JTAG插针示意图
F360的JTAG插座管脚定义
PIN号名称
1 VDD
2 ,
3 , 9 GND
5 /RST
7 /RST/C2CK
6 P4.6/C2D
10 NC
使用方法:调试程序以及下载程序时将JTAG接口按照缺口方向接上。
不使用时拔下。
JTAG与SWD引脚对比JTAG与SWD引脚对于仿真ARM,TKScope仿真器家庭的AK100/AK100Pro、K8/K9等仿真器提供标准的20PIN调试接口。
接口管脚定义如下。
其中ARM芯片有两种调试模式,一种是JTAG,一种是SWD,二者在管脚上有复用。
具体所用的型号是否支持,需要查看数据手册。
JTAG调试接口引脚JTAG调试接口必须使用VCC、GND电源信号,以及TMS、TCK、TDI、TDO四根调试信号,可选TRST、RESET复位信号和RTCK(同步时钟)信号。
VRef :目标板参考电压信号。
用于检查目标板是否供电,直接与目标板VDD联,并不向外输出电压;GND:公共地信号;TRST:JTAG复位,连接到目标CPU的nTRST引脚,用于复位CPU调试接口的TAP控制器;目标板上应将此脚上拉到高电位,避免意外复位;TDI:仿真器连接至目标CPU的数据输入信号,建议在目标板上将此脚上拉到Vdd;TMS:仿真器输出给目标CPU的JTAG模式设置信号。
必须在目标板上将此脚上拉; TCK:仿真器输出给目标CPU的JTAG时钟信号,建议在目标板上将此脚上拉; TDO:目标CPU返回给仿真器的数据信号;RTCK:目标CPU提供给仿真器的时钟信号。
有些目标要求JTAG的输入与其内部时钟同步。
仿真器利用此引脚的输入可动态地控制自己的TCK速率。
若不使z用此功能,在目标板上将此脚接地,有些芯片可能要求上拉;RESET:仿真器输出至目标CPU的系统复位信号。
’虽然TRST、RESET是可选的信号;但一般都建议接上,使得仿真器能够在连接器件前对器件进行复位,以获得较理想的初始状态,便于后续仿真。
SWD接口引脚SWD是ARM公司提出的另一种调试接口,相对于JTAG接口,使用更少的信号。
四根信号如下:VRef :目标板参考电压信号。
用于检查目标板是否供电,直接与目标板VDD联,并不向外输出电压;GND:公共地信号;SWDIO:串行数据输入输出,作为仿真信号的双向数据信号线,建议上拉;SWCLK:串行时钟输入,作为仿真信号的时钟信号线,建议下拉;SWO:串行数据输出引脚,CPU调试接口可通过SWO引脚输出一些调试信息。
周立功致远电子:ISP、IAP、ICP、JTAG、SWD的编程特点摘要:ISP、IAP、ICP、JTAG、SWD这些术语,经常看到、听到,在日常的工作中也经常用到,但你真的了解她们吗?电子工程师都知道,半导体技术发展迅猛,带动了各种芯片技术的不断升级。
在数据存储方面,从最初的掩膜ROM,发展到现在的Flash技术,存储技术的不断改进,相对应的编程技术也在不断发展。
记得老一辈工程师在烧写51单片机的时候还是用一台硕大的编程器进行程序下载,而且还是一次性的(OTP),每次都小心谨慎的把代码调试了又调试后才下载看效果。
现在简单到只需一个串口下载器即可实现程序下载,基本不需要考虑编程次数的问题,一有想法随时编译下载更新。
在这个发展过程中,也诞生了很多编程技术,比如ISP、IAP、ICP,另外还有JTAG编程、SWD编程、UART编程等等。
玩单片机的对这些词应该都不陌生,但他们之间有什么区别呢?首先看下他们的定义:ISP:In System Programing,在系统编程ICP:In Circuit Programing,在电路编程IAP:In Application Programing,在应用编程JTAG编程:通过JTAG协议进行编程SWD编程:通过SWD协议进行编程UART编程:通过UART进行编程看似很乱,其实捋清楚他们之间的层次关系就不会乱了。
用个图来形象表示一下:从图上看,ISP和ICP是处于最顶层的技术。
描述的是一种编程结构,所用使用到的协议、通信端口等,不同芯片有不同的定义。
IAP在第二层,是一种编程方式。
实现方式是将一段目标芯片可执行的代码通过某种通信协议下载到芯片RAM中并由芯片执行,由该代码实现具体操作以达到编程的目的。
这种方式需要芯片支持通过某种通信协议对芯片的RAM进行读写并能控制其CPU。
这是在编程结构下的一种编程方式,像AK100Pro、SmartPRO 5000U-Plus等烧录器,都用到了这种编程方式。
使用过ARM芯片的人肯定都听过一个仿真器————JLINK,为什么ARM芯片现在能够这么流行?其中恐怕就有一个原因就是很多的ARM芯片都支持使用Jlink进行调试和仿真。
所以你只要有一个Jlink,不管是ARM7、ARM9、ARM11还是最新的ARM Cortex 系统都能下载和调试了。
以前的嵌入式开发者,可能使用什么公司的芯片就得买一个对应芯片的下载和仿真器,这样如果你只使用一种芯片,可能还好,不过恐怕没有那种芯片能够一直引领市场。
Jlink使用的是一种叫做JTAG的协议,JTAG原本是用于芯片内部测试的,现在大多用于芯片的程序下载和调试仿真。
由于现在Jlink用的比较多,所以有些人可能把Jlink就等同于JTAG了,实际上,JTAG是一种协议,只要满足这种协议的就可以叫做JTAG,比如H—JTAG、OpenJTAG、OSJTAG等等。
正版的Jlink是卖的很贵的。
大概是1000到2000RMB吧。
不过,中国的山寨能力是很强的,而且你硬件卖给别人了,你也没办法控制别人说你不许拆开我的东西看里面的电路是怎么样的。
所以Jlink就被破解了,破解之后的Jlink很便宜,网上五六十块钱就能买到一个能用的Jlink。
除了商业版的Jlink和H—JTAG,网上还有一些电子爱好者,他们参照开源软件的模式,设计了开源硬件,比如arduino。
还有人制作了开源版本的JTAG仿真器——OpenJTAG。
而一些芯片的开发商不像那些软件厂商,会给软件做很多的限制,他们对于开源硬件还是比较开明的,所以他们也支持了一些开源硬件。
比如TI公司的MSP430 LaunchPad、ST公司的STM Discovery 等等板子。
还有飞思卡尔公司的USBDM和OSJTAG。
他们把这些硬件的原理图、PCB还有固件都放在了网络上供人自由下载和制作,你也可以根据他的资料进行改进。
这样能使大家对于他们家的芯片有更多的了解,所以,他们也乐于开源一些评估板。
ARM仿真器JLINK、ULINK使用SWD调试时的接线
方式
手头的仿真器是JLINK V8,连接STM32F103 时,使用SWD 方式。
JTAG 引脚示意图:
一、SWD 和传统的调试方式区别
1. SWD 模式比JTAG 在高速模式下面更加可靠
2. GPIO 刚好缺一个的时候, 可以使用SWD 仿真, 这种模式支持更少的引脚
3. 在板子的体积有限的时候推荐使用SWD 模式
二、仿真器对SWD 模式支持情况
1. 市面上的常用仿真器对SWD 模式支持情况
JLINKV8 非常好的支持SWD 仿真模式, 速度可以到10M
ULINK2 非常好的支持SWD 模式,速度可以达到10M
2. SWD 硬件接口上的不同
(1) JLINKV7 需要的硬件接口为: GND, RST, SWDIO, SWDCLK(2) JLINKV8 需要的硬件接口为: VCC, GND, RST, SWDIO, SWDCLK (注:下面有我自己用JLINKV8 的实际连线及相应实验结果)(3) ULINK1 不支持SWD 模式(4) ULINK2 需要的硬件接口为: GND, RST, SWDIO, SWDCLK
三、在MDK 中SWD 模式的设置
正常的JTAG 需要20 管脚,而J-Link 的SWD 只需要2 根线(PA13/JTMS/SWDIO、PA14/JTCK/SWCLK)就够了(加上电源线也就4 根),这样就节省了3 个I/O 口(PA15/JTDI、PB3/JTDO、PB4/JNTRST)为其它所用,并且可节省一部分板子的空间(只需4 个口就可以了)。
JTAG接口1. 简介JTAG(Joint Test Action Group,联合测试行动小组)接口是一种用于测试和调试电子设备的标准接口。
它可以提供对设备内部的信号和状态进行非侵入性访问,方便测试和调试工作的进行。
2. JTAG接口的原理JTAG接口基于IEEE 1149.1标准而设计,通常由以下几个主要部分组成:2.1 TAP控制器TAP(Test Access Port,测试访问端口)控制器是JTAG接口的核心部分,它负责控制JTAG链上的各个设备进行测试和调试操作。
TAP控制器包含四个主要状态:Test-Logic-Reset (测试逻辑复位)、Run-Test/Idle(运行测试/空闲)、Select-DR-Scan(选择数据寄存器扫描)和 Select-IR-Scan(选择指令寄存器扫描)。
2.2 数据寄存器和指令寄存器JTAG接口通过数据寄存器和指令寄存器实现对设备内部信息的读取和写入。
数据寄存器用于存储设备内部的数据,指令寄存器用于存储控制设备的指令。
2.3 JTAG链JTAG链是由多个设备连接在一起形成的链路,每个设备都有一个JTAG接口用于进行测试和调试操作。
通过JTAG链,可以对所有设备进行统一的控制和访问。
3. JTAG接口的应用JTAG接口广泛应用于电子设备的测试和调试领域。
它可以用于以下几个主要方面:3.1 片上自检(BIST)JTAG接口可以用于进行片上自检(Built-In Self-Test,BIST)操作,通过读取和分析测试模式下设备内部的信号和状态,检测设备是否正常工作。
3.2 调试模式JTAG接口可以进入设备的调试模式,可以对设备进行单步调试、断点调试等操作,方便开发人员进行程序调试和故障排查。
3.3 仿真和验证JTAG接口还可以用于仿真和验证工作。
通过JTAG接口,可以将外部测试模式下的信号加载到设备内部进行仿真和验证工作。
4. JTAG接口的优势与其他调试和测试接口相比,JTAG接口具有以下几个显著的优势:4.1 非侵入性访问JTAG接口可以在不破坏原有电路功能的情况下,对设备内部信号进行读取和分析。