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.

[参考译文] AWRL6432:带电源测试的硬故障示例

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1524494/awrl6432-hard-fault-with-power-test-example

器件型号:AWRL6432

工具/软件:

您好、

客户尝试修改电源测试、使用 Power_idleFunc 进入深度睡眠模式(如运动演示)、但无法从深度睡眠模式持续唤醒。

#define SLEEP_TIME_TICKS (1000)

我尝试了类似的修改、发现器件已从深度睡眠模式唤醒、但在第二次唤醒后进入硬故障。 请在下面找到快照。

请在 e2e.ti.com/.../power_5F00_modes_5F00_xwrL64xx_2D00_evm_5F00_m4fss0_2D00_0_5F00_freertos_5F00_ti_2D00_arm_2D00_clang.7z 上找到我的修改代码

您可以帮助检查遗漏的内容吗?

我尝试在 Power_disablePolicy ()之前添加一个 while 循环(只是从 DEEP SLEEP 模式唤醒)、并连接 CCS 将 LOOP 的值从1更改为0、然后代码可以多次进入 DEEP SLEEP 模式。

我还尝试在默认功率测试代码中仅修复 SEL=1 (添加行121)和注释119行(无其他更改)、但也发现了硬故障。  

 Power_enablePolicy ()/xSemaphoreTake (gPowerSem、sleep_time_ticks)/Power_idleFunc 之间是否存在任何时序关系?

为什么调用  xSemaphoreTake (gPowerSem、sleep_time_ticks)可以进入 DEEPSLEEP 模式? 它如何调用 vPortSuppressTicksAndSleep?

为什么在运动和存在检测演示中、它会在 xSemaphoreTake (gPowerSem、portMAX_DELAY)中设置长延迟、并使用 Power_idleFunc 来进入深度睡眠模式 、但不直接使用 xSemaphoreTake (gPowerSem、SLEEP_time_ticks)?

谢谢、

Chris

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

    您好、

    将 UART 从中断模式更改为轮询模式可解决该问题。 我检查了 运动和存在检测演示、发现它也使用 UART 极点模式。 您是否会建议 UART 中断模式会导致硬故障?

    您是否仍可以帮助我解决以下问题?

    为什么调用  xSemaphoreTake (gPowerSem、sleep_time_ticks)可以进入 DEEPSLEEP 模式? 它如何调用 vPortSuppressTicksAndSleep?

    为什么在运动和存在检测演示中、它会在 xSemaphoreTake (gPowerSem、portMAX_DELAY)中设置长延迟、并使用 Power_idleFunc 来进入深度睡眠模式 、但不直接使用 xSemaphoreTake (gPowerSem、SLEEP_time_ticks)? 重复使用 gPowerSem 以取消阻止电源任务过程?

    谢谢、

    Chris

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

    嗨、Chris、

    感谢您就这个问题提出意见。 我需要更多时间来了解导致此问题的原因、但我有一个建议和几个快速备注。

    根据我的建议、他们是否尝试过在发布模式下刷写并运行此修改后的示例?

    feie feie 说:
     Power_enablePolicy ()/xSemaphoreTake (gPowerSem、SLEEP_time_ticks)/Power_idleFunc 之间是否存在任何时序关系?

    power_enablePolicy 应在 xSemaphoreTake 或 Power_idleFunc 之前调用、因为只有在事先启用了策略的情况下、这些策略才会调用电源策略函数。 否则、就没有其他已知的时序限制。

    feie feie 说:
    为什么调用  xSemaphoreTake (gPowerSem、sleep_time_ticks)可以进入 DEEPSLEEP 模式? 它如何调用 vPortSuppressTicksAndSleep?

    通过调用 xSemaphoreTake、这会 将电源任务有效地置于待机状态、直到给出 gPowerSem 信标或直到阻塞时间  SLEEP_TIME_TICKS 到期。 由于没有其他任务可处理、任务调度程序默认为等待信标阻塞时间结束、在此期间、调度程序 会暂停自身并调用 vPortSuppressTicksAndSleep。

    feie feie 说:
    为什么在运动和存在检测演示中它会设置 xSemaphoreTake (gPowerSem、portMAX_DELAY)的长延迟、并使用 Power_idleFunc 进入深度睡眠模式 、但不直接使用 xSemaphoreTake (gPowerSem、SLEEP_TIME_ticks)?

    如上所述、电源示例可以使用 xSemaphoreTake 进入空闲状态、因为没有其他任务要处理。 对于 MPD、有多个其他任务正在之间切换、以防止暂停、并且 gPowerSem 信标实际上用于正确计时 UART 任务和电源任务之间的传递。

    此致、

    Kristien