Wi-Fi無線控制器開發例程(升級篇)
我的這個升級篇的代碼適用於自己所有的帶WIFI模塊的開發板,升級功能實質上是通過MQTT把數據發給WIFI模塊,然後模塊進行保存和運行.
這個升級程序是當時自己花了兩個星期的時間寫的,當時自己寫的時候給自己定了很多要求.
1,可以方便每個人升級自己的設備
2,不能讓用戶自己去搭建服務器
3,保證每個人不能沖突
4,要在現有的遠程通信的基礎上,不能夠再去走其它通信的路線
5,考慮以上條件,想到用戶要在自己電腦上運行一個上位機軟件(MQTT通信),設備是訪問上位機的數據實現升級
6,那麽上位機必須產生一個唯一碼用做通信的主題
7,為了以後的GPRS模塊,這個上位機也必須同時支持GPRS模塊升級程序,而且操作步驟要和WIFI一樣
8,由此通信主題中加入了 "設備的型號"(也是為了不同型號的設備升級程序,實質WIFI和GPRS也相當於不同的型號而已)
9,可以區域性的升級(升級一個型號的設備,升級用戶自定義的一些設備,升級某一個設備)
10,加入程序版本控制(有的用戶希望設備自動升級,用版本來控制)
11,上位機和用戶手機APP都可以可以控制升級設備,但是APP只是通知設備升級(APP只是有選擇權,上位機才具有控制權)
12,如果用來做產品,上位機提供給設備商,APP是用戶使用
13,可擴展性,為以後升級單片機做準備
14,底層硬件程序有兩部分,升級時不斷的切換保存,保證底層硬件程序必須保留上一次的,升級出錯後自動運行以前的備份
15,為避免意外情況,有一個按鍵可以用來切換程序,還可以清除除升級程序意外的程序
16,升級完先運行一下,如果沒有錯誤才切換執行哪一部分程序的標誌
17,由於MQTT最大傳輸的字節是1024(WIFI底層硬件設置的),所以要把每一個文件進行分段傳輸
18,為避免上位機用任務(任務的困難程度太高,設備多了不好控),所以采用一問一答
19,後期可以對底層的升級程序做修改(已經去掉,發現一直沒用到)
20,後期又優化了一些細節的地方....
21,目前測試同時升級47個WIFI設備.(由於路由器連接個數的限制,無法測試更多)
目前升級程序 徐工 幫我優化了一版(主要目的是省內存)
這是徐工給的方案(徐工已經優化好了,並運行在自己的設備上,聽徐工說,他的方案徹底解決了內存問題)
很佩服徐工,前天晚上給我說優化方案,隔了一天他就優化好了,徐工底下肯定下了很大的功夫.
楊工,有關遠程升級的考慮: 1、目前的困惑點是因為內存不夠引起的,我的想法是這樣來考慮,你看是否可行: 2、把升級哪部分程序進行剝離單獨出來,具體這樣: init.lua程序:按鍵處理和根據標識選擇運行程序,(1)選擇運行A程序,就是Aupdata1~7; (2)運行升級程序,進行升級;(3)運行Bupdata1~7; 主要修改mqttconfig.lua程序,把其中有關升級的程序全部剝離出來。就是分成兩部分程序: 分別是是mqttconfig.lua和mqttupdata.lua。 3、我嘗試一下,把mqttconfig.lua中的升級部分註釋後,再運行A部分程序就沒有內存問題了。 這樣可能解決內存的困惑,也完成升級: 出廠開機默認運行以下程序: 1、init.lua mqttconfig.lua A部分程序;升級前的運行程序 運行過程中,如果收到mqtt服務器的升級請求,置升級標誌,重新復位運行。 復位運行,檢測到升級標誌,運行以下程序 2、init.lua mqttconfig.lua mqttupdata.lua;為升級的運行程序 如果升級成功,置成功標誌,復位運行以下程序, 3、init.lua mqttconfig.lua B部分程序;升級成功後的運行程序
咱們的教程還是使用徐工優化前的哈,因為程序確實挺復雜的,當然大家也可以不需要管程序,會用也可以.
等弄懂了優化前的,咱再用徐工優化後的.
Wi-Fi無線控制器開發例程(升級篇)