大家新年好!
最近我在网上看到如下的一个单片机IAP升级程序(设计思路),大家觉得如何? 有什么地方存在问题或可以改进的吗?
1.分别编制IAP及APP两个程序。
2.MCU复位后,总是先执行IAP程序。并且在IAP程序中,
通过判断设定条件,来决定是直接跳转到APP程序并执行,
还是进入对APP程序进行升级的操作。
APP升级OK,可进入新的APP程序并执行。
3.在IAP程序中,有两种方式可以让其进入APP升级状态:
a.开机前按下规定的按键不放,则进入升级状态。
b.读取标志位的值,若为0xA55A,则进入升级状态(升级OK后,
将其改为0xffff,则下次上电后,若不按升级键,则直接进入APP程序)。
4.在APP执行过程中,当接收到特殊的APP升级命令后,
则会将标志位的值改为0xA55A,并执行软件复位操作,以让MCU复位并
进入IAP程序。此时IAP会直接进入APP升级状态。
5.IAP升级按键的意义:
a.标志位只能在APP中修改,但最开始MCU中只烧录进了IAP程序。所以
此时可以按下升级键强制让IAP程序进入APP升级状态,将最初版的APP
程序下载到MCU中。当然也可以将IAP程序和最初版的APP程序的
HEX文件合二为一,并一次烧录进MCU.下次需要升级APP时,则直接在
APP中发升级命令即可。
b.若在运行或升级等过程中,APP程序遭到破坏,且不能再正确接收升级命令时,
若要升级或恢复APP程序,则只能按升级键并重开机实现了。