最近在做LPC1768的IAP在线升级,目前已可通过ISP下载IAP bootloader程序到前64K,并可通过CAN口通讯,进行应用软件的下载到后面的空间。
启动时从bootloader的main入口处就判断标志,选择运行下载程序还是应用程序。
运行过程中,定时器、串口、CAN口、AD等等的中断都算能正常运行,但是有一个问题如下面这个帖子的兄弟提到的,基本一模一样,帖子貌似沉了好久,未解之谜,大家再研究研究。
http://bbs.eeworld.com.cn/forum. ... 9&highlight=IAP
对能检测到的项目,有的机器运行都正常,有的机器不是这边有问题,就是那边有问题,所以很费解。
此帖出自
小平头技术问答
谢谢关注,我目前数据校验是这样的:
1、上位机对应用软件的代码每段(1024字节)加上CRC,下位机接收到后,确定CRC正确才IAP写入;
2、下位机IAP写入时,进行了固化的扇区准备,扇区写入,写入数据比较;
3、纠结好长时间后,再添加了人为的循环比较,就是每帧数据写入FLASH的数据与接收的数据在while循环里比较;
以上三者均能通过,才可能让升级继续,直至完成。
控制这么算比较严格了,升级每次都能下载成功,但就是运行有不同的异常出现。
我也没有什么好办法,如果你认为检察足够严格的话,就查看一下周边:例如能否保证缓存的数据在写入期间不被破坏,特别是,是否有堆栈溢出等情况。有条件的话,可以试着一口气写完,然后上位机重新发送一遍数据,再一口气的比对。
嗯,这个我之前在下载完以后,对全部代码进行过整体的CRC上下位机比较,后来改了方案用这三个来卡扣后,就没再用最后的校验比较,可以再加上去验证下。
一周热门 更多>