【JLink仿真器】盗版检测、连接故障、检测不到芯片问题
- 一、问题描述
- 二、解决方法
- 1、降低驱动(解决非法问题以及连接故障)
- 2、SWD引脚被锁(解决检测不到芯片)
- 三、说明
一、问题描述
盗版检测:the connected probe appears to be a j-link clone
当使用非正常版本的JLink连接高版本的MDK时,再加上JLink驱动程序版本过高,就会被检测出这个问题。网上找了很多方法基本都是降低JLink驱动程序版本,然后修改.dll文件。我使用的是J-Link ARM-OB STM32,版本降低为6.98c。
连接故障:The connected J-Link is defective
当连接故障问题出现的时候,在keil中下载程序时,会提示:
JLink Info: STM32 (connect): Can not attach to CPU. Trying connect under reset.
JLink Info: STM32 (connect): Can not attach to CPU. Trying connect under reset.
***JLink Error: STM32: Connecting to CPU via connect under reset failed.
Error: Flash Download failed - Target DLL has been cancelled
如果硬件都没有问题的话,多半是JLink驱动有问题或者是单片机的SWD引脚被锁住了,所以先将驱动替换一下最好。
二、解决方法
1、降低驱动(解决非法问题以及连接故障)
① 在控制面板和设备管理器中,将原来JLink驱动卸载
② 下载JLink-6.98c驱动,并安装,直接全部点下一步就行,中途出来对话框的话,是检测到了使用JLink的软件,例如MDK,如果你打上勾,点确定,就代表你要替换MDK的JLink驱动,这个必须要打勾并点ok。如果这一步没有弹出,就去开始菜单中找J-Link DLL Updater V6.98c,点击也会出来这个对话框。
③ 替换的文件JLinkARM.dll(访问码:bt4j)。打开你的MDK安装位置,进入ARM文件夹中的Segger,将我这个dll文件复制进去,替换原来的dll。
④ 然后就大功告成了,打开keil-魔法棒-Debug-setting,查看版本是否变为V6.98c
2、SWD引脚被锁(解决检测不到芯片)
这个问题出现的总是莫名其妙,多半都是我们关闭了单片机引脚的SWD功能。有两个方法可以解决。
如果有串口1的话,使用下载器通过串口下载,激活swd引脚;首先找一个空的代码,将下面的复制进去,编译,并将hex文件烧写到单片机,复位运行即可。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
// GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE); //关闭SWD及JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); //打开SWD关闭JTAG
// GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //打开SWD及JTAG
while(1);
方法二:如果没有预留串口下载接口,只有SWD接口,我是按照下面的方法实现的:STM32 SWD/JTAG引脚被占用 无法使用Jlink下载代码时的解决方法。这个方法和原理讲解的非常清楚,值得注意的是,因为它要卡一个间隔,十分不好把握,我建议在魔法棒中将swd的连接速度调制最低,这样第二次连接尝试还比较容易卡到。
三、说明
该解决方法可能不适合每一个问题,或者你有其他版本的JLink也能实现,再或者,芯片检测不到时,两个方法都试试,没准也就行了。前提是保证硬件没有任何问题。
如果有问题,大家可以留言,我会尽快回复。