图4中必须注意: ①必须先固定该程序的入口地址,这样引导程序才能将之拷贝到RAM中,大小要控制在2 KB之内。该程序比较小,一般不超过2 KB 。
②必须将Flash状态锁住,这样在写的时候不容易出错。 ③在读取60 KB数据后,打开看门狗。IAP升级系统是根据看门狗不喂狗来自动复位重启系统的。 用户只要根据上面的流程进行编程,就很容易实现IAP升级(这里是重点,也是一个难点)。引导程序流程如图5所示。 图5说明:声明一个入口函数,便于外部程序升级时调用。这个引导程序比较简单。由于在片内执行,所以使用汇编语言(mov指令)很容易就可以把蚂蚁搬家程序导入到RAM中。 由于IAR编译出来的最终文件为*.a43文件,建议使用类似(HexToBin.exe)软件将*.a43文件转化成二进制文件,就可直接下载了。 4 注意事项 这段代码必须在RAM里运行,所以暂时不使用SP来“RET”。也就是说,不可以使用CALL指令,也不可以使用压栈处理(如PUSH或者POP等指令),所以这里将不可以开设堆栈区。通过某种无线手段执行代码(BIN文件),然后根据自定义无线协议,将该可执行代码下载并保存到片外的Flash相应地址空间,最后启动升级程序。最后通过启动看门狗并复位来启动系统。
|