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.

[参考译文] CC2745R10-Q1:SDK9.10 中的 FreeRTOS 无嘀嗒声空闲模式会使系统生效。

Guru**** 2420240 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1530905/cc2745r10-q1-freertos-tickless-idle-mode-in-sdk9-10-causes-an-assert

器件型号:CC2745R10-Q1
主题:SysConfig 中讨论的其他器件

工具/软件:

您好、

在以下环境中、“xTickCount+xTicksToJump"已“已超过“xNextTaskUnblockTime"并“并被声明。

\ti\simplelink_lowpower_f3_SDK_9_10_00_83\source\third_party\freertos\tasks.c (2581、10)

调用函数: vTaskStepTick ()

■环境

・simplelink_lowpower_f3_SDK_9_10_00_83

・SYSCONFIG_1.23.1

注意:SysConfig 的策略函数为 PowerCC27XX_standbyPolicy。

请您向我们介绍以下内容。

1.导致断言的因素

2.反措施

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

    您好:

    在 Cortex-M 芯片中使用无嘀嗒空闲时、需要考虑一些重要信息: 用于 ARM Cortex-M MCU 的低功耗 RTOS - FreeRTOS。 此外、您可能需要实现以下宏: https://freertos.org/Documentation/02-Kernel/02-Kernel-features/07-Lower-power-support#the-portsuppress_ticks_and_sleep-macro

    此问题可能是由此功能的配置不正确引起的。

    此致、

    Nima Behmanesh

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

    您好:

    是否可以在 Sysconfig1.23.1 中将 configUSE_Tickless_idle 设置为 1 以外的值?

    如果没有、请告诉我为什么推荐 1。

    目前、我已手动将 configUSE_Tickless_idle 更改为 2。

    此外、无论设置是 1 还是 2、都会发生置位。

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

    您好:

    我会询问我的同事、然后返回给您星期一。

    此致、

    Nima Behmanesh

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

    您好:

    这件事怎么样?

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

    您好:

    目前、我已手动将 configUSE_Tickless_idle 更改为 2。

    根据 FreeRTOS 文档、将其设置为两意味着您需要实现使用无节拍空闲时所需的功能。 将其设置为 1 将使用我们已实现的任何内容: https://freertos.org/Documentation/02-Kernel/02-Kernel-features/07-Lower-power-support#the-portsuppress_ticks_and_sleep-macro:

    通过在 FreeRTOSConfig.h 中将 configUSE_Tickless_idle 定义为 1(适用于支持此功能的端口)、可以启用内置无计时空闲功能。 通过在 FreeRTOSConfig.h 中将 configUSE_Tickless_idle 定义为 2、可以为任何 FreeRTOS 端口(包括包含内置实现的端口)提供用户定义的无 tickless IDLE 功能

    这意味着您必须实现  portSUPPRESS_TICKS_AND_SLEEP。 不过、这也取决于器件中的功率驱动器。  

    我建议将其保留为 1。 在我们的工程中、默认值也为 1。

    我最后无法重现此问题、因此我不能完全确定为什么会断言此问题。

    您使用的是定制板吗? 您对项目做了哪些修改?

    此致、

    Nima Behmanesh

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

    其他问题

    在我们的工程中、我们在 SysConfig 中将 Power_idleFunc() 设置为 FreeRTOS Idle Hook 函数。

    我们发现有问题的断言发生在 Power_idleFunc() 的路由中、该路由直接从 vApplicationIdleHook () 调用。

    如果 configUSE_Tickless_idle = 1、则还有一条从 vPortSuppressTicksAndSleep () 调用的 Power_idleFunc() 路由、
    这意味着 Power_idleFunc() 是从 prvIdleTask() 中的两个位置调用的。 这是个问题吗?

    如果 PowerCC27XX_standbyPolicy 设置为 Power - Policy 函数、那么 Power_idleFunc 不应该设置为 Idle Hook 函数吗?

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

    您好:

    如果 PowerCC27XX_standbyPolicy 设置为 Power - Policy 函数、不应该将 Power_idleFunc 设置为 Idle Hook 函数?

    在调用电源管理挂钩函数之前调用空闲挂钩函数。 因此、在您的情况下、如果您将电源管理功能设置为空闲挂钩并在电源策略中、则应在空闲函数期间以及之后调用它。  

    如果 configUSE_Tickless_idle = 1、则还有一条从 vPortSuppressTicksAndSleep () 调用的 Power_idleFunc() 路由、
    这意味着 Power_idleFunc() 是从 prvIdleTask() 中的两个位置调用的。 这是个问题吗?

    如果不进行测试,我不能说这会导致问题,但知道流:闲置挂钩->电源管理功能,我会说,避免重复相同的电源管理功能两次。

    任何电源相关功能(例如电源策略)都应进入 SysConfig 的电源部分:

    这样就不会有任何冗余的函数调用。

    希望这能有所帮助!

    此致、

    Nima Behmanesh。