嵌入式IAP设计
文章目录
- IAP和OTA的区别
- IAP
IAP和OTA的区别
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
空中下载技术(Over-the-Air Technology, OTA)是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术。
而在实际项目中,很多人把IAP技术也称为OTA升级,。
IAP
单片机需要有两段程序,
首先上电是bootloader程序,程序中要负责升级的传输和flash的读写。
然后是application程序,实现具体的项目功能。
像cortex-M3 M4这钟RAM小的单片机,通常还需要双备份。
以确保在传输结束后发现程序有问题还可以回退到正常执行版本。
bootloader上电后要校验固件合法性,
可以在app固件末尾附加CRC32,进行运算校验。
还可以在中断向量表的保留寄存器中写入标志位,
并在固件开头进行查询核对。
bootloader的中断在跳转到APP之后记得要关闭。
bootloader在上电后在flash中存储异常重启计数。
app开始执行一段时间后,将异常重启计数清零。
如果bootloader发现异常重启溢出,便停留在boot中等待升级。