本应用笔记介绍运行于随 BlueNRG-LP、BlueNRG-LPS 片上系统提供的 Bluetooth®低功耗(LE)栈之上的 BlueNRG-LP、BlueNRG-LPS 无线(OTA)固件升级程序。
首先介绍与 OTA 固件升级过程相关的一些概念,然后帮助用户了解运行一些 OTA 固件升级会话所需的所有步骤。
“无线”固件升级的概念
“无线”(OTA)固件升级是一种协议,允许低功耗蓝牙从设备无线接收来自低功耗蓝牙主设备的固件映像,并将其写入 Flash 存储器。就低功耗蓝牙技术而言,OTA 固件升级框架定义了一种提供其自己的特性,并能与蓝牙 LE 栈上运行的任何给定应用使用的其他服务共存的服务。蓝牙 LE 主设备是由通过 USB 连接到 PC的 BlueNRG-LP、BlueNRG-LPS 开发套件平台构成的组合系统。BlueNRG-LP、BlueNRG-LPS 平台由BlueNRG GUI 驱动。鉴于这种选择,可以使用 PC 上的大量资源,尤其是用于生成固件映像的编译器,以及为了进行固件升级而在无线部署映像前存储映像所需的存储器空间。
OTA 固件升级服务描述
OTA 固件升级服务通过 BlueNRG-LP 、 BlueNRG-LPS DK 软件包中提供的文件 OTA_btl.[ch]
(MiddlewaresSTBLE_ApplicationOTA folder)实现。
下面是关于 OTA 固件升级服务及其相关特性的简述:
-Btl OTA 服务(OTA_SRVC_UUID):固件升级服务
‒aci_gatt_srv_add_service((ble_gatt_srv_def_t *)&ota_service);
-Btl 映像的特性(IMAGE_CHR_UUID):包含一些与空闲内存范围相关的信息,这是包含 OTA 固件升
级服务的当前应用建议的范围
-Btl 新映像的特性(NEW_IMAGE_CHR_UUID):包含 OTA 固件传输期间主设备想要无线发送的映像的基址和大小以及要求从设备发送确认的通知范围
-Btl 新映像内容的特性(IMAGE_CONTENT_CHR_UUID):它包含主设备发送(通过特性写入指令)的16 字节固件映像数据块,以及一些控制信息,例如块序号(2 字节)和用于完整性检查的校验和(1 字节)
-Btl 预期映像序号特性(IMAGE_SEQ_NUM_CHR_UUID):从设备通过该特性通知主设备其预期的下一个数据块或错误条件