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