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.

[参考译文] CC3220S:下载 OTA 后平台重置不会发生#39;t。

Guru**** 2535750 points
Other Parts Discussed in Thread: CC3220S-LAUNCHXL

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/999171/cc3220s-platform-reset-doesn-t-happen-post-ota-download

器件型号:CC3220S

大家好、我已经在 CC3220S-LAUNCHXL 和 LAUNCHCC3220MODAS 上使用了 cloud_ota 示例、但成功使用新映像始终需要手动/硬件重启。

我已经尝试了 MAP_PRCMHibernateCycleTrigger ()和 Power_SHUTDOWN (0、SHUTDOWNTIME);正如 这篇文章中所建议的那样。 但两者都不起作用、因为它只是从这些函数返回、并假定平台不支持自复位。 sl_Stop/Start 不会强制使用新映像、但至少它不会尝试在无限循环中重新下载新映像、因此它主要起作用。  

是否还有其他需要启用的功能来支持自复位?

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

    您好!

    只是为了确保我不会错过任何内容-问题 在于您何时使用 TI Launchpad、对吧?  

    默认情况 下、应用程序使用 MAP_PRCMHibernateCyclone 触发器、它只起作用。  我们不熟悉相关问题。

    您使用的是哪些版本的 SDK 和 Service Pack?

     您之前是否测试过新映像(即、不是 OTA 更新的一部分)?

    BR、

    Kobi

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

    是的、目前在 TI Launchpad 上对其进行测试(simplelink_cc32xx_sdk_3_10_00_04 / sp_3.11.0.6_2.0.0.0_2.2.0.6.bin)。

    我将几乎相同的映像(cloud_ota 示例)刻录到 Launchpad 上、就像 OTA 一样。 OTA 映像上只有应用程序版本更高、以测试是否正在更新。 这就是我知道更新在硬件复位后工作的方式。

    更新:我错误地假设我对 cloud_ota 示例所做的一些更改与复位不相关。 我将其重新标记为原始示例、它确实起作用。 很抱歉出现了红色的鲱鱼。  

    是否有任何指针指示可能会阻止复位?

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

    可能会更改 syscfg (即电路板硬件配置)?  您进行了哪些更改?  

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

    您好、Kobi、

    这些更改非常涉及、因此我不希望您进行调试、但如果您有一些时间、请查看:

    https://github.com/b00m-in/cc3220s/

    电路板硬件配置应位于 REPO 中。 状态机转换表是 TI 提供的配置示例和云 OTA 示例的组合。 我尝试在 repo 中枚举自述文件中的差异。 除了在新映像启动之前需要硬件复位外、它似乎都可以正常工作。

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

    云 OTA 状态机已包含配置处理。

    我建议您逐步添加您的更改、并找出导致示例中断的原因。

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

    是的、很可能没有其他方法。 谢谢。

    另外,出于好奇,我在/source/ti/devices/cc32xx/driverlib/prcm.c 上查看了 PRCMHibernateCycletrigger()的实现

    // Request hibernate.
    PRCMHIBRegWrite((HIB3P3_BASE+HIB3P3_O_MEM_HIB_REQ),0x1);
    // Wait for system to enter hibernate
    __asm("    wfi\n");
    //Infinite loop
    while(1)
    {
      
    }
    
    
    

    我不清楚休眠请求失败时该函数如何返回。 当无法读取/写入其中一个寄存器时、它是否在较早的某个位置退出/返回?

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

    据我 所知、当您收到此代码时、它 将会进入休眠模式。 我不知道什么可以阻止它被写入寄存器。

    您是否看到堆栈等待系统进入休眠状态?

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

    是的、我看到了。 有其他文章抱怨此函数(PRCMHibernateCyclleTrigger)导致其应用程序挂起、这对我来说比我返回函数的情况更有意义! 总之、在调试时、我发现我自己的代码还有一些问题、因此我将继续进行调试、并在我到达代码底部时报告。 不会再浪费你的时间了-谢谢你们的指导。

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

    正如预期的那样、这是我的设置/代码问题。 在我的项目设置中甚至没有定义预定义符号 CC32XX、因此 PRCMHibernateCycletrigger()甚至没有被调用、我愚蠢地认为它正在返回! 再次对红色鲱鱼表示抱歉。

    #ifdef __MSP432P401R__
        ...
    #elif CC32XX
        PRCMHibernateCycleTrigger();
    #endif 

    这种情况以及其他一些错误,包括在复位后不调用 OtaCheckAndDoCommit()。 现在都按预期工作。 谢谢!