背景
在项目中遇到了关于jlink检测出是盗版固件的情况,所以会用到这个教程。
此篇其实借鉴了很多其他能人的文章,但当时未来得及收录地址,不能再一一翻出了,如有雷同,纯属意外,请联系我删除。
过程
过程分为几个部分,首先是一些资料准备,然后是先刷掉jlink内部的原有固件,再将可以自定义的固件刷进去,最后设置一个序列号其实就可以了,我后面还加了一步更新成最新版的驱动(当时最新是这个版本)。
资料准备
需要准备一个能短接的工具、你需要刷的jlink以及对应的数据线、winXP的虚拟机、自定义固件、jlink驱动V4.90版本和最新版驱动以及AT91-ISP软件。
这是我给实验室学弟学妹们留的文件夹里的资料,基本就是这些东西要准备。
百度网盘链接:https://pan.baidu.com/s/1PR2iV8NsMLv9YBkGFsi4WQ?pwd=o49f
(没会员就别折腾了)
我还上传了csdn,第一次上传,就只能做公益了:【免费】jlinkV8固件刷新资料资源-CSDN文库
但是其实有一些准备工作,比如安装好虚拟机,xp镜像装上,jlinkV490和AT91软件都要在虚拟机中装好,这些我没有写教程,网上基本都有,其余文件也都要转移到虚拟机中,这里就不多赘述了。
刷新固件
第一步
把jlink盖子打开,内部电路大致如此(因为可能稍微有一点点不同,不过刷新的大概位置差不多,所以不算很影响)
1.短接框1中的两个焊盘口,然后把jlink接电源,大概十几秒之后断电、断开短接。
2.短接框2中的两个焊盘口,然后把jlink接电源,大概十几秒之后断电、断开短接。
这两步不能调换顺序,错了就再按顺序来一遍即可。
第二步
此时把jlink接入电脑,指示灯不会亮,电脑也是不能识别出jlink的,智能识别是个串行设备
(是com6还是几纯属看电脑,无关)
这一步是把电脑接入虚拟机,然后用软件把能自定义序列号的固件刷入jlink中(固件版本是V8)。
点开这个软件
如果成功识别到jlink会出现以下界面:
如果没识别到,可能是没接到虚拟机上,可能是没有点击右侧的三角形换成图中一样的,也可能是第一步没做对。
识别之后点击“connect”进行连接,看到如下界面之后,点击框中的按钮进行文件传输:
文件传输选中之前文件夹中的“v8_ID-自定义.bin”文件,点击“send file”进行传输,但需要注意两个点:
问你要不要解锁,点击“yes”;
传输完毕之后,还会出现问你要不要上锁:
点击“no”
到这里,如果上述有一步选择错误,或者其他错误,可以选择从第一步重新开始
(我探索也探索了两三天,很正常不过的事情)
之后固件就更新完毕了,需要对jlink进行拔插,此时电脑会识别出这个jlink。
第三步
此时是已经有固件了,但是没有有效的序列号,跟没刷之前的状态差不多。
此时就是在winXP的镜像的所有软件中搜索旧版本的jlink了(测试了几次,这个版本用来定义序列号比较稳定)。
打开jlink驱动中的一个程序,叫“jlink commander”,打开之后和命令行界面差不多。
打开之后会出现推荐更新界面,点击“no”,如果选错了,就跳回第一步吧。
点击no之后在里面输入代码:
exec setsn=XXXXXXXX
X部分是八位的十进制序列号,是我们这次行动的关键,最好是设置成6000加其他数字,别问我,我也不知道为什么。
然后很多教程其实没有我接下来这句代码,有没有效果只有试了才知道区别,各位随意:
exec ClearFeatures
两次命令代码都会有OK回应,如果没有就是写错了。
序列号设置到这就结束了,关闭“jlink commander”程序,进入下一步。
第四步
这一步是更新成最新的驱动。
其实有两种办法,第二种好像稳定一些,第一种我总是会出现一些报错。
第一种
全程把jlink连接到电脑,重新在winXP中打开jlinkV490版本的jlink commander,再次弹出更新提示时,点击yes,待更新完毕之后,把虚拟机关了,再回到主机里,打开最新版jlink的jlink commander,点击更新,更新完毕之后就行了。
第二种
直接关闭虚拟机,在主机中打开最新版的jlink commander进行更新,待更新完之后就可以了。
后记
如果一用还是检测盗版,就是序列号设置的有问题,之后遇到检测出盗版的问题我都是这么解决的。也可以探索一下更持久的序列号(毕竟八位数,可能性还是挺多的)。如果还会出现其他关于jlink的报错,可以关注jlink的引脚定义(因为我当时项目并没有全部引脚都接上了),会出现供电引脚切换等问题。