2835|8

6

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助,遇到未解之谜 [复制链接]

最近在做LPC1768的IAP在线升级,目前已可通过ISP下载IAP bootloader程序到前64K,并可通过CAN口通讯,进行应用软件的下载到后面的空间。
启动时从bootloader的main入口处就判断标志,选择运行下载程序还是应用程序。
运行过程中,定时器、串口、CAN口、AD等等的中断都算能正常运行,但是有一个问题如下面这个帖子的兄弟提到的,基本一模一样,帖子貌似沉了好久,未解之谜,大家再研究研究。
https://bbs.eeworld.com.cn/forum ... 24949&highlight=IAP
对能检测到的项目,有的机器运行都正常,有的机器不是这边有问题,就是那边有问题,所以很费解。
此帖出自NXP MCU论坛

最新回复

听说有个校验,你去查一下NXP资料,看是否是下载进去的程序需要填写正确的校验。  详情 回复 发表于 2014-4-17 16:58
点赞 关注
 

回复
举报

603

帖子

1

TA的资源

纯净的硅(中级)

沙发
 
一段时间以前的事情了。

那时候某厂商的芯片,也是CM3内核。做IAP,发生一宗令人感到费解的升级事故:
工厂把故障的机器发回,发现问题发生在升级结束之后,Flash里的东西不完全和升级文件一致。
可是重新升级的话也不能100%重现问题。只是升级N次后,才可能出现这样的情况。

经过很长时间的调查,以及工厂不断返回的故障机,发现一个共性。那就是这些机器的主控芯片,同属一个批次。
因为芯片是日产的,而那一批次是在日本福岛地震以后生产的,所以把这个问题推给芯片的工厂。后来工厂承认了芯片的质量问题,并且给出了用电子显微镜检查的结果。

另一方面,我也在研究,事实上这个问题确实是芯片质量有问题,但是我们再开发IAP的过程中,也是可以尽力降低这种问题发生的可能,那就是写完Flash以后,重新确认是否和升级文件严格一致,或者在程序尾部加上对整个工程代码的严格的检错码用于启动时确认(由于种种原因吧,我事后选择了后者,使用CRC校验)。

这样以后,此类问题没有发生过。需要强调的是,即使这样,也不可能完全避免问题。

总结:
问题原因:写Flash时写入失败(可能是程序问题,也可能是芯片质量问题,但是更多倾向于质量问题)
对应方法:芯片厂商提高生产质量,对Flash的写入进行强校验。
此帖出自NXP MCU论坛

点评

谢谢关注,我目前数据校验是这样的: 1、上位机对应用软件的代码每段(1024字节)加上CRC,下位机接收到后,确定CRC正确才IAP写入; 2、下位机IAP写入时,进行了固化的扇区准备,扇区写入,写入数据比较; 3、纠  详情 回复 发表于 2014-4-12 21:17

赞赏

1

查看全部赞赏

 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
sjtitr 发表于 2014-4-12 20:06
一段时间以前的事情了。

那时候某厂商的芯片,也是CM3内核。做IAP,发生一宗令人感到费解的升级事故:

谢谢关注,我目前数据校验是这样的:
1、上位机对应用软件的代码每段(1024字节)加上CRC,下位机接收到后,确定CRC正确才IAP写入;
2、下位机IAP写入时,进行了固化的扇区准备,扇区写入,写入数据比较;
3、纠结好长时间后,再添加了人为的循环比较,就是每帧数据写入FLASH的数据与接收的数据在while循环里比较;
以上三者均能通过,才可能让升级继续,直至完成。

控制这么算比较严格了,升级每次都能下载成功,但就是运行有不同的异常出现。
此帖出自NXP MCU论坛

点评

我也没有什么好办法,如果你认为检察足够严格的话,就查看一下周边:例如能否保证缓存的数据在写入期间不被破坏,特别是,是否有堆栈溢出等情况。有条件的话,可以试着一口气写完,然后上位机重新发送一遍数据,再一  详情 回复 发表于 2014-4-12 22:21
 
 
 

回复

603

帖子

1

TA的资源

纯净的硅(中级)

4
 
qzh7461102 发表于 2014-4-12 21:17
谢谢关注,我目前数据校验是这样的:
1、上位机对应用软件的代码每段(1024字节)加上CRC,下位机接收到 ...

我也没有什么好办法,如果你认为检察足够严格的话,就查看一下周边:例如能否保证缓存的数据在写入期间不被破坏,特别是,是否有堆栈溢出等情况。有条件的话,可以试着一口气写完,然后上位机重新发送一遍数据,再一口气的比对。
此帖出自NXP MCU论坛

点评

嗯,这个我之前在下载完以后,对全部代码进行过整体的CRC上下位机比较,后来改了方案用这三个来卡扣后,就没再用最后的校验比较,可以再加上去验证下。  详情 回复 发表于 2014-4-14 09:03
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

5
 
sjtitr 发表于 2014-4-12 22:21
我也没有什么好办法,如果你认为检察足够严格的话,就查看一下周边:例如能否保证缓存的数据在写入期间不 ...

嗯,这个我之前在下载完以后,对全部代码进行过整体的CRC上下位机比较,后来改了方案用这三个来卡扣后,就没再用最后的校验比较,可以再加上去验证下。
此帖出自NXP MCU论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

6
 
还有各种妙想的兄弟们,给支支招。
此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

7
 
看我之前写的帖子,对于NXP来说IAP可能遇到的问题我都说到了,注意看向量表和最后一包编程是否正确。。。。。。
此帖出自NXP MCU论坛

点评

我的1768的向量表重定位VTOR和单帧编程用的1024都注意到了的,以及在您以及其他网友的帖子里曾提到过的:BIN格式、Thumb code、地址分散加载(IAP 0x00000000,APP 0x00010000)这个几个主要的注意点都在之前一个个  详情 回复 发表于 2014-4-17 15:36
 
个人签名我的博客
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

8
 
zhaojun_xf 发表于 2014-4-14 10:52
看我之前写的帖子,对于NXP来说IAP可能遇到的问题我都说到了,注意看向量表和最后一包编程是否正确。。。。 ...

我的1768的向量表重定位VTOR和单帧编程用的1024都注意到了的,以及在您以及其他网友的帖子里曾提到过的:BIN格式、Thumb code、地址分散加载(IAP 0x00000000,APP 0x00010000)这个几个主要的注意点都在之前一个个解决了。

目前主要问题是:
有时候成功下载(下载、校对均成功),可以运行,中断正常,功能正常;
有时候即便成功下载,不是缺胳膊就是少腿的,比如自动重启、不确定的某个功能异常。这样的话,就可能导致下载过程蛮顺溜,实际使用不可用。

费解的是我的APP在使用ISP模式Flash Magic下载进去又能正常运行。
个人觉得有没可能APP的哪些设计缺陷会影响到其在IAP下载模式下的运行。
此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

9
 
听说有个校验,你去查一下NXP资料,看是否是下载进去的程序需要填写正确的校验。
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复
您需要登录后才可以回帖 登录 | 注册

开源项目 更多>>
    查找数据手册?

    EEWorld Datasheet 技术支持

    相关文章 更多>>
    关闭
    站长推荐上一条 1/8 下一条

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表