This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2538:OTA 更新失败

Guru**** 633810 points
Other Parts Discussed in Thread: CC2538, Z-STACK, CC2652R
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1164014/cc2538-ota-update-fails

器件型号:CC2538
Thread 中讨论的其他器件: Z-stackCC2652R

您好!

我想从我的协调器对 Heiman 设备(它使用 NXP 芯片)执行 OTA 更新。 Heiman 为我提供了一个更新文件、该文件以.ota 结尾、并告诉我将其重命名为.ZigBee。 OtaServer 应用程序可正确识别文件及其属性。 但是、当我尝试初始化更新时、它有时会发送一个块、而其他块则不发送任何内容、我会得到一个指示失败的默认响应。

我联系了 Heiman、告诉我他们尝试了更新、它可以正常工作、也可以 与其他客户一起工作。 我尝试使用两个不同的芯片(cc2538和 cc2652r1)和两个 zstacks (1.2和3)进行更新、但它仅不适用于 Heiman 传感器(TI 系列中其他器件的其他更新按预期工作)。 他们向我发送了一个嗅探器文件、以查看我是否做了一些错误、我还向他们发送了我的文件来进行比较。

他们做了以下笔记:

以下是两 个监听器文件 (我的 NWKKey 为: 5ccab957319e97c86f36ad76fe86c2a2)

在 Heiman 文件中、OTA 过程从数据包47.949开始

有人能帮我弄清楚为什么它不起作用吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Panagiotis、您好!

    CC2538 OTA 软件狗/服务器实现方案在  zclota_ProcessImageBlockReq -> zclota_SRV_ImageBlockReq -> zclota_SendImageBlockRsp -> zcl_SendImageBlockCommand 中使用其自己的 zclota_SeqNo 、它从零递增。  您可以尝试对其进行修改、以便它使用从  zclOTA_ProcessImageBlockReq 开始的 zclInforing_t HRD.transSeqNum。  我希望 CC26X2R1 OTA 服务器的运行方式与所示不同、因为它确实会从传入的映像块请求传递现有的 transSeqNum。    在寻址 类似的 E2E 线程后、在 SimpleLink CC13X2/CC26X2 SDK v4.10中修改了此代码(如 Z-Stack 发行说明修复了问题 ZigBee-683中所示)。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我修改了它、但它仍然不起作用。 我将原因追溯到 zclota_ServerHandleFileSysCb。 它不会输入此情况

    #if (defined OTA_SERVER) && (OTA_SERVER == TRUE)
            case MT_SYS_OTA_MSG:
              zclOTA_ServerHandleFileSysCb ( ( OTA_MtMsg_t* ) MSGpkt );
              break;
    #endif

    它会使 zclOTA_SRV_ImageBlockReq 返回 ZCL_STATUS_NO_IMAGE_Available。

    是什么原因导致了这种情况?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不理解您对  zclOTA_ServerHandleFileSysCb 的评论、因为服务器应用程序应该能够输入此函数、我建议您在该位置进行进一步调试。  但是、如果 zclOTA_SRV_ImageBlockReq  与 ZCL_STATUS_NO_IMAGE_Available 一同退出、则这表示现有 应用程序和候选映像之间的 FileID.version 设置不兼容。  您是否在 OtaServer 的“选项”菜单中选择了“版本检查映像文件”。  如果候选版本不高于器件上已存储的版本、则会拒绝 OAD 更新。  您可以进一步检查 Z-Stack 用户指南的 OTA 升级部分、并比较.ZigBee 输出文件内容、以确保 Zigbee 格式的二进制文件具有兼容的 Zigbee OTA 头、这是 OtaServer 桌面应用所期望的。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用 cc2652r 时,更新开始时选择了“版本检查映像文件”,但使用 cc2538时,更新会显示 ZCL_STATUS_NO_IMAGE_Available  

    当 queryResponse.FileID.version 应该为0x17时、其值为0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SimpleLink CC26X2R 和传统 CC253X OTA 服务器项目代码库已存在多年的差异。  您可以对它们进行比较、以确定应用程序执行中的关键差异。

    queryResponse.FileID.version 由 主机提供的*。ZigBee 文件头信息填充、表示格式可能不正确。

    此致、
    Ryan