我的這個升級篇的代碼適用于自己所有的帶WIFI和GPRS模塊的開發(fā)板,升級功能實質(zhì)上是通過MQTT把數(shù)據(jù)發(fā)給WIFI和GPRS模塊,然后模塊進行保存和運行.
這個升級程序是當時自己花了兩個星期的時間寫的,當時自己寫的時候給自己定了很多要求.
1,可以方便每個人升級自己的設(shè)備
2,不能讓用戶自己去搭建服務(wù)器
3,保證每個人不能沖突
4,要在現(xiàn)有的遠程通信的基礎(chǔ)上,不能夠再去走其它通信的路線
5,考慮以上條件,想到用戶要在自己電腦上運行一個上位機軟件(MQTT通信),設(shè)備是訪問上位機的數(shù)據(jù)實現(xiàn)升級
6,那么上位機必須產(chǎn)生一個唯一碼用做通信的主題
7,為了以后的GPRS模塊,這個上位機也必須同時支持GPRS模塊升級程序,而且操作步驟要和WIFI一樣
8,由此通信主題中加入了 "設(shè)備的型號"(也是為了不同型號的設(shè)備升級程序,實質(zhì)WIFI和GPRS也相當于不同的型號而已)
9,可以區(qū)域性的升級(升級一個型號的設(shè)備,升級用戶自定義的一些設(shè)備,升級某一個設(shè)備)
10,加入程序版本控制(有的用戶希望設(shè)備自動升級,用版本來控制)
11,上位機和用戶手機APP都可以可以控制升級設(shè)備,但是APP只是通知設(shè)備升級(APP只是有選擇權(quán),上位機才具有控制權(quán))
12,如果用來做產(chǎn)品,上位機提供給設(shè)備商,APP是用戶使用
13,可擴展性,為以后升級單片機做準備
14,底層硬件程序有兩部分,升級時不斷的切換保存,保證底層硬件程序必須保留上一次的,升級出錯后自動運行以前的備份
15,為避免意外情況,有一個按鍵可以用來切換程序,還可以清除除升級程序意外的程序
16,升級完先運行一下,如果沒有錯誤才切換執(zhí)行哪一部分程序的標志
17,由于MQTT最大傳輸?shù)淖止?jié)是1024(WIFI底層硬件設(shè)置的),所以要把每一個文件進行分段傳輸
18,為避免上位機用任務(wù)(任務(wù)的困難程度太高,設(shè)備多了不好控),所以采用一問一答
19,后期可以對底層的升級程序做修改(已經(jīng)去掉,發(fā)現(xiàn)一直沒用到)
20,后期又優(yōu)化了一些細節(jié)的地方....
21,目前測試同時升級47個WIFI設(shè)備.(由于路由器連接個數(shù)的限制,無法測試更多)
目前升級程序 徐工 幫我優(yōu)化了一版(主要目的是省內(nèi)存)
這是徐工給的方案(徐工已經(jīng)優(yōu)化好了,并運行在自己的設(shè)備上,聽徐工說,他的方案徹底解決了內(nèi)存問題)
很佩服徐工,前天晚上給我說優(yōu)化方案,隔了一天他就優(yōu)化好了,徐工底下肯定下了很大的功夫.


楊工,有關(guān)遠程升級的考慮:
1、目前的困惑點是因為內(nèi)存不夠引起的,我的想法是這樣來考慮,你看是否可行:
2、把升級哪部分程序進行剝離單獨出來,具體這樣:
init.lua程序:按鍵處理和根據(jù)標識選擇運行程序,(1)選擇運行A程序,就是Aupdata1~7;
(2)運行升級程序,進行升級;(3)運行Bupdata1~7;
主要修改mqttconfig.lua程序,把其中有關(guān)升級的程序全部剝離出來。就是分成兩部分程序:
分別是是mqttconfig.lua和mqttupdata.lua。
3、我嘗試一下,把mqttconfig.lua中的升級部分注釋后,再運行A部分程序就沒有內(nèi)存問題了。
這樣可能解決內(nèi)存的困惑,也完成升級:
出廠開機默認運行以下程序:
1、init.lua mqttconfig.lua A部分程序;升級前的運行程序
運行過程中,如果收到mqtt服務(wù)器的升級請求,置升級標志,重新復(fù)位運行。
復(fù)位運行,檢測到升級標志,運行以下程序
2、init.lua mqttconfig.lua mqttupdata.lua;為升級的運行程序
如果升級成功,置成功標志,復(fù)位運行以下程序,
3、init.lua mqttconfig.lua B部分程序;升級成功后的運行程序


咱們的教程還是使用徐工優(yōu)化前的哈,因為程序確實挺復(fù)雜的,當然大家也可以不需要管程序,會用也可以.
等弄懂了優(yōu)化前的,咱再用徐工優(yōu)化后的.
2-STM32物聯(lián)網(wǎng)開發(fā)WIFI(ESP8266)+GPRS(Air202)系統(tǒng)方案升級篇(視頻總攬)
板子鏈接
https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.3e3b1deb80xzYz&id=569295486025