求助,同14年以下两个贴子反馈的问题一样,但没找到解决方法。出错机率有1~5%左右。
http://bbs.eeworld.com.cn/thread-435273-1-1.html
http://bbs.eeworld.com.cn/thread-324949-1-1.html
盼复!!
好的,过程如下:
1、程序分区为: boot:0---2FFF (2000--2FFF存储固件信息),APP:3000---3FFFFF,backup: 40000--7FFFFF
2、正常启动过程,APP运行,从串口下载应用程序至backup区,并校验40000开始的程序,正确后,写入2000--2FFF程序信息并标记升级,重启。
3、重启后,Boot运行,读取(2000-2FFF)信息,判断需要升级,并重新校验40000--7FFFFF的程序信息与000--2FFF一致,进入复制过程:(40000--7FFFFF)复制至 (3000---3FFFFF),成功后,校验(3000---3FFFFF),如果正确重启。
4、进入APP,校验程序(3000---3FFFFF,按程序实际大小,存储在(000--2FFF)),通过应用程序把校验码发出来。
---------------------------------------------------
以上升级过程在程序开发实验过程中,均能正常。
当出货量大后1K以上,发现部份产品出现有几种情况:
1)无法升级程序。(返回分析,防真调试时,发现BOOT校验40000---7FFFF这个校验码与存储在(000--2FFF)校验码不一致,无法下一步升级)
2)可以升级,但返回的校验码异常,运行也会异常。(分析:使用J-LINK读取固件与烧录的固件比较代码一致;使用IAR防真boot程序,并读取3000---7FFFFF,fv发现部份数据与代码不一致),以上链接反馈的问题类似。使用J-Link重新刷程序后,代码运行正常。
3)可以升级,返回校验码正常,但程序运行异常(通讯发送开机命令,但机子不开机,显示不正常等)。(分析:使用J-LINK读取固件与烧录的固件比较代码一致。没有做防真)
通过去年的出货量,发现故障的产品至少有1%。
有查过程序,发现有可能的地方有:
网上搜索有人提到频率的问题,我们重新确认了一下。
主程序的频率66.6M ,程序IAP程序设置 #define IAP_FCCLK (80000),BOOT,APP都是这个设置,感觉这里有问题,但不确定。
后来修订#define IAP_FCCLK (66666),不过新出货的程序没有IAP升级的需求,暂时无法得到相关数据。
以上。
我最近也遇到同样问题。结合你的问题分析和仿真现象,修改IAP_FCCLK值为单片机的频率值后,BOOT更新程序能正常启动运行。
Hi, HuanMing,
你好, 愿闻其详, 你是如何升级IAP的, 升级IAP后,APP如何异常?
BR
XiangJun Rong
将IAP_FCCLK值设为你单片机的运行频率。