简介:
当 OTAP 客户端(接收软件更新的设备,通常为 Bluetooth LE 外围设备)从 OTAP 服务器
(发送软件更新的设备,通常为 Bluetooth LE Central)请求软件更新时,您可能希望保留一
些数据,例如绑定信息,系统振荡器的匹配值或您的应用程序的 FlexNVM 非易失数据。 本
文档指导您在执行 OTAP 更新时, 如何保留您感兴趣的闪存数据内容。 本文档适用于熟悉
OTAP 定制 Bluetooth LE 服务的开发人员,有关更多基础信息,您可以阅读以下文章: 使用
OTAP 客户端软件对 KW36 设备进行重新编程。
OTAP 标头和子元素
OTAP 协议为软件更新实现了一种格式,该格式由标题和定义数量的子元素组成。 OTAP 标
头描述了有关软件更新的一般信息,并且其定义的格式如下图所示。 有关标题字段的更多
信息,请转至 SDK 中的<SDK_2.2.X_FRDM-KW36_Download_Path> \ docs \ wireless \
Bluetooth 中的《 Bluetooth Low Energy Application Developer's Guide》文档的 11.4.1
Bluetooth Low Energy OTAP 标头一章。
每个子元素都包含用于特定目的的信息。 您可以为您的应用程序实现专有字段(有关子元
素字段的更多信息, 请转至 SDK 中的<SDK_2.2.X_FRDM-KW36_Download_Path> \ docs \
wireless \ Bluetooth 中的《 Bluetooth Low Energy Application Developer's Guide》文档的
11.4.1 Bluetooth Low Energy OTAP 标头一章。
OTAP 包含以下子元素:
镜像文件子元素 | 值字段长度(字节) | 描述 |
升级镜像 | 变化 | 该子元素包含实际的二进制可执行镜像,该镜像将被复制到 OTAP 客户端设备的闪存中。 该子元素的最 大大小取决于目标硬件。 |
扇区位图 | 32 | 该子元素包含目标设备闪存的扇区位图,该位图告诉引导加载程序哪些扇区应被覆盖,哪些扇区保持完 整。 该字段的格式是每个字节的最低有效位在前,最低有效字节和位代表闪存的最低存储部分。 |
镜像文件CRC |
2 | 是在镜像文件的所有元素(此字段本身除外)上计算的 16 位 CRC。 该元素必须是通过空中发送的镜像文件中的最后一个子元素。 |
KW36 闪存分为:
位图子元素的长度为 256 位,就 KW36 闪存而言,每个位代表 2KB 扇区,覆盖从 0x0-
0x0007_FFFF 的地址范围(P-Flash 到 FlexNVM 映射地址范围),其中 1 表示该扇区应 被擦
除, 0 表示应保留该扇区。 OTAP 引导加载程序使用位图字段来获取在使用软件更新对 KW36
进行编程之前应擦除的地址范围,因此必须在发送软件更新之前对其进行配置,以使包含您
的数据的内存的地址范围保持不变。仅擦除将被软件更新覆盖的地址范围。
例如:假设开发人员想要保留 0x7D800-0x7FFFF 之间的地址范围和 0x0-0x1FFF 之间的地址
范围,并且必须擦除剩余的存储器。 0x7D800-0x7FFFF 之间的地址范围对应于前 5 个闪存
扇区, 0x0-0x1FFF 之间的地址范围是最低的 4 个扇区。
因此,这意味着应将 256 和 252 之间的位(256、 255、 254、 253 和 252)以及 4 和 1 之间
的位(4、 3、 2 和 1)设置为 0,这样本示例的 OTAP 位图为 :
0x07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
使用 NXP 测试工具配置 OTAP 位图以保护地址范围
在 PC 上打开 NXP Test Tool 12 软件。 转到“ OTA 更新-> OTAP 蓝牙 LE”,然后单击“浏
览...”按钮加载用于软件更新的映像文件(NXP 测试工具仅接受.bin 和.srec 文件)。 您
可以配置 OTAP 位图,选择“覆盖扇区位图”复选框,并通过新的位图值更改默认值。 配
置位图后,选择“保存...”。
您可以将此文件与 Android 和 iOS 的 IoT Toolbox App 一起使用,以使用 OTAP 更新软
件。 这个新的.bleota 文件包含位图,该位图告诉 OTAP 引导加载程序哪些扇区将被擦
除,哪些扇区将被保留。