Jlink V8 在 Keil MDK5.25 中无法正常烧写、调试程序的故障处理
最 近我兄弟(亲弟弟)把我的某宝Jlink V9 拿去用了。没办法自己也得用啊,所以把几年前买的Jlink V8翻出来用(也是某宝出品),结果~~没法正常调试。
虽然Jlink V8以前用着正常,可以前用的是低版本的MDK。现在用的是MDK5.25,Jlink V8 在手上算是老物件了。所以我想当然的,认为需要刷新V8固件。然并卵!!!反复搞没有解决调试问题,原本在MDK5.25下是可以正常烧写程序的,最后搞的不能正常烧写程序。还多出一毛病,基本功能完全丧失,这不成黑砖了吗?
题外:Jlink V8 砖头恢复
【Jlink V8 砖头复活工具下载】
注意:复活工具在win7 下,是不能正常连接Jlink V8 引导程序的,我试过N次了。我是在Win7 下安装了一个xp虚拟机,在虚拟xp下安装工具,才能成功重刷Jlink V8固件。
使用虚拟机之前,要在BIOS里把CPU的虚拟功能打开。
先安装WindowsXPMode_zh-cn.exe 虚拟xp系统(实际上就是一个虚拟文件,500多M)
下载地址:https://download.microsoft.com/download/D/7/A/D7AD3FF8-2618-4C10-9398-2810DDE730F7/WindowsXPMode_zh-cn.exe
再安装Windows6.1-KB958559-x86-RefreshPkg.msu 虚拟工具(Windows Virtual PC ,实际上就是一个系统补丁)
下载地址:https://download.microsoft.com/download/0/5/5/0554AE99-785F-45CB-B1F2-0E3ED1E6117D/Windows6.1-KB958559-x86-RefreshPkg.msu
以前能正常使用,本质上V8本身也是能正常用的。就算你再怎么找,也找不到在2014/11/28日之后出现的V8固件版本(哪怕你在网上下载的、标称2014年之后的固件),因为你把V8重刷固件之后,MDK5中第一次访问Jlink V8的时候,MDK给你更新的最后版本就是 2014/11/28 的版本。刷来刷去还是回到了问题的原点。
先解决Jlink V8 在MDK5.25 里不能烧写程序的问题。
1.排除Jlink V8 硬件驱动问题。
我的使用环境是:win7 32 MDK5.25 。驱动用 6.20h 或 6.12a 的都试过,都能正常下载。网上查询的结果是:建议用6.12j的版本。这一点是乎没有什么那么苛刻的要求。事实上我就是用的6.20h版的驱动!(同一个设备,不同驱动版本可以在系统的设备管理器中进行调节,别用什么驱动精灵之类的工具调节,那东西只保证设备运状态是正常的,可不保证版本对号)
2.排除JTAG 或 SW 烧写线 连接问题。
这是容易忽略的基本问题,要保证程序烧写连接线,连接正确,且不能有接触不良的情况!来回折腾,谁能保证没问题?
3.排除 Segger 文件夹内文件版本匹配的问题。
MDK5安装目录的Segger 文件夹内有三个文件非常重要,Jlink.exe , JLinkARM.dll, JL2CM3.dll 。这三个文件MDK安装时自带。而我们使用Jlink 前,Jlink.exe , JLinkARM.dll 需要从驱动安装文件夹中复制到MDK5的Segger文件夹,替换原有文件。注意:6.12版驱动文件中的 Jlink.exe , JLinkARM.dll , 不能与MDK5.25自带的JL2CM3.dll一同使用。烧写程序时会出现如下错误:
因为MDK5.25 中JL2CM3.dll的版本为2.99.29.0 ,与 6.12驱动中上述两个文件的程序功能(库接口)不匹配。可以简单的理解为 JL2CM3.dll 的版本过高。虽然不能烧写程序,但是可以正常取得ARM芯片的基本信息。
6.20版本驱动中的 Jlink.exe , JLinkARM.dll 与 MDK5.25 自带的 JL2CM3.dll 配合,Jlink V8 可以正常烧写程序。如下图是烧写结果。
(如果仅仅为了能烧写程序,看到这里就可以了。)
再处理不能正常调试的问题。
按照上面的提示进行处理,可以烧写程序了,但不能正常调试程序!打开调试状态,十几秒钟之后就会报错,退出调试状态,或挂在调试状态。
MDK会不厌其烦地告诉你:“你用的是某宝产品,来来来,把你看到的信息依我妹”,接下来进入调试状态,寄存器显示正常数据:
十几秒内如果有遇到断点,是可以正常跳到断点暂停的,十几秒后,如果断点继续往下执行,会报错:
并且所有寄存器显示为零,如下图:
接着要么退出调试状态,要么MDK挂在调试状态(实际上ARM程序是接着往下跑,至于有没有跑迷路,就不晓得了)
造成这种情况的原因是: Jlinkk V8 只能使用 2.99.23.0 或 低于这个版本的 JL2CM3.dll 文件。(这是网友hslaiaya提出的观点 。原文出处:http://bbs.21ic.com/icview-1858620-1-1.html)
但也不能低的太离谱,这是我试验了一天得出的结论!
为了找到什么低版本的 JL2CM3.dll 能使Jlink V8正常烧写,又能正常调试,我以6.12a版本的驱动测试了 2.0 到 2.66.0.0,八个版本的 JL2CM3.dll, 只有2.02这个版本能通过Jlink V8正确读取ARM的基本数据,但,也不能烧写和调试程序。(其中2.0版的JL2CM3.dll 是 MDK4.12版自带的文件)其它版本,要么无法找到芯片,要么认错芯片,要么干脆把MDK5.25主程序搞挂掉!(这是欠多少钱呐,都没操作成功,至于要它挂掉吗?)
没办法,又安装了一个 MDK5.15 版,从里面把2.99.15.0版的 JL2CM3.dll 拿出来,连同 Jlink 6.12a驱动中的Jlink.exe , JLinkARM.dll 文件放入MDK5.25 的 Segger 文件夹下。最终测试成功,可以正常烧写程序,可以正常调试程序,也不要你依他妹。
(实践证明Jlink 6.20h驱动中的link.exe , JLinkARM.dll文件也可以配这个版本的JL2CM3.dll 使Jlink V8在MDK5下正常使用!不是网查资料中说的那么言之凿凿,“不能使用高于Jlink 6.12j版本的文件”)
实际上 Jink V8 ,Jlink V9 在MDK5.25 中使用时,只需要切换 Segger中的三个文件就行了。
将下面的文件解压出来,放在MDK5的 Segger 文件夹内(..Keil_v5\ARM\Segger) 替换原有文件 (替换前注意备份原文件),就可以切换使用Jlink V8 或 Jlink V9了。
【JLINK V8 MDK5.25_Segger替换文件】
【JLINK V9 MDK5.25_Segger替换文件】
Jlink V8 在 Keil MDK5.25 中无法正常烧写、调试程序的故障处理相关推荐
- A20在Linux中Livesuit不能烧写问题
使用A20开发板在Linux下烧写时需要使用Livesuit.Livesuit的安装方法安装包中PDF已经给出,也可以参考:http://hands.com/~lkcl/ReadMe.pdf.安装好驱 ...
- android tftp实现_fastboot中使用tftp烧写kernel
[android最新源码(4.4.2_r1版本以上)下载参考:http://source.android.com/source/downloading.html红色字体表示多项选择中,我所做的选择 安 ...
- MDK 5.25 J-link V9 烧写程序失败
软件环境:MDK 5.25 硬件:J-link V9,固件J-Link V9 compiled Mar 2 2018 17:07:57.J-link驱动版本V6.14a. 最开始能够烧写程序.但是有一 ...
- Ubuntu下 stm32 jlink驱动的安装(1)通过JLink烧写、调试STM32
转载地址 https://blog.csdn.net/lc_cc/article/details/66982821 最近在学习RT-thread,想在在LINUX下编译烧写stm32,JLink驱动安 ...
- MDK5.25以上版本解决j-link “the connected j-link is defective“ 问题
一.问题 MDK更新到5.32之后,无论是使用J-LinkOB烧写程序还是在线仿真都会提示如下: 然后轻则每次都需要把这个警告去掉,仿真可能遇到问题,重则程序直接闪退(我遇到每次都是闪退).实测从5. ...
- Keil MDK5中(1)汉字注释显示转向,字体显示朝左旋转90°(2)汉字注释显示为问号(3)按回车后光标缩进距离太大的解决办法
这是目录0.0 前言 第一个问题:汉字注释显示转向,字体显示朝左旋转90°解决办法: 第二个问题:注释中的汉字变成了问号,显示不出来,如下图所示: 第三个问题:按回车后光标缩进距离太大,如下图所示: ...
- 成功解决Keil MDK5中no browse information available in ‘xxx’的问题
使用MDK5的Go To Definition of ''功能的时候,报错no browse information available in 'xxx' 如图所示: 解决方案: 点击Option f ...
- JLink V8刷固件方式 转载整合
第1种方式: [科普贴]J-LinkV8固件刷新 转载于 https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid ...
- STM32F051用jlink V8进行调试设置MDK环境buc
最近自己做了一块STM32F051R8的板子,cortex M0,本来想着就串口用flash loader demo 下载程序吧.后来发现调试程序还是有点麻烦,就买了个山寨的jlink V8.我是用k ...
- JLink v8的自我救赎 defective or does not support the following memory access Read 0x02000004
JLink v8的自我救赎 你有没有用着用着JLink,突然某天醒来,发现JLink插上电脑灯不亮了? 你有没有升级高版本(5.27a或更高)MDK后,一直提示你要升级JLink固件? 当你点下YES ...
最新文章
- 安装需要的第三方库时,命令行输入pip提示不是内部或外部命令
- 智能车竞赛技术报告 | 智能车视觉 - 西南科技大学 - 西科二队
- SAP Business One on HANA登陆阿里云
- Python字典dict的增删查改及常用操作
- easy and hard things
- 自己实现strstr函数与strchr函数
- 函数调用的参数太少c语言,调用input_message的参数太少在主函数中 是神马意思 大神们帮帮我...
- 年轻有为的老黄2020
- directx最终用户运行时_运维定位服务故障时,前5分钟都在忙啥?
- 第1章 C/C++与开发环境介绍(《C和C++游戏趣味编程》配套教学视频)
- 2014年计算机职称考试试题库,2014年职称计算机考试全真模拟试卷(1)
- 页面上通过地址栏传值时出现乱码的两种解决方法
- Microsoft SQL Server Query Processor Internals and Architecture
- java有序的Map-LinkedHashMap
- sqlserver:什么是数据库实例?
- 2009年计算机一级考试真题及答案
- L2到L4的泊车辅助系统---APA自动泊车、RPA远程遥控泊车、自学习泊车、AVP自动代客泊车
- 基于单片机的超市储物柜设计_一种超市用储物柜的制作方法
- pycocotools使用教程,基础版
- 【新手基础教程】MaixPy AI 硬件加速基础知识