KW36-创建保留存储器内容的OTAP镜像
简介
当OTAP客户端(接收软件更新的设备,通常为Bluetooth LEPeripheral)从OTAP服务器(发送软件更新的设备,通常为Bluetooth LE Central)请求软件更新时,用户可能希望保留以前获取的一些数据,例如绑定信息,系统振荡器的调整值或者应用程序的NVM数据。 本文档将介绍在执行OTAP更新时,保留需要的指定数据内容。 本文档适用于熟悉OTAP自定义Bluetooth LE服务的开发人员。相关更多信息,可以阅读以下文章:使用OTAP客户端软件对KW36设备进行重新编程。
OTAP Header和子元素
OTAP协议为软件更新实现了一种数据格式,该格式由Header和指定数量的子元素组成。 OTAP Header描述了关于软件更新的普通信息,其格式定义如下图所示。 有关Header字段的更多信息,请转至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 Header一章。
每个子元素都包含用于特定目的的信息。 用户可以为其应用程序实现专有字段(有关子元素字段的更多信息,请转至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 Header一章。
OTAP包含以下子元素:
镜像文件子元素 |
值字段长度 (字节) |
描述 |
升级镜像 |
n |
该子元素包含实际的二进制可执行镜像,该镜像已复制到OTAP客户端设备的闪存中。 该子元素的最大字节长度取决于目标硬件。 |
扇区位图 |
32 |
该子元素包含目标设备闪存的扇区位图,该位图告诉引导加载程序哪些扇区应被覆盖,哪些扇区保持完整。 该字段的格式是首先使用每个字节的最低有效位,且最低有效字节和位代表闪存的最低存储扇区。 |
镜像文件CRC |
2 |
这是在镜像文件的所有元素(此字段本身除外)上计算的16位CRC。 该元素必须是通过空中发送的镜像文件中的最后一个子元素。 |
OTAP扇区位图子元素字段
KW36闪存分为:
位图子元素的长度为256位,就KW36闪存而言,每个位代表2KB扇区,覆盖从0x0-0x0007_FFFF的地址范围(P-Flash到FlexNVM Alias地址范围),其中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位图以保护指定地址范围的数据