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