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.

[参考译文] CC3220SF-LAUNCHXL:将 OTA 添加到现有代码集

Guru**** 2573695 points
Other Parts Discussed in Thread: CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/899382/cc3220sf-launchxl-adding-ota-to-existing-code-set

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:CC3220SF

我有一个通过 AWS 成功使用 MQTT 的现有应用程序、现在需要安装 OTA 更新功能。 我已经阅读了 AWS 的"FreeRTOS 用户指南"、并设置了所有需要的 OTA 前提条件、S3存储桶、角色、策略和其他内容。 现在我要让固件了解 OTA -我一直在"将 OTA 代理集成到您的应用程序中"一节中。vRunOTAPUpdateDemo()方法在 FreeRTOS 中的其他地方具有大量依赖项,我看不到树的前身。 这种方法来自 AWS 演示应用程序、我可能可以尝试运行它、但这不会对我有所帮助、因为最后我需要启用现有应用程序以安装 OTA。

是否没有尝试演示除 OTA 之外的其他内容的已拆代码示例?  我可以看到 OTA 代理代码位于 Amazon-FreeRTOS/FreeRTOS_PLUS/AWS / OTA 中、但如何将其链接到我的应用程序、以便我可以呼叫它?  它有很多依赖项、需要在 Amazon - FreeRTOS 中进行编码。

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

    您好!

    您是否为您的应用使用适用于 AWS IoT 的插件? AWS IoT 插件基于 AWS C SDK、该 SDK 是一个与 Amazon-FreeRTOS 不同的框架。 这两个框架目前彼此不兼容、AWS C SDK 当前不支持 OTA。

    这是一个有关底层框架的问题、因此我认为最好在 AWS 论坛中提问。

    希望这有所帮助、
    Gerardo

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

    Joost、如果您正在寻找适用于 CC32xx 的更通用 OTA、请查看 http://www.ti.com/lit/an/swra510a/swra510a.pdf 应用报告、了解"CC3x20/CC3x35 SimpleLinkTmWi-FiRegistered和物联网无线更新"。  希望这对您有所帮助。  -Tom

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

    感谢 Tom、本文适用于一般背景、但不适用于 AWS 特定的 OTA。 我将对其进行读取。

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

    我使用的是 Amazon-FreeRTOS。 在此发行版中、是一个文件夹./libraries、其中包含 c_SDK 和 FreeRTOS_plus 子文件夹。 FreeRTOS_PLUS 文件夹依次包含(在其子文件夹结构中的某个位置) aws_IoT_agent 文件,其中包含 AWS 白皮书提到的 vRunOTAPUpdateDemo()中使用的 OTA_Agent()函数定义。

    现在、如果我可以拾取该 AWS IoT 代理文件集并将其复制、我们就可以完成了。 但是、正如我说过的、它完全与包含 c_SDK 文件夹在内的更高文件夹进行了交互。 充其量也很凌乱、但似乎人们正在让他们的应用程序 OTA 感知、所以我必须是虚拟应用程序。  我缺少什么?  包含几个引用和库链接? 什么?

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

    Gerardo、您好、我是 AWS 的 Richard Elberger。

    OTA 代理库位于中libraries\freertos_plus\aws\ota、具有以下依赖项:

    • 标准 C
    • FreeRTOS 内核
    • FreeRTOS 物联网 MQTT 库:OTA 代理库取决于分发版 MQTT 库、MQTT 库依赖于libraries\c_sdk\standard\mqtt以下内容:
    • 包含libraries\c_sdk\standard\common,日志记录的 C-SDK 公共库
    • 任务池串行器库、位于 libraries\c_sdk\standard\serializer
    • FreeRTOS OTA PAL 端口:TI CC3220SF 的 OTA PAL 端口位于vendors\ti\boards\cc3220_launchpad\ports\ota以下位置并具有相关属性:
    • cc32xx 库位于 ti/drivers/net/wifi/
    • Simplelink 库 ti/devices/cc32xx/driverlib


    如果您已经在未使用演示提供的网络管理器的情况下连接到 AWS IoT 代理、则可以重复使用连接来初始化 OTA 代理库。 然后、您还可以使用其中的简单代码来初始化和监视回调。

    xOTAConnectionCtx.pvControlClient = xConnection.xMqttConnection; 
    xOTAConnectionCtx.pxNetworkInterface =NULL
    xOTAConnectionCtx.pvNetworkCredentials =空;

    OTA_AgentInit(( void *)(&xOTAConnectionCtx )、( const uint8_t *)( clientCompletecredentialIOT the_name )、App_OtaCallback ( TickType_t )~0);

    while ((Estate = OTA_GetAgentState())!= eOTA_AgentState_Stopped)

    //等待 OTA 流量,但允许其他任务每秒只运行和输出统计信息一次。 *
    vTaskDelay (myappONE_second_delay_in_ticks);
    configPRINTF(“状态:%s 已接收:%u 已排队:%u 已处理:%u 已丢弃:%u\r\n\r\n”,pcStateStr[资产],
    OTA_GetPacketsReceents()、OTA_GetPacketsQueued()、OTA_GetPacketsProcessed()、OTA_GetPacketsDroated()));


    同样,也包括 App_OTACompleteCallback相关定义的实施。

    静态空 App_OTACompleteCallback( ota_JobEvent_t eEvent ) 

    ota_Err_t xErr = Kota Err_uninitialized;

    define _ota_method_name ("App_OtaCompleteCallback");

    /* OTA 作业已完成。 删除 MQTT 和网络连接。 *
    if (eEvent == eOTA_JobEvent_Activate)

    configPRINTF ((“从 OTA 代理接收到的 eOTA_JobEvent_Activate 回调。\r\n\r\n);
    IotMqt_Disconnect (xConnection.xMqttConnection,0);
    #if defined (CONFIG_OTA_UPDATE_DEMO_ENABLED)
    vMqttDemoDeleteNetworkConnection(&xConnection );
    #endif
    OTA_ActivateNewImage();

    否则 if (eEvent =eOTA_JobEvent_FAIL)

    configPRINTF ((“从 OTA 代理接收到的 eOTA_JobEvent_FAIL 回调。\r\n\r\n);
    /*没有什么特别的事可做。 OTA 代理会对其进行处理。 *

    否则 if (eEvent =eOTA_JobEvent_StartTest)

    //此演示仅接受图像,因为它是一个良好的 OTA 更新和网络
    *服务都在运行(或者我们不会这么做)。 如果是这样
    *是一些定制设备、希望在调用"确定"之前测试其他内容、
    *在调用 OTA_SetImageState()之前,这里是开始这些测试的地方
    *最终结果为已接受或已拒绝。 *
    configPRINTF ((“从 OTA 代理接收到的 eOTA_JobEvent_StartTest 回调。\r\n\r\n);
    xErr = OTA_SetImageState (eOTA_ImageState_Accepted);

    if (xErr!= Kota_Err_None)

    OTA_LOG_L1 ("错误! 无法将图像状态设置为已接受。\r\n\r\n );