logo资料库

Z-Stack OTA Upgrade User's Guide(中文版).pdf

第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
资料共44页,剩余部分请下载后查看
1. 简介 本文档是德州仪器 Z-Stack ZigBee 平台的 Over the Air(OTA)升级集群开发指南。 1.1 怎么去阅读这篇文档 本文档有 3 个部分。 第一部分,OTA 概述,给出了 OTA 子系统的功能描述。 第二 部分,使用 OTA 示例应用程序,提供构建,安装和运行德州仪器 Z-Stack 附带的 Sample OTA 应用程序的分步说明。 第三部分,向应用程序添加客户端功能,提供 了配置 Z-Stack 应用程序以作为 OTA 客户端运行的分步说明。 1.2 定义,缩略语,首字母缩略词 Term Definition IEEE 802.15.4 IEEE 802.15.4 协议规定了面向低功耗,低数据速率应用的无 线个人局域网的物理和媒体接入层。 OTA Over the Air OTA Client 能够使用来自 OTA 服务器的 OTA 群集下载映像的设备。 OTA Server OTA 客户端可以通过 OTA 集群托管映像的设备。 个人区域网络 片上系统---处理器核心和无线电集成在同一设备上 PAN SoC 1.3 参考文献 [1] ZigBee Alliance Document 095264, ZigBee OTA Upgrade Cluster Specification. 2. OTA 概述 OTA 无线升级群集为无线升级 ZigBee 设备的固件提供了一种标准机制。在客户端和服务器 之间进行无线升级会话。 OTA 客户端下载 OTA 升级映像。 OTA 服务器托管 OTA 升级映 像。 德州仪器的 Z-Stack ZCL ZigBee 集群库为 OTA 升级集群的客户端和服务器操作提供支持。 OTA 升级群集的德州仪器 Z-Stack 实现包含以下组件: ⚫ OtaServer PC 应用程序 ⚫ OTA 映像转换器程序 ⚫ ZCL 实施 OTA 协议 ⚫ 受支持平台的引导加载程序 ⚫ 示例 OTA 应用程序
2.1 OTA 操作原理 本节简要介绍如何使用 OTA 升级群集来更新设备的固件。有关更多详细信息,请参阅 ZigBee 联盟文档 095264,ZigBee OTA 升级集群规范。 通过 OTA 升级群集进行通信时,使用以下简单消息图中显示的以下命令消息进行通信: 映像通知消息被单播发送或由 OTA 服务器广播以通知 OTA 客户端新映像可用。映像通知不 包含有关新映像的信息。映像通知仅表示新映像可用。OTA 客户端使用查询下一映像请求 和响应消息来确定这些新映像是否适用于它们。 定期地或在接收到映像通知消息之后,OTA 客户端向 OTA 服务器发送查询下一映像请求消 息。“查询下一映像请求”消息包含当前在客户端上运行的固件版本。收到查询下一映像请 求后,服务器决定是否应该发生映像更新以及客户端应更新到哪个映像。 服务器使用查询 下一映像响应消息来响应查询下一映像请求。 查询下一映像响应消息可以指示客户端下载新的固件,或者可以通知客户端没有固件可用。 如果下载发生,客户端控制下载。 在下载过程中,客户端将映像块请求消息发送到服务器, 并使用大块升级映像从服务器接收映像块响应消息。客户端将收到的映像块写入辅助存储位 置。 在 Z-Stack 示例应用程序中,这个辅助存储器可以是片上或片外闪存,具体取决于硬 件平台。 客户端下载完整的升级映像后,客户端将升级结束请求消息发送到服务器。 然后,服务器
以“升级结束响应”消息进行响应。升级结束响应消息包含有关客户端何时切换到新固件的 信息。客户端可能会立即切换到新的固件,或者可能会被指示等待一段指定的时间。 在 Z-Stack 示例应用程序中,当客户端切换到新映像时,客户端会写入一个非易失性 NV 内 存位置,指示新固件可用。 然后客户端重新启动。 客户端上的引导加载程序会看到新映像 可用。 然后引导加载程序将新映像从辅助存储器复制到操作内存空间。 然后启动新的固件。 在某些平台上,例如基于 Cortex-M3 的 CC2538,只需要启动管理器,因为 OTA 映像可以 就地运行。 2.2 OtaServer PC 工具 OtaServer PC 工具是德州仪器的 Z-Stack OTA 服务器示例应用程序的前端。 OtaServer PC 工具需要 Microsoft Windows XP 或更高版本以及 RS-232 串行端口。 OtaServer 通过 RS- 232 串行端口连接到运行 OTA Dongle 示例应用程序的 SmartRF05 或 SmartRF06(或者 SmartRF06 将使用 USB over UART)。 2.3 OTA 映像转换器 OTA Image Converter 工具将 IAR 简单二进制文件转换为 OTA 升级文件。 图像转换工具需 要 Microsoft Windows XP 或更新版本。 OTA Image Converter 是一个命令行工具。 2.3.1 OTA 升级映像文件格式 本节包含 OTA 升级映像文件格式的简单说明。 有关更多详细信息,请参阅 ZigBee 联盟文 档 095264,ZigBee OTA 升级集群规范。 OTA 更新映像文件分为以下几部分: ⚫ 映像标题 ⚫ 映像数据 ⚫ 证书 ⚫ 签名 映像标题包含有关映像的以下信息: ⚫ 标题版本 ⚫ 制造商 ID ⚫ 映像类型 ⚫ 文件版本 ⚫ 堆栈版本 ⚫ 标题字符串
⚫ 映像大小 ⚫ 安全证书 ⚫ 硬件版本 Image Data 包含 IAR 简单二进制文件中新固件的机器码。 签名和证书是可选的,并包含映 像的 MMO 哈希的 AES 加密副本和验证 OTA 映像完整性的证书。 2.3.2 生成 IAR 简单二进制文件 用作 OTA 映像转换器输入的 IAR 简单二进制文件由 IAR Embedded Workbench 生成。对于 ARM(Cortex-M3)定向项目,默认输出格式已适用于映像转换器实用程序,无需其他步骤。 对于 8051 目标项目,你可以生成一个简单的二进制文件,步骤如下所示: 1. 从 IAR Embedded Workbench 菜单中选择项目>options 。 2. 从选项对话框中的类别列表中选择 Linker。 3. 选择选项对话框中的 Extra Output 选项卡。 4. 选中 Generate extra output 文件复选框。 5. 从 Output format 下拉列表中,选择 simple-code。 6. 编译项目。 简单的二进制文件将位于<项目名称> / Exe / <项目名称> .bin 中。 2.3.3 OTA 映像转换器命令行参数 OTA Image Converter 的第一个参数是要转换的 IAR 简单文件。 以下参数是必需的: -m---映像制造商标识符 -t---映像类型标识符 -v---映像版本 以下参数是可选的: -p---硬件平台。有效的平台是: * CC2538 * CC2530DB -o---输出文件夹以放入映像 -s---用于签名映像的证书的位置。 请注意,对于 CC2538 目标,'-p'参数是必需的,否则映像将无法正确处理。 这是映像转换工具的示例命令行:
OtaConverter.exe SampleApp.bin –m0x1001 –t0x1234 –pCC2530DB 注意:可以在这里找到 OtaConverter.exe 程序:Projects \ tools \ OTA \ OtaConverter \ Release 2.3.3.1 映像制造商标识符(-m) 制造商标识符是一个 16 位十六进制数字,用于指定 OTA 升级映像的设备制造商。 制造商 ID 由 ZigBee 联盟分配给 ZigBee 设备制造商。 制造商标识符在 OTA Image Converter 的-m 命令行参数中指定。 2.3.3.2 映像类型标识符(-t) 类型标识符是一个 16 位十六进制数,用于指定 OTA 升级映像的设备类型。 类型 ID 是制造 商特定的,并且通常对应于正在升级的设备型号。 类型标识符在 OTA Image Converter 的 -t 命令行参数中指定。 2.3.3.3 映像版本(-v) Image Version 是一个 32 位十六进制数,用于指定 OTA 升级映像的版本。 映像版本在 OTA Image Converter 的-v 命令行参数中指定。 2.3.3.4 平台目标(-p) 映像的目标平台是使用-p 选项指定的。 默认平台是带有 CC2530EM 模块的 SmartRF05。 以下平台可以指定给 OTA Image Converter: cc2538 – SmartRF06 with an attached CC2538EM cc2530 – SmartRF05 with an attached CC2530EM 2.3.3.5 输出目录选项(-o) 输出目录是可选的。 它指定了映像在创建后将被放入的文件夹。这可以是 OtaServer PC 工 具使用的映像文件夹。 这是输出目录选项的一个例子: OtaConverter.exe app.bin –m0x1001 –t0x1234 –v0xABCD9876 –o”c:\Image Folder” 2.3.3.6 签名选项(-s) Signature 是可选的,但是对于使用 Smart Energy 1.1 规范规定的 OTA 集群的 ZigBee 智能 能源应用程序是必需的。 转换工具默认不使用签名。 证书的位置必须提供签名选项。 这 是签名选项的一个例子: OtaConverter.exe app.bin -m0x1001 -t0x1234 -v0xABCD9876 -s“c:\ cert.txt” 证书由 Certicom Inc.提供。样本证书作为 Z-Stack 分布的一部分提供在以下文件夹中: Projects \ zstack \ SE \ SampleApp \ Source \ OTA Cert。
2.4 OTA 升级集群的 Z-Stack 实现 zcl_ota.c zcl_ota.h ota_common.c ota_common.h ota_signature.c ota_signature.h 2.4.1 ZCL_OTA.C 和 ZCL_OTA.H zcl_ota.c 和 zcl_ota.h 文件包含以下内容: 格式化 OTA 升级群集消息 解析 OTA 升级群集消息 提供升级映像的逻辑 逻辑下载升级映像 值得注意的是,OTA 群集支持在与示例应用程序分离的终点上实例化。 这可以在 zcl_ota.c 中的简单描述符 zclOTA_SimpleDesc 和端点 zclOTA_Ep 全局变量的声明中观察到。 在这个 实现中,OTA 终点= ZCL_OTA_ENDPOINT(0xE)。 2.4.2 OTA_COMMON.C 和 OTA_COMMON.H ota_common.c 和 ota_common.h 文件包含 OTA 功能,例如解析 OTA 客户端和 OTA 服务器 应用程序,OtaServer PC 工具和 OTA 映像转换器使用的 OTA 标头。 2.4.3 OTA_SIGNATURE.C 和 OTA_SIGNATURE.H ota_signature.c 和 ota_signature.h 文件包含用于对 OTA 映像进行签名并使用 AES 加密 OTA 映像的 MMO 哈希来验证签名的代码。 2.4.4 hal_ota.c 和 hal_ota.h hal_ota.c 和 hal_ota.h 文件包含用于管理和操作 OTA 映像文件的平台相关函数,包括支持外 部和内部闪存等。 2.4.5 编译时间配置 OTA 固件可以使用以下编译时间定义进行配置: OTA_CLIENT = TRUE:包含 OTA 客户端功能。 OTA_SERVER = TRUE:包含 OTA 服务器功能。 OTA_MMO_SIGN = TRUE:添加图像签名处理。
OTA_HA:添加基于 HA 的 OTA 功能。 OTA_INITIAL_IMAGE:用于 CC2538。对于包含 OTA 引导加载程序和具有 OTA 客户端功能 的 ZigBee 应用程序的组合映像相关的细节。有关更多信息,请参阅第 3.2.2 节。 HAL_IMG_AREA = 0:用于 CC2538。指定图像 A 属性。 HAL_IMG_AREA = 1:用于 CC2538。指定图像 B 属性。 2.4.6 OTA 升级 API Z-Stack 实施 OTA 升级群集时,应用程序和 ZCL OTA 之间的交互很少。 Z-Stack 提供了一 个 OTA API 来通知应用有关 OTA 的开始和结束; 给予应用程序允许/禁止 OTA 操作的能力; 给应用程序发送映像通知的能力; 并让应用程序能够查询下一个升级群集的服务器。 2.4.6.1 OSAL 回拨事件 通过调用 zclOTA_Register 函数,可以向 OTA 注册一个应用程序任务以接收回调事件。 以 下事件被发送到已注册的应用程序任务: ZCL_OTA_START_CALLBACK ZCL_OTA_DL_COMPLETE_CALLBACK 事件作为 OSAL 消息发送,具有以下内容: typedef struct { osal_event_hdr_t hdr; uint8 ota_event; } zclOTA_CallbackMsg_t; 发 送 ZCL_OTA_START_CALLBACK 以 指 示 尝 试 开 始 下 载 的 成 功 或 失 败 。 ZCL_OTA_DL_COMPLETE_CALLBACK 在下载完成时发送,指示下载成功完成或未完成。 2.4.6.2 zclOTA_RequestNextUpdate 应用程序调用 zclOTA_RequestNextUpdate 函数来向 OTA 服务器发送 OTA 查询下一映像消 息。 发现服务器和确定何时查询服务器的方法由应用程序决定。 在 Z-Stack 示例应用程序中, 应用程序在 OTA 升级群集上执行匹配描述符请求以发现服务器。 应用程序然后在所有发现 的 服 务 器 上 调 用 zclOTA_RequestNextUpdate , 直 到 应 用 程 序 收 到 成 功 的 ZCL_OTA_START_CALLBACK 事件。 2.4.6.3 zclOTA_SendImageNotify 可以在 OTA 服务器上调用 zclOTA_SendImageNotify 函数来发送图像通知消息。
2.4.6.4 zclOTA_PermitOta 可以调用 zclOTA_PermitOta 函数来启用或禁用 OTA 升级。 当 OTA 被禁用时,OTA 客户端 忽略映像通知消息,并且 OTA 服务器不向查询下一映像请求消息发送图像可用响应。 2.4.7 OTA 客户端内存分区 当 OTA 客户端下载新的升级映像时,它必须将映像存储在辅助存储器中。 稍后,引导加载 程序将映像从辅助存储器复制到操作空间。 或者在 Cortex-M3 平台的情况下,引导管理器 只是将控制权交给新下载的映像。 Z-Stack 为以下平台提供了示例 OTA Client 和引导装载程序: CC2538 Cortex-M3 SoC 附带 CC2530EM 的 SmartRF05 以下各节介绍上述平台上的内存分区。 2.4.7.1 CC2538 Cortex-M3 SoC 在 CC2538 上,所下载的映像不会重新定位,而是“原位运行”,这是 Cortex-M3 的一项功 能。用于 CC2538 的 OTA 示例软件演示了如何在片上闪存中保存两个图像。 这些被称为 “映像 A”和“映像 B”。 为了达到这个目的,闪存的分配如下图所示。 请注意,包含非 OTA 存储器映射用于比较:
分享到:
收藏