串口升級(jí)ota.bin演示(升級(jí)后,屏幕顯示彩色圓圈)
本文檔適合大彩醫(yī)用級(jí)的串口屏產(chǎn)品使用。
1. VisualTFT軟件版本:V3.0.1.1137及以上的版本。
版本查看:
1) 打開VisualTFT軟件啟動(dòng)頁(yè)面如圖2-1軟件版本,右上角會(huì)顯示的軟件版本號(hào);
圖2-1軟件版本
2) 打開VisualTFT,在軟件右下角可以查看軟件版本圖2-2軟件版本,最新版本可登錄http://gc086.com/進(jìn)行下載。
2-2軟件版本
2. 串口屏硬件版本: M系列固件 >= V6.3.319.00。
版本查看:
1) 查看屏幕背面版本號(hào)貼紙;
2) VisualTFT與屏幕聯(lián)機(jī)成功后,右下角顯示的版本號(hào)。
數(shù)據(jù)交互:‘private’指令交互由固件處理;‘ota.bin’由lua腳本處理。
1
《LUA 腳本API V1.4》可通過(guò)以下鏈接下載物聯(lián)型開發(fā)包獲取:
http:/gc086.com/index.php?s=/List/index/cid/19.html
2
《LUA基礎(chǔ)學(xué)習(xí)》可通過(guò)以下鏈接下載物聯(lián)型開發(fā)包獲取:
http:/gc086.com/index.php?s=/List/index/cid/19.html
3
LUA腳本初學(xué)者可以通過(guò)下面鏈接進(jìn)行學(xué)習(xí)。
http://www.runoob.com/lua/lua-arrays.html
4
AT指令,可以通過(guò)下面鏈接了解
http://www.openluat.com/
本例程通過(guò)大彩協(xié)議自定義指令和用戶主板通訊,指令格式為 EE B6 … FF FC FF FF,且將OTA升級(jí)部分代碼封裝成‘ota.lua’文件。若用戶采用的是自由串口協(xié)議,可參考本例程的方法實(shí)現(xiàn)。
5.1 創(chuàng)建虛擬串口
在實(shí)現(xiàn)例程前需要作以下3個(gè)準(zhǔn)備:
1. 硬件平臺(tái);
2. 軟件平臺(tái);
3. UI素材。
該例程使用大彩物聯(lián)型7寸串口屏DC80480M070_1111_0C為驗(yàn)證開發(fā)平臺(tái)。如圖5-1所示;
圖5-1 M系列7寸串口屏
其他尺寸M型的串口屏均可借鑒此教程。
5.1.1 軟件平臺(tái)
使用大彩自主研發(fā)的上位機(jī)軟件VisualTFT配置工程,登錄http://gc086.com/下載。如圖5-2所示;
圖5-2 下載軟件
5.2 配置串口屏工程
工程配置主要介紹以下6點(diǎn):
(1) OTA文件生成
(2) 畫面配置
(3) LUA API介紹
(4) 串口升級(jí)OTA流程圖
(5) LUA 串口升級(jí)源碼
(6) LUA SD卡升級(jí)源碼
5.2.1 OTA文件生成
在 VisualTFT軟件菜單欄點(diǎn)擊 ,將彈出【量產(chǎn)下載】彈窗界面,如圖5-3所示:
圖5-3 量產(chǎn)下載
點(diǎn)擊【OTA升級(jí)包…】,打包生產(chǎn)ota.bin文件,如圖5-4所示
圖5-4 OTA文件生成
注意:
OTA文件可以指定或全部文件打包升級(jí),相關(guān)下載項(xiàng)說(shuō)明如下所示:
- 下載圖片資源:gif、iocn、圖片等。增加、修改、刪除圖片 UI,應(yīng)勾選此項(xiàng)。
- 下載觸碰配置:控件、lua、工程相設(shè)置參數(shù)。增加控件(非圖片)、修改、刪除等,應(yīng)勾選該項(xiàng)。
- 下載字庫(kù)資源:增加、刪除、修改字庫(kù)樣式或增加一個(gè)字體大小等,應(yīng)勾選該項(xiàng)。
- 下載音頻文件:增加、刪除、修改音頻文件等,應(yīng)該勾選此項(xiàng)。
- 下載音頻文件:增加、刪除、修改視頻文件等,應(yīng)該勾選此項(xiàng)。
- 下載音頻文件:增加、刪除、修改系統(tǒng)鍵盤等,應(yīng)該勾選此項(xiàng)。
即用戶修改對(duì)應(yīng)下載項(xiàng)后,打包內(nèi)容可選擇為“指定文件”。
5.2.2 畫面配置
本例程,只配置下載部分的畫面及控件,在主頁(yè)面(畫面ID0)中,添加以下控件:
- 控件ID88 :文本控件,顯示下載信息。本例程中顯示下載進(jìn)度、解壓進(jìn)度。
- 控件ID188:進(jìn)度條控件,顯示下載信息。本例程中顯示下載進(jìn)度、解壓進(jìn)度。
本例程中,屏幕初上電始化后,在LUA腳本設(shè)置文本控件、進(jìn)度條控件隱藏。當(dāng)用戶單片機(jī)發(fā)送開始升級(jí)指令時(shí),顯示出控件ID88、ID188。如圖5-5所示:
圖5-5 畫面配置
5.2.3 LUA API介紹
本例程中,OTA升級(jí)相關(guān)API如下:
1. ota_init(md5, filesize, addr)
設(shè)置OTA寫入?yún)?shù)
- md5:字符串,固定為‘0123456789abcdef’
- filesize:ota.bin文件的大小,單位:byte
- addr:固定為0x800000(16進(jìn)制)
如ota.bin文件大小為17542byte,則ota_init(‘0123456789abcdef’, 17542, 0x800000)。
2. ota_write(writeTb)
OTA寫入,用戶調(diào)用ota_write(writeTb),將writeTb數(shù)據(jù)寫入到0x800000地址。
- writeTb:寫入字節(jié)數(shù)據(jù),寫入大小為2048 byte,不足2048byte補(bǔ)零。寫入該地址的數(shù)據(jù)掉電后不清除。
3. ota_check_upgrade(state)
ota.bin文件校驗(yàn)、解壓。當(dāng)用戶將ota.bin文件傳輸完畢后,調(diào)用ota_check_upgrade(state)對(duì)ota.bin進(jìn)行先校驗(yàn)在解壓,解壓成功后即已經(jīng)升級(jí)完成,屏幕自動(dòng)重啟。
-
state:1,進(jìn)入升級(jí)狀態(tài)。
4. ota_destroy()
清除OTA數(shù)據(jù):對(duì)0x800000地址寫入的數(shù)據(jù)清除。
5. on_ota_progress(status,value)
OTA校驗(yàn)、解壓回調(diào)。當(dāng)用戶ota_check_upgrade(state)函數(shù)后,會(huì)自動(dòng)回到該API。
- status:狀態(tài)。1-校驗(yàn)過(guò)程,2-校驗(yàn)結(jié)果,3-解壓過(guò)程,4解壓結(jié)果
- value:處理結(jié)果。
5.2.4 串口升級(jí)OTA流程圖
M系列串口屏需要使用 ota.bin 文件進(jìn)行升級(jí),ota.bin 生成方式參考OTA文件生成章節(jié)。詳細(xì)指令可參考附錄A。升級(jí)流程如圖5-6所示:
圖5-6 OTA流程
5.2.5 LUA 串口升級(jí)源碼
1. 初始化加載
本例程中,采用大彩協(xié)議自定義指令實(shí)現(xiàn)(EE B6 … FF FC FF FF),且OTA實(shí)現(xiàn)已封裝在‘ota.lua’中。用戶需要在‘main.lua’處理以下關(guān)鍵點(diǎn):
- 全局變量:修改升級(jí)頁(yè)面對(duì)應(yīng)的畫面ID
注意:ota.lua文件里面也需要更改畫面ID以及控件ID
- 初始化:加載ota.lua文件
- 初始化:初始化隱藏ota 升級(jí)的進(jìn)度
- 串口回調(diào):判斷是否是B6指令
代碼如程序清單 1所示。
程序清單 1 main.lua初始化
▲下滑查看
2.開始下載
當(dāng)屏幕接收到用戶主板發(fā)送開始下載指令(EE B6 Len 88 11 baudrate filesize down_name FF FC FF FF),先判斷文件大小和文件名稱是否合法,在顯示下載進(jìn)度部分的控件→響應(yīng)主板→OTA_INIT(先清除備份區(qū),在初始化) →提升波特率。代碼如程序清單 1所示。
程序清單 2 開始下載
▲下滑查看
當(dāng)屏幕接收到用戶主板發(fā)送的數(shù)據(jù)指令(EE B6 Len 88 22 sn packet checksum FF FC FF FF),先判斷數(shù)據(jù)包長(zhǎng)度和大小、sn、校驗(yàn)碼等是否合法。在傳輸累計(jì)2048字節(jié)后(傳輸4次,每次512字節(jié))則調(diào)用ota_write(ota_writeTb)寫到0x800000地址。若最后一次寫入的數(shù)據(jù)累計(jì)后不足2048字節(jié),屏幕自動(dòng)補(bǔ)零寫入。代碼如程序清單 3所示。
程序清單 3 ota寫入
▲下滑查看
4. 下載完成
當(dāng)屏幕接收到用戶主板確認(rèn)升級(jí)的指令(EE B6 Len 88 33 01 FF FC FF FF),則調(diào)用ota_check_upgrade(1)開始進(jìn)入校驗(yàn)解壓過(guò)程。代碼如程序清單 4所示。
程序清單 4 開始升級(jí)
▲下滑查看
當(dāng)屏幕進(jìn)入升級(jí)過(guò)程,會(huì)自動(dòng)調(diào)用on_ota_progress(status,value)進(jìn)入校驗(yàn)、解壓過(guò)程,校驗(yàn)中→校驗(yàn)結(jié)果→解壓中→解壓結(jié)果→恢復(fù)波特率→重啟,代碼程序清單 5所示。
程序清單 5 校驗(yàn)解壓
▲下滑查看
5.2.6 LUA SD升級(jí)源碼
本例程中,用戶還可以將ota.bin文件放在SD卡中進(jìn)行升級(jí),本例程中已將sd升級(jí)功能封裝在‘ota.lua’中,用戶只需要在sd插入回調(diào)函數(shù)里調(diào)用my_sd_updata
OTA()即可。代碼程序清單 5所示。
程序清單 6 SD卡升級(jí)源碼
▲下滑查看
MCU 發(fā)送給屏幕的指令如下所示:
屏幕應(yīng)答或通知MCU屏幕的指令如下所示:
DEMO下載鏈接:
http://gc086.com/uploads/file/20210111/M%20OTA.zip