-
IAP升级简介
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级
-
IAP升级流程
-
IAP升级要点提炼
1) 单个升级包校验错误或者接收超时的时候,要重置升级流程,重新等待接收起始命令;
2)跳转到APP前,要对接收总包数,整个固件进行校验,避免跳转到APP卡死;
3 ) 将升级数据写入ROM时,要判断写入地址合法性,写入和读出数据是否一致。避免将BOOT代码区或者参数存储区擦除甚至是访问非法地址造成程序发生致命的错误;
4)跳转到APP前,要关闭所有中断,复位所有外设。避免执行APP时,BOOT程序仍然在产生中断; -
IAP升级方式
方式一: 在ROM资源比较紧张的情况下,边擦除APP边写入升级数据
方式二:在ROM资源充足的情况下,即程序设计时APP划分的可用地址空间超过两倍固件大小。可以把该空间分为两个区域SPACE1和SPACE2,接收到升级包后,先写入到SPACE 2,升级完成校验成功后再覆盖到SPACE1。
.优缺点对比:方式二需要较大的存储空间。即使是升级失败,SPACE1中的APP仍能使用;方式一一旦升级失败,只能等待重新升级。
总结:
1) 设置流程图时要考虑到各种情况,逻辑上严密,严谨,不能有死角。除if…else if …涉及到的情况外,不要漏掉else…可能发生的情况,一旦这种情况发生,有可能对你的程序造成灾难性的影响;
2)程序执行发生错误时,要有从故障恢复到正常的能力,这一点在BOOT的设计上尤为重要。