关于J-LINK升级最新固件后无法连上的一点分析

关于J-LINK升级最新固件后无法连上的一点分析

昨天升级了最新的 Keil MDK 4.53,怕它老是提示 J-Link 要升级,

就去 SEGGER 的网站下了个最新版的 J-Link 软件包(4.46F 版的),

装好后运行 J-Link Commander 提示要升级固件。以前一直是刷的,没有问题,

这次竟然升级后连不上仿真器了。提示

"Communication timed out: Requested 1 bytes, received 0 bytes !"。

SEGGER 终于开始玩花招了。

到 Keil 里打开了以前的一个工程,发现竟然还能调试,

一看那 DLL 的版本是 4.40C 的,看来是在 DLL 里做了些手脚。


  今天用 IDA 跟了一下 J-Link Commander,并对比了一下两个动态库的差别,

发现新版的在打开 J-Link 函数的过程里多了两个调用。

前一个判断了一下仿真器的功能字符串里是否有 GDBFull,

有就会多一步 USB 通讯,超时的就是这一步操作;

 

后一个通过序列号枪毙了一些老的(被偷的?)J-Link。看了一下 GDBFull 这个字符串,

只在这里用了一次,将其全部改为大写,发现可以连上了。

另外,序列号为 11111117 和 805306163 的会强制校验 GDBFull 功能。

  大致上猜了一下,可能是 SEGGER 更新了一下 GDBFull 功能与序列号的绑定算法,

下面的固件里也应该改过了,那一步 USB 通讯就是下面返回上来的认证结果,

所以接收的只有一个字节。GDBFull 这个功能貌似从来没有用过,反正我没有用到过。


  节约空间资源,删掉了下载。具体改法就是找到那个字符串,改成别的就行了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值