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.

[参考译文] CC1352P:如何从代码内可靠地重新启动系统?

Guru**** 2391415 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1337618/cc1352p-how-to-reliably-restart-system-from-within-code

器件型号:CC1352P

您好!

我们一直在尝试通过调用以下函数来重新启动系统:

SysCtrlSystemReset();

这似乎无法可靠地工作、有时系统会挂起/不响应数秒、有时几分钟甚至似乎永远不响应。

不确定是否相关、但在一些 NVS 相关操作之后会立即调用此函数、主要是删除/清除某些 NVS 项目。 我们是否应该在 NVS 操作和系统重置之间添加一些延迟?

是否有其他方法可以重新启动系统?

谢谢。

ZL

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

    删除闪存可能需要很长时间、尤其是在多个周期之后。 在尝试运行系统复位之前、您需要确保闪存操作已完成。   

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

    您好!

    感谢您回答我的问题。 您能否进一步说明是否有办法知道 NVS 删除/清零何时完成? 我简单介绍了驱动程序代码、看不到我们可以通过任何方式向 NVS 驱动程序提供回调以在完成闪存相关操作时获得通知、或者轮询某个标签。

    我假设我们可以添加任意延迟、例如擦除所有 NVS 扇区所需的最长时间、但这样效率会很低、并且可能会随着周期的推移而花费越来越长的时间。

    此致!

    ZL

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

    您好、Zhiyong、

    在调用复位之前,你似乎可以使用 NVS_LOCK_WAIT_FOREVER 参数的 NVS_LOCKE()命令。  

    其作用是等待有效的 NVS 操作完成、并锁定 NVS 驱动程序以访问闪存。 运行它之后、您可以安全地对器件进行复位。

    此致、

    SID