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.

[参考译文] CC3235MODSF:LPDS -唤醒事件-发送信标/队列消息会导致 CPU 响应不灵敏

Guru**** 2556410 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/931451/cc3235modsf-lpds---wakeup-event---sending-semaphore-queue-message-results-in-nonresponsive-cpu

器件型号:CC3235MODSF

当我使用 Power_enablePolicy 激活 sleepPolicy 时、我最终得到一个无响应 CPU。 有两项任务。 Task_A 每隔1秒打印一条消息、在休眠中间、Task_B 正在等待一个信号量/队列(要么、两个都尝试、都不起作用)。

由于激活了睡眠模式、因此无法调试(就我所能告诉的内容而言)发生了什么情况。

当向电源回调添加信标指定或队列发送(设置唤醒事件)时、我可以看到我的另一个任务停止打印消息

使用 Power.h 中的示例进行即时消息传递 使用 FreeRTOS 和  simplelink_cc32xx_sdk_4_20_00_07

static int powerNotifyFxn (unsigned int eventType、uintptr_t eventArg、uintptr_t clientArg)
{
SEM_t*信号量 Handle =(SEM_t*) clientArg;

SEM_POST (信标 Handle);

返回(Power_NOTIFYDONE);
} 

SEM_INIT (SemaphoreHandle、0、0);

power_registerNotify (&powerNotifyObj、PowerCC32XX_awle_LPDS、powerNotifyFxn、(uintptr_t)&semaphoreHandle);

UART_PRINT ("thread started \r\n");

while (1)
{
SEM 等待(SemaphoreHandle);
UART_PRINT ("WAKEUP");
} 

是否有进一步缩小问题范围的想法?

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

    问题是由 MQ_send()引起的,它最终调用 带有 portMAX_DELAY 的 xQueueSend 来阻止所有内容。

    我认为我应该强烈考虑使用底层操作系统的 Nativ 众所周知的 API、而不是依赖并检查 POSIX 层的无缝代码。

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

    您好!

    感谢您回来并将解决方案发布到您的问题。 我们非常感谢您将您的知识分享回论坛、以便将来可能有类似问题的用户可以引用此信息。

    此致、

    Michael

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

    实际上、我认为我遇到了多个问题的组合。 上面和另一个原因是、我似乎无法使用与 LPDS 唤醒源关联的中断触发器(在进入和退出睡眠时、我将启用/禁用该触发器)配置 GPIO。

    是这样吗?

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

    此外、库中的某个位置必须存在错误、器件的2个连续闪存会导致对唤醒的不同处理。

    现在、我有一个示例应用、在该应用中、我在 GPIO 的低电平状态下唤醒。 第一次测试正常、我退出并重新进入调试(将应用刷写到内部闪存)。 器件不再对低电平状态做出反应。 而无需更改应用。 我确信我的新闪存程序从内部闪存运行、因为外部闪存中的应用程序根本不处理 LPDS (因此我可以通过简单的复位随时恢复到 LPDS)。

    在过去的两天里、我曾无数次尝试了解如何使用 LPDS、但我认为这与配置更改有关、而当我尝试找出 我更改了哪些错误并恢复了 LPDS 再次开始工作时、LPDS 没有 我更改的任何内容都将作为解释。