本帖最后由 鹤舞九天 于 2013-10-20 10:36 编辑
今天想尝鲜,下载了最新版的MDK
但是悲剧的事情发生了,在用JLink下载程序的时候通知我用的JLink是克隆版本
随后KEIL就被强行关闭了!
这让我心里极度不爽,所以发誓要找出根源。
经过一番查找后,我找到了这个
因为我老版本的MDK并没有卸载,所以我找到了同样的文件夹。
我一次替换一个文件,我最终发现,就是红色方框标注的这个
文件在搞鬼。记住它! JLinkARM.dll
我用老版本的同名文件将之替换
再次下载程序,OK!一切正常!!!
知道了原因所在,我就大胆起来了,我在SEGGER官网下载了最新版本的
JLink驱动
好阴险!我定睛一看,这不是要把那个JLinkARM.dll 加到我新版MDK的Segger文件夹么?
不就是我刚才找的那个文件夹么?顿时我明白了,为啥新版的驱动会使MDK识别出盗版的JLink!是因为它把这个万恶的文件写到这个文件夹中去了!!!
当然,你不把这个选项打勾就行了。但是,我为了验证真理,毅然决然地将其勾上。
然后,起变化了!!!
看到了吧,它把老版的文件变成了 JLinkARM_Backup00.dll
再次用MDK下程序,果然,熟悉的窗口又跳出来了!
我果断把新的 JLinkARM.dll 删除,把JLinkARM_Backup00.dll重命名为JLinkARM.dll
一切回归原貌,程序下载正常!!!
解决了,都解决了!!!
我就无聊地研究了这几个.dll文件 JLinkARM.dll,JL2CM3.dll和JLTAgdi.dll的作用。
验证结果如下:
1、当我删除 JL2CM3.dll的时候
你根本就找不到那个熟悉的 JLink/J-Trace Cortex
2、当我删除 JLinkARM.dll的时候,效果和刚才一样
3、当我删除 JLTAgdi.dll的时候
出现了这样的错误,不能读取这些特殊功能寄存器的状态,这估计和调试有关系吧,但是下载程序任然是成功的哦!
好了,总之如果JLink被检查出了为克隆版本不要慌,把JLinkARM.dll用能通过检测的版本替换掉即可。
如果你以前的JLink可以使用,但是想更新驱动程序,请不要在这个界面打勾!!!
当然,如果已经勾上了,也别担心,可以按我前面讲的方法还原。
经验证,装新版的JLink驱动,下面这些都不能用了
因为,我们换掉的只是MDK里面的文件,新版软件本身的验证机制并未消除。但是这也无伤大雅,因为只要你不用JLink供电,就根本用不到这些。
如果实在介意的话,换回老版本驱动即可。
PS:MDK检测克隆版就是靠这个文件 JLinkARM.dll 而这个文件就是来源于JLink的驱动程序,之所以老版本的MDK不检查克隆版
是因为老版本的MDK在安装的时候自带的JLinkARM.dll 文件来自老版的JLink驱动。而新版的MDK检测克隆版,是因为新版的MDK在安装时自带的
JLinkARM.dll 来自新版的JLink驱动。这就解释了为什么 用老版的MDK装新驱动程序会检测克隆版,用老版的驱动而装新的MDK也会检测克隆版。
基于上面的结论,我们用老版的MDK要装新的JLink驱动时,不要在安装的最后一个界面打勾,防止MDK中的老版JLinkARM.dll被覆盖
我们用老版的JLink驱动,而升级MDK后,需要重新装老版驱动,并在安装最后一个界面打勾,以覆盖新版MDK中的新版JLinkARM.dll
为了保险,最好备份一个能通过检测的JLinkARM.dll文件,以便能随时替换不能通过检测的JLinkARM.dll文件。
|