ESP8266的ota升级由于涉及到不同的flash空间大小,以及新旧版本的不同,所以流程相对比较复杂。笔者这个倒腾的时间还是有一些的,不过,总归把事情解决了。下面记录一下基本的流程和遇到的问题。
还有一个问题,就是RTOS版本上面的ota升级和以前的很多是不同的,这也是让我倒腾那么长时间的原因之一。
基本流程:
User APP1 和 User APP2 是同⼀份软件的两个备份,后⽂分别简称为 user1 和 user2。
System param 区存了⼀个 flag,标识启动时应当运⾏ user1 还是 user2。 启动时先运⾏ Boot,Boot 读取 System param 区中的 flag,判断运⾏ user1 还是 user2,然后到 SPI Flash 的对应位置去取。
例如, (1) 初始状态:boot.bin + 版本 v1.0.0 的 user1.bin + System param 区 flag 标志为使⽤ user1;
(2) 服务器上传软件更新版本 v1.0.1 的 user1.bin 和 user2.bin;
(3) 服务器推送通知,设备读取 flag 当前正使⽤ user1,则从服务器下载 v1.0.1 的 user2.bin 到 SPI Flash 260KB 之后的空间;
(4) 下载完成后,⽤户可以选择重启更新,则修改 System param 中的 flag 标志为使⽤ user2,设备 重启,使⽤ v1.0.1 的 user2 软件。
(5) 再下次升级,则参考步骤 2 及之后流
遇到问题:
1 怎么把user2.bin中的内容拷贝到user1.bin?
配置编译宏:CONFIG_ESP8266_BOOT_COPY_APP=y
2 怎么确定使用哪种ota升级方法?
一般的原则是要根据flash大小来确定,其次根据实际项目需要,实际上,不同的项目是有不少差别的.
3 怎么获取源码呢?
全部的源码我这边有,需要的请回复,我发给你,假如是商业用途,需要你发个红包即可。
4 怎么知道flash大小?
安信可的可以参考这个目录:https://wiki.ai-thinker.com/esp8266