一、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 是没有错的。(编者备注:以上这段话源自网络,实际测试中不接RST引脚,仿真能正常工作,未发现异常。)
测试环境
MDK 开发环境 版本号:V4.22
编程器:J-Link V8 4.35b
J-Flash ARM 烧写软件版本号:V4.02e
目标板芯片:STM32F101R8
PC操作系统:Windows XP
备注:我用2个编程器对以上情况分别进行了测试,一个编程器是未进行升级的,另一个编程器进行了升级(升级到了4.80b),但升级最后时出现点小问题在4.7.3的MDK下仿真有问题。未升级的编程器按照上述方法进行SWD下载,功能正常,但是那个升级过的编程器无法采用SWD下载,在MDK\options\Debug\setting\SW device 窗口 识别器件ID时总出现如下图片:
原因分析:可能是升级过的编程器自身有问题,但这个编程器在4.22的MDK下用JTAG方式能够正常下载及仿真。
二、使用J-Flash ARM 下载时一些问题
打开该软件,配置完工程设置,连接目标器件时,经常出现如下问题(见图片):
原因分析:出现此类情况,表明软件与J-Link仿真器未能成功连接,但此时J-Link 在MDK 下却仍能正常使用。解决此类问题的最有效方法是重启电脑,有时多插拔几次J-Link 编程器也能解决,有时把同时开着的MDK 关闭后,重新插拔J-Link也能解决。判断此种故障一方面是编程器自身原因,一方面是电脑安装的SEGGER 公司的J-Link 驱动软件版本低,还有一种可能就是J-Link被MDK 占用了。
另请注意,使用J- Flash ARM 下载时 Options\Project settings\Target Interface\SWD \SWD speed after init 要选择“Auto selection”,若手动指定速度时容易出错(实验时手动指定速度超过600KHZ ,编程就出错)。 而”SWD speed before init ”速度则既可以自动也可以手动指定(手动指定为1200KHz 也能正常初始化内核)。
通过调用 J-Link commander 程序,可以判断PC机与J-Link 编程器是否正常连接。
正常连接时,如下图:
未正常连接时如下图: