物聯網普及的現在,在工業(yè)、汽車應用領域中,設備制造商通常都采用在線固件更新 (Firmware Over-the-Air, FOTA) 來更新產品軟件,并借此更新和解決產品可靠性和安全性問題。FOTA技術有助于提升用戶對產品的滿意度,降低工程師現場更新的高成本,更可避免采用昂貴的產品召回方式來對產品系統進行升級。
FOTA功能有許多的優(yōu)點,但必須在下載和安裝更新的過程中,避免發(fā)生任何不可預見的風險,才能有效地減少死機維修的機會。在成本壓力和上市時間的要求下,通常希望能在現有成熟系統架構下,即可以簡單快速并安全地實施FOTA功能。FOTA通過無線或有線的通訊方法進行固件更新成為市場的新興需求。
NuMaker-IoT-M487 開發(fā)板提供多種連網方式與接口。基于NuMaker-IOT-M487開發(fā)板,通過與Wi-Fi 模塊進行 AT 指令串口通信,可快速實現與云連接的 IoT設備典型開發(fā)應用實例。入門教程包含如何在您的計算機獲取開發(fā)軟件、實例編譯、固件下載以及連網、連接云測試。
NuMaker-IoT-M487 開發(fā)板整合常用器件,板載多軸傳感器,提供兼容 Arduino UNO 與 mikroBUS? 接口,不論是 GPIO、UART、ADC、PWM、SPI 或 I2C 等等都能連接;外掛 SPI Flash 及提供 microSD 卡插槽。
圖1 : NuMaker-IoT-M487 開發(fā)板。藍框是 4M bytes 的 Winbond W25Q32 SPI Flash
M487 內部有 4K bytes LDROM 和 512K bytes APROM。LDROM 可以存放 bootloader,APROM 主要存放應用的固件。由于 LDROM 空間不夠,在 APROM 劃分出 Cloner 和 metadata 空間。Cloner 負責固件的復制,metadata 存放固件相關信息。圖2 是 M487 內部的 LDROM / APROM 以及外設 SPI Flash 的使用地址分配。
圖2 : M487 的 LDROM / APROM與板子上的 SPI Flash 的地址分配
在 AWS IoT 上建立好更新的工作 (Job) 就會觸發(fā)下載固件到設備。下載的固件先存到 SPI Flash。
圖3 : 固件下載
固件下載確認無誤后,設備會重置從 LDROM 啟始。當 LDROM 的 Loader 偵測到有新版本的固件,會將原本在 APROM 的固件復制到 SPI Flash 的回復(Rollback)區(qū)塊,再將新的固件從 SPI Flash 復制到 APROM。
圖4 : 固件更新
代碼可以從 github 下載,網址是https://github.com/OpenNuvoton/NuMaker-mbed-AWS-IoT-CSDK-OTA-example。在實踐這個 OTA 范例前,需要做一些準備與設定的步驟。
賬號與開發(fā)工具
為了使用 AWS 的 IoT Core、IAM 和 S3 服務,您必須要注冊 AWS 賬號。網址是 https://aws.amazon.com,大部分服務第一年使用免費,之后以服務用量或網絡流量計費。
Arm 提供免費的 Mbed 開發(fā)工具,您必須要注冊一個 Mbed 賬號。網址是 https://os.mbed.com
開發(fā)工具有 Online Compiler、Mbed Studio 和 Mbed CLI。范例的 README.md 說明是使用 Mbed CLI開發(fā)工具。在這里如改以 Mbed Studio 做為開發(fā)工具。請參考這個網址 https://os.mbed.com/docs/mbed-studio/current/getting-started/index.html下載 Mbed Studio 的程序再進行安裝。