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.

[参考译文] CC3220:在平台复位时保持变量

Guru**** 2577385 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/739012/cc3220-maintain-variables-at-platform-reset

器件型号:CC3220

尊敬的 TI:

在运行期间、需要使用以下函数多次重新启动我的器件:

void Platform_Reset ()
{
#ifdef __MSP432P401R__
MAP_ResetCtl_initiateSoftReset ();
#Elif CC32XX
/*重置 MCU 以测试捆绑包*/
MAP_PRCMHibernateCycleTrigger ();
#endif
}

但是、我想在重新启动后保留某些变量的值。 有可能吗?

谢谢、

David  

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

    尊敬的 David:

    如果您希望通过 HIB API 重置 CC3220 SoC、则不会保留 RAM 的内容。 这意味着 RAM 中的变量不会被保留。 您可以选择:

    • 使用 HIB 的 SoC 复位。 在这种情况下、您需要将数据存储到其他位置、例如 sFlash 或连接到 CC3220的外部存储器芯片。  对于 sFlash、您需要注意写入周期的数量有限。
    • 仅使用 MCU 复位(通过 API PRCMMCUReset())。 此 API 不会重新启动完整的 SoC (例如 PHY)。 在这种情况下、使用全局未初始化变量来保留状态/数据是有意义的。

    1月

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

    MCU 复位(通过 API PRCMMCUReset())是否也会复位 NWP?

    我使用 cloud_ota 示例作为基础。 是否可以将该示例中的 MAP_PRCMHibernateCyclone 触发器替换为 PRCMMCUReset?

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

    我想您需要使用 HIB 调用 SoC 复位。

    我认为可能会通过寄存器 GPRCM_O_NWP_SOFT_RESET 重新启动 NWP、但我没有对此进行测试。

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

    休眠期间只有2个寄存器处于保留状态、但 RTC 也使用它们、因此如果您需要 RTC (例如设置关断超时)、则无法使用这些寄存器。
    上述寄存器仅用于 NWP 复位、不应直接使用(使用 SL_Stop+SL_Start 复位 NWP)。
    如果要保留 RAM 内容、请进入 LPDS;如果需要在休眠期间保留数据、请使用闪存文件系统。

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

    您好、Kobi、

    这对我的应用非常重要。  

    我想知道在 cloud_OTA 示例中、PRCMHibernateCyclleTrigger 是否可以替换为 LPDS ENTER-EXIT。

    您能否为 Platform_Reset()函数提供可保留变量的替换函数?

    非常感谢您的回答。

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、您能否建议您如何在闪存文件系统中创建、读取/写入变量?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:

    在功率测量应用中、您可以看到进入 LPDS 的示例。
    在云 OTA 中、需要重置 MCU (以便新映像开始运行)、因此您需要经历休眠周期。

    您可以将每个参数保存在文件中(即打开/创建文件、写入值、关闭文件、然后打开以进行读取或重新写入)、
    或者、您可以使用一个文件存储和管理多个参数(读取该文件、并在需要更新参数时重新编写)。
    第一种方法简单高效、但会浪费闪存(因为最小文件大小为4KB)。
    如果参数很少更新(但与常量更新无关)、则第2个参数很好。

    请注意、闪存的耐写次数约为100、000个写入周期、因此这两种方法都不能用于维持高频计数器。

    BR、
    Kobi