由于Flash擦除和写入函数,需要在Flash地址的0~32 K之内,不能超出,或者运行于ram内,否则执行擦、写操作的时候会出错。
当OTA升级时,APP超出32K,需要将Flash擦写放在RAM中运行。
附件工程同时把boot和app1(0x1000)、app2(0x1000)都下载到Flash中,boot通过0x1F000地址的值判断跳转哪个APP。当APP1接收到以0x12、0x34开始的1000个数据后,会把数据写入到APP2中的0x16000地址中,0x1F000地址写入标志位,然后复位,Boot跳转到APP2;当APP2接收到以0x21、0x34开始的1000个数据后,会把数据写入到APP1中的0x6000地址中,擦除0x1F000地址的数据,然后复位,Boot跳转到APP1。 |