打印
[Cortex-M0技术交流]

关于Nu—link掉固件的问题的解决

[复制链接]
6355|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 xyz549040622 于 2012-6-20 07:48 编辑

早上有网友碰到了这个问题,M0的NU-LINK无缘无故的不闪烁了,九哥说是固件丢失了,因此引申出了一系列讨论。【本版权属于飘渺九哥和『诗诺比』老师】

现在新塘的NU—LINK一般分为三种,NU-LINK /NU-LINK ME/DZLINK。DZLINK就是NU-LINK,NU-LINK ME只是阉割版本的NU-LINK,DZLINK是九哥改进优化硬件及稳定性能的NU-LINK。固件是完全一样的。

对于插上NU—LINK没反应灯不亮的情况,一般就是固件丢失了。掉固件无非就几种情况
1. 上电,掉电,压电不稳程序跑飞造成的
2. 升级失败
3. 硬件损坏(带电热插拔)
对于前两种软件上花点功夫都可以避免,对于第三种,九哥自制的DZLINK可避免这种情况,原理很简单。新唐的NU-LINK原理图如下所示:



九哥的DZLINK如下所示



可以看出九哥的优化是增加了信号线的限流电阻,防止热插拨冲击及短路保护。还有增加MOSI对MOSI的拉到能力。就算IO短路也不至于冲击我的NU-LINK的CPU。引起IO烧了。引起固件 丢了。NU-LINK ME更没有什么保护 。直接是IO对IO。九哥强制加了1K的限流电阻,这样也有缺点,就是所传输的距离不能太远,超过20CM就不好了,不过限流电阻可减小以增加距离。以后同学们有福啦,可以借鉴九哥的经验,防止丢失固件,哈哈!那么,如何在软件中设置防止固件丢失呢,看门狗还是?

相关帖子

沙发
缥缈九哥| | 2012-6-19 22:21 | 只看该作者
这两个电路中那个R5或者RTDA3要减小 到100欧姆左右。否则会通信不够稳定 。

使用特权

评论回复
板凳
缥缈九哥| | 2012-6-19 22:35 | 只看该作者
缥缈九哥(14131338) 18:32:35
error:ERROR_GET_REG是通信出错 ,通常是通信线太长不稳定 。或者你的SWD上拉电阻太强引起的不稳定,或者你的NU-LINK里的MISO和MOSI间的电阻没有从1K改成100欧姆 。
缥缈九哥(14131338) 18:33:26
排除了我上面说的问题如果还存在,那看看ICP软件 版本及NU-LINK固件 驱动是不是最新。如果还存在问题。就是人品不好。

使用特权

评论回复
地板
X-Hawk| | 2012-6-19 22:46 | 只看该作者
如何在软件中设置防止固件丢失呢,看门狗还是?
-------------------------------------------------------
通过LDROM和APROM协作做到。
现在Nu-Link的LDROM和APROM,只要有一个代码正常,就能重新升级自己烧写固件。
具体是这样的几个防护
1. Nu-Link从LDROM启动时,会检查APROM中的checksum,如果发现APROM不对,
    会停留在LDROM做ISP重新烧写的动作。
2. 重写APROM时,先检查或改写config0,确保芯片从LDROM启动;烧写完APROM并验证没错,最后写入checksum.  
3. 如果Nu-Link没有LDROM代码,直接从APROM启动,升级时会重写LDROM。
   重写LDROM时,先检查或改写config0,确保芯片从APROM启动;烧写完LDROM并验证没错,再改写config0,将芯片设置成从LDROM启动。

基本的想法就是,LDROM和APROM两个中,始终确保一个是正常的,
并且芯片从正常的这块启动。
这样在绝大多数情况下,掉code都能恢复。
升级过程中随意断电、拔插,都没有问题的。(经过近百次的非正常中止的测试,证明此办法有效)

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xyz549040622 + 1
5
plc_avr| | 2012-6-20 07:26 | 只看该作者
4# X-Hawk
这个方法高明!2个同时丢了固件的可能性几乎为0.为什么那么多网友说丢固件,包括其它厂家的片子,是人品不好?PIC AVR M0.反正我没有丢过固件.

使用特权

评论回复
6
缥缈九哥| | 2012-6-21 12:08 | 只看该作者
现在新版本我没有发现丢过固件 。旧版本我发现过。现在 最多的问题就是通信 出错 。就是我上面 说的。error:ERROR_GET_REG。另外还发现过一个问题,有些出厂的IC,如果 SWD不接RST的话。有些总是擦写不了,还有如果RST短路到地,擦写也总是不成功的。按道理SWD与RST没有任何关系的。但是事实证明。新唐的设计,SWD与RST还是有关联的。

使用特权

评论回复
7
X-Hawk| | 2012-6-21 13:56 | 只看该作者
九哥说的对,SWD和RST有点联系的。
SWD的IO口可能别切换成其他的,
时钟源也有机会切换到不存在的。这样芯片会完全没法用SWD操作。
这时候要借助拉RST,重启芯片后,才能顺利擦写。

使用特权

评论回复
8
plc_avr| | 2012-6-22 06:02 | 只看该作者
RST是重要的;P,要不然极有可能连不上芯片。

使用特权

评论回复
9
缥缈九哥| | 2012-6-25 13:26 | 只看该作者
看来SWD的5个脚 。一个也不能少。 VCC DAT CLK RST GND。

使用特权

评论回复
10
plc_avr| | 2012-6-25 17:14 | 只看该作者
看来SWD的5个脚 。一个也不能少。 VCC DAT CLK RST GND。
缥缈九哥 发表于 2012-6-25 13:26

哈哈,我经常只用4个脚,:lol

使用特权

评论回复
11
mcs8098| | 2012-7-6 17:10 | 只看该作者
学习了

使用特权

评论回复
12
xpdzsj| | 2012-7-28 09:00 | 只看该作者
1.  DZLINK调试MINI54(手工焊接),拿镊子碰MINI54任何I/O口,都会引起KEIL死机或断开连接。
2. 用J-linkV8(双缓冲) 调试STM32,随你折腾,原因何在:J-link输出加了缓冲!
3. PIC的ICD2和·PK2,老丢固件,线路与NU-LINK类似,输出没有缓冲,
   PK3随你折腾,ICE口加重载照样ICP。
4. 关键问题:九哥节约成本。
5. 别小看这个输出缓冲,我在工控设备上深有体会哦,
   这就是在工控设备:单片机抗干扰不及PLC,给人的印象。
   模电没打好基础,玩单片机照样折腾人!

使用特权

评论回复
评分
参与人数 2威望 +2 收起 理由
xsq5360 + 1
xyz549040622 + 1
13
缥缈九哥| | 2012-7-30 22:51 | 只看该作者
本帖最后由 缥缈九哥 于 2012-7-30 22:52 编辑

输出 缓冲,我有中颖的那个JET51上面是74LVC4245.经常 给烧坏。仿真器通常 不考虑用于工业机的实时仿真上的。来个浪 涌,电火花,照样 死掉。烧掉。不加缓冲 的原因是,我非常深信新唐 M0的IO口的能力。你如果觉得能力 不强,把1K的限流 电阻换成10欧姆的。哈哈。
你的镊子会搞死,说不定是KEIL的问题,或者 电脑的USB的问题。不能只是怪NU-LINK。另外SWD的速度 你可以不要调到10M。可以调到4M就够了。甚至1M。

使用特权

评论回复
14
xpdzsj| | 2012-7-31 17:38 | 只看该作者
SWD的速度,2M
用J-linkV8(双缓冲) 调试STM32. KEIL没有问题,
输出 缓冲,应该向PIC的PK3学习,关键不是M0的IO口的驱动能力,别人的PIC的ICD2经常掉固件·,我硬件修改,除非在ICD2自我升级固件时折腾它掉固件。

使用特权

评论回复
15
sdc666| | 2012-12-19 21:27 | 只看该作者
大家好,我的nulink me在升级过程中死机了,后来再接上usb,四个灯就全灭,keil也无法找到仿真器。 这种情况下只能购买一个新的nulink么? 谢谢。

使用特权

评论回复
16
缥缈九哥| | 2012-12-21 02:31 | 只看该作者
寄给我修复。

使用特权

评论回复
17
pgl3243635| | 2013-4-3 14:39 | 只看该作者
缥缈九哥 发表于 2012-12-21 02:31
寄给我修复。

九哥  我的NANO120也出现了同样的情况 ,升级的时候掉电中断,现在检测不到了。
有没有啥办法呀?

使用特权

评论回复
18
缥缈九哥| | 2013-4-4 16:16 | 只看该作者
重新刷新固件 。寄给我处理吧。

使用特权

评论回复
19
xsq5360| | 2013-5-28 21:16 | 只看该作者
我手头好几个nulink坏了,都不知道啥原因

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2700

主题

19156

帖子

103

粉丝