FOTA 更新
FOTA 是 Firmware Over the Air 的縮寫,意指可用 Wi-Fi 透過無線方式更新開發板上的韌體。
LinkIt 7697 提供了 LHTTPUpdate 函式庫,讓開發者可從給定的 HTTP URL 下載並燒錄更新 LinkIt 7697 的 sketch 應用程式,達成 FOTA 無線更新應用程式的功能。
範例
將 LinkIt 7697 Arduino BSP 更新至 v0.10.5 或更新的版本。
在 Tools > Board 選單中選擇 LinkIt 7697。
開啟 Examples > LHTTPUpdate > LHTTPUpdate 範例。
依照使用的 Wi-Fi AP 組態,更新程式碼中的 ssid 與 pass 資訊:
點選 Upload 按鈕將 sketch 上傳至 LinkIt 7697。
上傳完成後,開啟 Serial Monitor (baudrate 為 9600)。
會看到下列的系統訊息:
這表示系統已從 http://download.labs.mediatek.com/resource/fota_example.bin 將範例 FOTA binary 的 bin 檔下載至 LinkIt 7697。
此時按下 RST 按鈕,系統即會重新開機,並將剛剛下載的 FOTA binary 程式 (fota_example.bin) 燒錄至 LinkIt 7697 以取代原本的 sketch。
約經過三秒鐘燒錄時間後,會看見開發板橘色 LED 閃爍,表示板上的 sketch 已完成替換為新的 "blinking" sketch。
運作機制
範例程式碼透過呼叫下列 API,從 http://download.labs.mediatek.com/resource/fota_example.bin 下載 FOTA binary 的 bin 檔,並將之燒錄至 flash:
FOTA binary 是經過前處理的 sketch bin 檔,為一種經過壓縮並帶有 checksum 資訊的檔案格式,以確保韌體更新過程中發生的錯誤可被即時偵測。
執行 update() 函式時,FOTA binary 會先被寫入至 flash 的 FOTA 區間。整個 flash 的區間劃分如下:
完成寫入 FOTA binary 至 FOTA 區間後,update() 函式會將 FOTA 區間標示為等待被更新的狀態。
接著系統重新開機,bootloader 偵測到 FOTA 區間有新韌體等待被更新時,即會將之解壓縮並檢查 checksum,一切無誤的話便把新韌體燒錄至 CM4 firmware 的區間:
CM4 firmware 區間燒錄完成後即完成 sketch 應用程式更新,結束整個 FOTA 處理程序。
如何生成 FOTA Binary
前文提到 FOTA binary 是經過前處理的 sketch bin 檔,以下將說明如何將正常的 sketch binary 檔轉換為 FOTA binary:
從 https://docs.labs.mediatek.com/resource/mt7687-mt7697/zh_tw/downloads 下載 FOTA ROM Package 工具。
針對要轉換的 Arduino sketch,在 Arduino IDE 選單中選取 Sketch > Export Compiled Binary 產生該 sketch 的 binary 檔案。
依照 FOTA ROM Package 的說明進行相關設定與轉換。以下將示範在 Windows 下的轉換方法:
Windows 版的 FOTA ROM Package 工具
假設 FOTA ROM Package 的根目錄在 $FOTA_ROOT:
將 $FOTA_ROOT\_ini\template\mt7697\FOTARomPacker.ini 檔案拷貝至 $FOTA_ROOT\_ini 目錄。
開啟 $FOTA_ROOT\_ini\FOTARomPacker.ini 如下:
修改 File 欄位的內容,填入之前從 Arduino IDE 輸出的 sketch binary 檔的路徑。
請勿修改 Start_Address、Partiion_Size、和 Is_Compressed 欄位,這幾個值需固定與 LinkIt 7697 flash 分區資訊一致。
將 sketch binary 拷貝至 $FOTA_ROOT\_Load\mt7697。
執行 gen_image.bat 批次檔。
產生的 FOTA binary 會放在 _Output 目錄。
取得 FOTA binary 後,開發者即可將之放在 HTTP 伺服器上,透過在 sketch 中使用 LHTTPUpdate.update() 函式呼叫,下載並燒錄該 FOTA binary 至開發板。
Last updated