行情
HOME
行情
正文内容
nand flash jlink jlink 下载失败的最详细解决办法
发布时间 : 2024-11-23
作者 : 小编
访问数量 : 23
扫码分享至微信

jlink 下载失败的最详细解决办法

下列方法,仅针对普通版本。

UD版本,请勿用 jlink 解锁,会解除UD保护的,从而容易锁死芯片。

UD版本,请勿用 jlink 解锁,会解除UD保护的,从而容易锁死芯片。

UD版本,请勿用 jlink 解锁,会解除UD保护的,从而容易锁死芯片。

UD版本,请按UD教程方式来解锁!不用jlink来解锁,就基本上不会锁死的,很容易处理的。用了jlink去解除保护,就会变得普通版那样,非常麻烦处理解锁的。

1. 首先 检测一下 k60 是否供电了。

如果没供电,会提示:supply voltage too low(1 volt is required) 等错误,表示jlink识别不到目标板。

JlinK本身不能供电,需要改装的哦

山外K60 核心板,有三种可供电的方式:

(1)jlink 供电(jlink默认不供电,需要改装 jlink)

改装方法(第4页):http://pan.baidu.com/share/link?shareid=550532&uk=235751603

(2)排针下有 5V 和 3.3V 插座,可进行 5V 或 3.3V供电,两种任选一种就可以,当然也可以两种都一起供电。

(3)新版的 k60 增加了 USB 功能,可用 USB供电

2. 电脑是否插入了jlink?jlink 是否通过 转接板连接到 k60 上? 是否接触不良?台式机是否把jlink插到后面的USB口?

可以换其他 下载线 、jlink 来试试。

台式机把 jlink 插到电脑后面的USB口。

注意,jlink 下载口不能接反,接反了会短路,容易烧芯片……市场上部分转接板,为了省成本,没用牛角座而是直接用排针,容易出现接反的情况。

如果提示:can not connect to j-link via usb ,可能如下:jlink没接好(接触不良?没供电?),jlink 固件丢失了或者没安装jlink 驱动,或者 jlink 烧坏了。

第一步:先检测jlink 连接是否正常

第二步:安装jlink驱动:http://pan.baidu.com/s/1hq9nPIG

第三步:再尝试烧固件:http://www.vcan123.com/forum.p ... age=1&extra=#pid966

有条件的换个jlink和jlink转接板试试能不能下载!!!

有可能是转接板接触不良导致问题发生。

3. 电脑是否正确安装 jlink 驱动?win7、win8系统,jlink 驱动 和 IAR 是否都用管理员身份来安装 ?

Jlink版本太旧也会出现问题的哦!

我们测试过下面两个驱动版本都可正常使用我的jlink。

http://pan.baidu.com/s/1hq9nPIG

如果之前没有用管理员身份安装,请卸载后重新用管理员身份安装。

4. 提示什么出错内容?先尝试 对K60 进行解锁操作

打开 J-Link Commander 输入 unlock kinetis 来解锁 。(最好解锁过程中一直按着复位键)

如何打开 J-Link Commander ? 安装 jlink 驱动后,在开始菜单即可找到。【下面这图,是正常情况的图片。下载不了时,往往图片显示和下图是不同的,进行解锁就可以】

如果解锁失败,在论坛求助时,也应该把这里提示的出错信息告诉别人。

擦除flash步骤:

不管解锁成功还是失败,都要擦除一下flash,目的是清除错误的数据。在IAR编译器里面,按如下步骤操作:Project>Download>Erase Memory>Erase (不是Erase All,),然后下载程序试试。

IAR擦除前,先打开

我们提供的原始工程(不要拿别人提供给的工程,那些工程经常都修改过工程选项,导致没法选择 Project>Download>Erase Memory ,按照第11步的方法选择芯片模式,然后再来擦除。

务必严格按照上述的第4条方法执行,包括按着复位键、还用IAR擦除flash!!!!这些细节偷工减料,就会导致失败的!!!

已经不下5个,总是信誓旦旦地说已经严格按照上述步骤执行,还是不行,后面发现原因还是偷工减料,要不仅仅解锁,没擦除flash,要不就仅仅用IAR擦除flash,也懒得按复位键。要不就交换两个顺序!!!

如果一次不行,请重新关闭全部软件!尤其是jlink软件,然后多执行几次!

为什么有时候必须按着复位键就可以成功解锁呢?

擦除flash后,单片机跑空程序,由于看门狗不停的复位,导致没法正常下载程序,需要按着复位键来禁止单片机跑程序,这样才可以正常下载。

为什么有时候还需要IAR擦除呢?

重新下载flash loader,如果flash loader坏了就没法正常下载。

如果还是不行,试试重装jlink驱动!!!

5. jlink的下载方式是 jtag 还是 swd ?

尝试切换另一种模式,切换前先进行一次解锁

如果老是出现下载一次后,必须解锁才能进行第二次下载,也应该尝试换另外一种模式,或换一个jlink

6. 是否有选择 flash loader ?

如果勾上了,就去掉那个勾。

如果没勾上,就勾上。

7.复用了下载口的管脚导致无法下载?

按着复位键不要放手,点击下载按钮进行程序下载,再释放复位按键来进行下载。如果不行,多尝试几次。

再不行,就焊掉有源晶振,再下载。

8.jlink 插入 电脑没任何反应?LED灯也不良?

很有可能是固件丢失了,需要重新刷固件

http://www.vcan123.com/forum.p ... age=1&extra=#pid966

9.jlink 提示:the emulator is JLink-Clone, the segger software only support orginal segger device ?

需要用如下固件重新刷固件

http://www.vcan123.com/forum.p ... age=1&extra=#pid966

10.K60 解锁提示Fatal error: Timeout while unsecuring device.Erase never starts.

k60芯片是自己焊接的?请重新焊接一下。

把K60 核心板,拔掉外部所有的模块,断电,然后插入jlink ,用jlink Commander 进行解锁。

如果还是不行,那么 k60 芯片很可能锁死,或者烧了。

11.K60程序需要区分是FX还是DN的

山外K60是分成FX和DN的,两个程序不能交叉下载,在IAR编译器里可以选择的:

如果已经下载失败了,那么按照第4步步骤操作即可。

如何使用JLINK配合IAR的断点功能用出点劳德巴赫的感觉

1. 前言2. 常用断点存在的问题3. IAR支持的断点类型和使用方法3.1. 代码断点3.2 条件代码断点3.3 读写访问的数据断点3.4 数据日志断点3.5 日志断点3.6 电源断点4. 总结:5. 经验交流:

1. 前言

在产品开发中,调试工具是不可或缺的开发利器,除了日常常见的ARM的CMSIS-DAP/ULINK,IAR的I-JET,P&E的U-multilink/Cyclone, 各个半导体厂商自定义的XX-LINK(例如LPC-link, ST-Link,等)之外,还有两个是神一样的存在,一个是SEGGER的J-LINK,支持与IAR/KEIL等各种编译环境无缝衔接,性能稳如老狗, 价格低廉, 所以在嵌入式工程师中的普及率非常高,被称为居家旅行匮赠好友之佳品。另外一个是一听名字就感觉高大上的劳特巴赫Lauterbach,作为专业第三方调试工具厂商,以其强大的TRACE32开发调试工具享誉全球,TRACE32开发工具拥有非常丰富和强大的功能,包括基本调试配置、RTOS、多核系统、虚拟目标调试、能耗分析以及强大的脚本语言等,而且可以支持市场中使用的80多种常见的微处理架构。

当然Lauterbach性能的强大,对应的代价就是价格也比JLINK多出一个数量级,但是对于大部分嵌入式开发者来说,最常用的还是基本的调试功能,包括断点,寄存器查看,内存/Flash的查看,本文从断点使用的角度讲解如何使用JLINK配合IAR支持的各种断点用出点劳德巴赫的一些强大功能。

2. 常用断点存在的问题

断点的概念非常简单,目的简单来说就是在指定指令或者代码行中断程序的执行,实现上可以是硬件断点(通过编程FPB实现)也可以是软件断点(通过插入BKPT断点指令实现 ),具体二者的底层实现这里不展开讨论。常规的断点调试(本质上是代码断点)是在想观察哪里的问题时就在对应的代码地址双击设置断点,并且一旦运行到断点位置会让程序自动暂停运行,然后观察感兴趣的变量,内存或者寄存器,这种断点调试功能能帮助开发者解决大部分的问题,但是其也有很大的局限性。

因为很多时候我们只想知道某段代码是否运行过,而不能让程序停下来,譬如说调试BLE协议栈,无法去单步运行,否则会打断BLE主机和从机之间的通讯时序,而导致整个系统功能出现问题。还有中断处理函数的调试,程序一旦停下了也就失去了其他所有中断的后续响应,再比如两个设备通信,一旦一方采用常规断点的方式调试,可能会打断正常的通信过程。所以通常的做法是添加串口打印或者ITM半主机打印输出log信息到显示屏,但是这种方式会带来额外的软硬件开销(对于串口打印来说是两个UART pin脚+UART驱动函数,对于ITM打印输出是一个SWO+ITM驱动),甚至因为引入新的代码导致程序出错。除此之外,还有3种场景是这种普通断点无法满足的,第一个是同一段循环体运行N次才停下来,第二个是当变量被写入新的数据或者被读取时停下来,第三个是实时记录断点所在行某个特定变量或者地址的值,并在时间轴上以图形的形式显示出来,方便分析和对比。

以上这些功能在这些功能在劳德巴赫中是最基本功能,同样在IAR中也提供了不同形式的断点类型和组合,只是日常习惯了只用了其代码断点的功能,没能充分发挥IAR的强大断点功能,针对以上4种问题在IAR中可以分别用日志断点、条件断点、读写权限的数据断点、数据日志断点逐个击破,从而避免了额外添加代码的繁琐,也能为解决隐藏bug提供更加灵活的手段。尤其是其中的读写权限的数据断点,笔者曾经就是使用这种办法帮客户解决了两个埋藏的很深大bug,其中一个是查找某个关键变量在哪里被意外修改,通过设置条件断点+stack callback迅速定位到了肇事代码段,另一种是客户代码意外堆栈溢出调查,当时的做法是在堆栈大小的90%地址靠近栈顶处设置一个写触发的数据断点,当某层调用过程中堆栈接近溢出时,设置的数据断点会被触发而停止应用程序,从而迅速找到堆栈是在哪层调用溢出的,从而解决问题。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

点击这里找小助理0元领取:嵌入式物联网学习资料(头条)

3. IAR支持的断点类型和使用方法

总结下来,在 IAR 中,主要有以下几种断点,下面逐一介绍。

代码断点条件断点读写访问权限的数据断点数据日志断点日志断点电源断点

3.1. 代码断点

这种断点就是前面提到的最常用的断点,也是最简单的断点。开发则只需要在反汇编窗口中选择C行或ASM指令并切换断点。一旦遇到断点,用户应用程序将停止。这时候可以查看变量、标志和寄存器的值。换句话说,开发者拥有完全的控制权。对于这种普通代码断点,其数量受限于硬件断点的数量,例如对于 Arm Cortex-M,通常有6-8个硬件断点,但如果使用软件断点或在RAM中运行应用程序,则可以不受限制。使用时只需选择显示View -> Breakpoints 窗口 ,就可以启用或禁用断点。

默认情况下,IDE 将设置代码断点,而且是auto类型,可以通过Option->Debugger->JLINK/JTrace->Breakpoint 去设置硬件断点还是软件断点。如果开发者有 I-jet,可以在右键单击代码行时明确选择一个 flash断点。注意断点符号中的“F”。Flash 断点功能在适用于 Arm 的IAR7.60 或更高版本中可用。

3.2 条件代码断点

条件断点是代码断点与某些标志或变量作为条件的组合。设置断点后,同样可以再次使用View -> Breakpoints 窗口 查看所有断点,也可以通过右键单击并选择Edit option 来设置额外参数。

设置断点条件所使用的语法类似于C语法 ,可以使用 ==、>= 和 <=。例如,如果您希望应用程序在计数器等于 10 时在断点处停止,您可以使用“counter==10”。这在中断例程中需要断点时非常有用。如果没有设置条件,应用程序就会一直被停止,影响到系统的正常工作,使用标志或变量作为条件使事情变得容易得多。甚至用户还可以使用跳过计数器和条件检查(如true或changed)来实现更复杂的断点停止条件设置。该方法可以解决上面提到的第二种问题。

3.3 读写访问的数据断点

与其他断点相比,数据断点有点不同,因为是对特定内存地址、标志、变量或寄存器的读写访问的监控。使用时只需右键单击标志或变量并选择选项Set data Breakpoint 。默认情况下,对该变量,特定地址,寄存器的任何读取和写入访问都会触发断点。如果你想添加额外的设置,你可以通过View->Breakpoints 窗口Edit 选项来完成 . 除了读写访问之外,还可以监控数据是否匹配来作为断点的触发条件 ,这意味着写或读访问只会在数据匹配时触发暂停。另外,通过选择编辑按钮,开发者还可以打开一个额外的窗口,可以选择绝对地址甚至源代码所在行 。对于变量或标志,建议使用自动大小。如果需要监控更大的范围,则应手动设置监控的地址范围或者变量范围,譬如说监控一个结构体的数据变化,使用这种数据断点也是可以实现的,但需要用户正确设置变量,特定地址,寄存器等监控对象的Size。使用这种方法可以解决前文提到的第三种问题

此处需要特别提一下,数据断点对于调试被应用程序破坏的标志和变量非常有用。笔者曾经就是使用这种办法在客户解决了两个埋藏的很深大bug,其中一个是查找某个关键变量在哪里被意外修改,通过设置条件断点+stack callback迅速定位到了肇事代码段,另一种是客户端的意外堆栈溢出调查,当时的做法是在堆栈大小的90%地址靠近栈顶处设置一个数据断点,当堆栈溢出接近时,设置的数据断点会被触发而停止应用程序,从而迅速找到问题的根源,至于如何设置,此处暂不展开。

3.4 数据日志断点

除了具有读写访问权限的数据断点外,开发者还可以使用数据日志断点。这种断点的好处在于可以在时间线中监视和以图形方式绘制内存中特定变量或地址的值,使显示更加直观,用户还可以在同一个时间轴上显示和比较两个或多个变量,从而在逻辑上排查问题。设置的方法就是View->Breakpoints 窗口Edit 选项 ,然后选择set Data Log Breakpoint for counter 即可,使用这种方法可以解决前文提到的第四种问题

时间线以及附加数据日志和数据日志摘要可在探针选项下找到,例如如下面的屏幕截图所示。

3.5 日志断点

除了代码和数据断点之外,还有一种日志断点,这是一个特殊的断点,因为它只会临时暂时停止应用程序以打印消息,然后继续代码的运行。一旦运行到设置的日志断点,它会显示如下用户预先设定的消息,告知用户某个函数事件被触发。这种方式的好处在于,无需额外添加串口打印或者ITM半主机打印输出log信息到显示屏,无需额外的软硬件开销,便可实现基本的信息打印,方便开发者跟踪程序的执行流程。

如下图所示,每次断点命中时,调试日志窗口中都会显示一条消息。添加的计数器可以了解应用程序通过该部分源代码的次数。通过这种办法可以解决前面提到的第一个问题 ,即不停止代码又能获知感兴趣的代码段是否被执行过,以及执行的次数,兵不血刃,无需添加任何额外的代码。

3.6 电源断点

除了代码的调试,IAR还支持先进的电源调试技术,可以监控功耗,并将其与源代码相关联。这也使得添加电源断点成为可能,可以设置一个阈值,如 25mA,一旦能量高于该值,调试器将被触发停止。设置阈值非常简单, 只需要打开J-Link->PowerLog 窗口 ,然后设置值和所需选项,如上图或下图所示。通过这种分析,可以直观的看出代码执行过程中的功耗值,下面的时间线窗口不是必需的,但它可以为提供正在使用的能量提供一个时间参考。

4. 总结:

至此,介绍完了IAR支持的6种不同的断点类型和使用方法,也顺带针对性的解决了前文中提到的日常调试遇到的四个问题。如果在日常调试过程中灵活运用以上的这几种断点,对于日常调试提高开发速度和解决一些深藏的bug(例如前文提到的大型程序中变量被莫名修改,堆栈溢出追踪等) 很有帮助。当然劳特巴赫之所以卖的这么贵,必然有其强大之处,尤其是强大的脚本编程,多核系统,能耗分析以及对芯片内部操作的开放度,能给开发者最大的操作灵活度。但就日常的断点调试看,IAR+JLINK的组合也基本能满足大部分的需求,毕竟就地取材最方便。

原文链接:https://mp.weixin.qq.com/s/3b2dsi6Gh05nS4Gfo9lHgQ

文章转载自:痞子衡嵌入式

文章来源于:如何使用JLINK配合IAR的断点功能用出点劳德巴赫的感觉

原文链接:如何使用JLINK配合IAR的断点功能用出点劳德巴赫的感觉

版权声明:本文来源于网络,免费传达知识,版权归原作者所有,如涉及作品版权问题,请联系我进行删除

相关问答

怎么使用 jlink 一键烧录整个flashHi3518aceHi3515Hi3512?

r#重启jlinkspeed3000k#设置jlinkspeed为3000K,当然也可设置为12000K或其他,如果信号线拉太长了就不要把速度设置太高了rce0911#wce0...

flashmagic烧写代码和 jlink 烧写的区别?

FlashMagic和J-Link都是用于MCU烧写的工具,它们的主要区别如下:硬件支持不同:FlashMagic通常用于NXP(前身为Philips)系列的ARM微控制器,而J-Link则支持多....

KEIL软件出现Load Flash Device失败怎么办?

1、打开keil软件,点击下图所示图标进入jlinkdriver配置页面。2、在该页面下先确保Jlink已经连接好设备,如下图所示则表示设备使用SWD方式连接成功。3、然后选...

stm怎样才能看出是否在载入程序?

使用对应的仿真器加上配套的驱动软件就能读取。比如使用Jlink+Jflishforarm,连接好硬件电路后,打开JFlashforarm软件,在工程设置里面选择好对应的STM32...

如何用keil直接往单片机里头下载程序???有下载器。-ZOL问答

debug选项选择合适的下载器(比如Jtage/Jlink),最后一项添加和芯片一致的Flash...雷军第五次年度演讲发布会提前看:八大新品,还有onemorething评论24屏幕好...

keil5如何通过仿真器将程序烧录?

keil5通过仿真器将程序烧录需要准备开发板,随后就使用mdk目录,并将STM32F10x_M25P64文件夹拷贝一份并改名为STM32F10x_W25Q32,打开工程,打开option选项设置界.....

单片机的编程器和烧录器有什么区别?

一般来说两者等价,编程器就是烧录器,英文都叫PROGRAMMER。都是用于把程序烧到芯片上面去。但如果硬要说其区别,编程器偏向于那种像ICD2、jlink那样能在线编程...

keil和iar编程区别?

功能不同,支持的芯片不同,易用性不同。1.功能不同KeilMDK-ARM除了支持C/C++编程外,还内置了很多工具,如Flash编程、调试器等,同时还有丰富的库函数,可以...

 周文胜  股票佣金 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部