物联网普及的现在,在工业、汽车应用领域中,设备制造商通常都采用在线固件更新 (Firmware Over-the-Air, FOTA) 来更新产品软件,并借此更新和解决产品可靠性和安全性问题。FOTA技术有助于提升用户对产品的满意度,降低工程师现场更新的高成本,更可避免采用昂贵的产品召回方式来对产品系统进行升级。
FOTA功能有许多的优点,但必须在下载和安装更新的过程中,避免发生任何不可预见的风险,才能有效地减少死机维修的机会。在成本压力和上市时间的要求下,通常希望能在现有成熟系统架构下,即可以简单快速并安全地实施FOTA功能。FOTA通过无线或有线的通讯方法进行固件更新成为市场的新兴需求。
NuMaker-IoT-M487 开发板提供多种连网方式与接口。基于NuMaker-IOT-M487开发板,通过与Wi-Fi 模块进行 AT 指令串口通信,可快速实现与云连接的 IoT设备典型开发应用实例。入门教程包含如何在您的计算机获取开发软件、实例编译、固件下载以及连网、连接云测试。
NuMaker-IoT-M487 开发板整合常用器件,板载多轴传感器,提供兼容 Arduino UNO 与 mikroBUS™ 接口,不论是 GPIO、UART、ADC、PWM、SPI 或 I2C 等等都能连接;外挂 SPI Flash 及提供 microSD 卡插槽。
图1 : NuMaker-IoT-M487 开发板。蓝框是 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) 就会触发下载固件到设备。下载的固件先存到 SPI Flash。
图3 : 固件下载
固件下载确认无误后,设备会重置从 LDROM 启始。当 LDROM 的 Loader 侦测到有新版本的固件,会将原本在 APROM 的固件复制到 SPI Flash 的回复(Rollback)区块,再将新的固件从 SPI Flash 复制到 APROM。
图4 : 固件更新
代码可以从 github 下载,网址是https://github.com/OpenNuvoton/NuMaker-mbed-AWS-IoT-CSDK-OTA-example。在实践这个 OTA 范例前,需要做一些准备与设定的步骤。
账号与开发工具
为了使用 AWS 的 IoT Core、IAM 和 S3 服务,您必须要注册 AWS 账号。网址是 https://aws.amazon.com,大部分服务第一年使用免费,之后以服务用量或网络流量计费。
Arm 提供免费的 Mbed 开发工具,您必须要注册一个 Mbed 账号。网址是 https://os.mbed.com
开发工具有 Online Compiler、Mbed Studio 和 Mbed CLI。范例的 README.md 说明是使用 Mbed CLI开发工具。在这里如改以 Mbed Studio 做为开发工具。请参考这个网址 https://os.mbed.com/docs/mbed-studio/current/getting-started/index.html下载 Mbed Studio 的程序再进行安装。