关于JTAG和SWD的运用差异,觉得下面这篇文章讲的比较明晰了,所以转帖到这儿,期望对新手有所协助。
SWD与JTAG差异及运用状况[转载]
一、SWD 和传统的调试办法差异
1. SWD 形式比 JTAG 在高速形式下面愈加牢靠。 在大数据量的状况下面 JTAG 下载程序会失利, 可是 SWD 产生的几率会小许多。根本运用 JTAG 仿真形式的状况下是可以直接运用 SWD 形式的, 只需你的仿真器支撑。 所以引荐咱们运用这个形式。
2. 在咱们 GPIO 刚好缺一个的时分, 可以运用 SWD 仿真, 这种形式支撑更少的引脚。
3. 在咱们板子的体积有限的时分引荐运用 SWD 形式, 它需求的引脚少, 当然需求的 PCB 空间就小啦! 比方你可以挑选一个很小的 2.54 距离的 5 芯端子做仿真接口。
二、仿真器对 SWD 形式支撑状况
1. 市面上的常用adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=8523ed72251f826f&k=%B7%C2%D5%E6%C6%F7&k0=%B7%C2%D5%E6%C6%F7&kdi0=0&luki=9&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=6f821f2572ed2385&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1831118&u=http%3A%2F%2Fwww%2E51hei%2Ecom%2Fmcu%2F1955%2Ehtml&urlid=0″ id=”7_nwl” mpid=”7″ target=”_blank”>仿真器对 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引脚。