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.

[参考译文] CC1352R:CC1352R 和 SDK 8.30、具有 FreeRTOS 和待机功耗策略。 唤醒计时器问题

Guru**** 2811715 points

Other Parts Discussed in Thread: CC1352R

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1601868/cc1352r-cc1352r-and-sdk-8-30-with-freertos-and-standby-power-policy-wake-up-timers-issue

器件型号: CC1352R

您好:

在 CC1352 (SimpleLink SDK 8.30) 上使用 FreeRTOS 无节拍空闲时、我在处理长睡眠/长计时器时遇到了问题。

环境中

  • 设备:CC1352R

  • SDK:simplelink_cc13xx_cc26xx_sdk_8_30_01_01

  • RTOS:FreeRTOS

  • 电源策略:PowerCC26XX_standbyPolicy

  • configUSE_Tickless_idle = 1

观察到的行为

  • 大约~30 分钟或更短的计时器会正确过期。

  • 大约~40 分钟或更长时间的计时器看起来永不过期。

  • 系统进入待机状态并保持的时间比预期长得多。

实际上、计时器会在几小时后到期、而不是在请求的超时之后到期。

根本原因分析
在 FreeRTOS 待机策略中、通过比较两个时域来选择下一个唤醒源:

  • ClockP 时间:节拍* ClockP_tickPeriod

  • FreeRTOS 空闲时间:ticksOS * freertos_TICKPERIOD_US

在 SDK 实现中、两次转换都是使用 32 位算术完成的。

当 ClockP 没有挂起的事件时,ClockP_getTicksUntilInterrupt () 返回一个非常大的值(≈3.2e9 ticks)。
将其乘以 ClockP_tickPeriod (10us) 会溢出 32 位算术并将该值截断至大约 38–39 分钟。

因此:

  • 比较不正确地选择了 ClockP 路径。

  • 但是、编程的超时使用原始 ClockP 节拍计数(~3.2e9 个周期)、对应于大约 9 小时。

  • 这就给人留下了这样一种印象:长时间计时器不会过期、而实际上它们的到期时间比预期的要晚得多。

我是如何解决的
我对 PowerCC26X2_freertos.c 应用了最小补丁:

  • 将 uint64_t 用于时间、时间 OS 和东部

  • 执行 64 位中的所有时间转换

  • 仅在对 ClockP_setTimeout () 进行编程时转换回 uint32_t

  • 在减去待机唤醒延迟时、应添加保护措施以避免下溢

更改后、40 分钟、1 小时及更长的计时器会正确过期。

问题

  • 使用 FreeRTOS 和待机功耗策略时、这是否是 SDK 中的已知问题? 还是我做错了?

  • TI 是否有官方修复方法或推荐修复方法?

  • TI 是否计划在未来的 SDK 版本中解决这些问题、或者本地补丁是否是预期的方法?

感谢你的帮助。

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

    您好:Marc、

    感谢您的报告、这看起来是我们的实施存在的一个实际问题、但未被发现。 我将把这个演示交给负责 SDK FreeRTOS 部分的人员。

    目前、您必须使用本地修补程序。 当我获得更多信息时、我会回来联系您。

    此致、

    Arthur

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

    您好:Marc、

    我们已经将修复合并到 SDK 中。 将在下一个版本中提供。

    此致、

    Arthur