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.

[参考译文] TDA4VE-Q1:TaskP_WaitMsec ()/ClockP_usleep ()/appRtosTaskSleepInMsecs () 的提前返回

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1642759/tda4ve-q1-early-returns-from-taskp_waitmsec-clockp_usleep-apprtostasksleepinmsecs

器件型号: TDA4VE-Q1

这是针对最高 11.2 的所有 TI PSDK 版本中存在的问题的错误报告

PDK OSAL 提供 TaskP_WaitMsec() 函数。
MCU_PLUS_SDK 提供 ClockP_usleep () 函数。
app_utils 图层为这些应用程序提供包装器 appRthosTaskSleepInMsecs()。

可以预期、这些函数将在给定的延迟时间内延迟当前任务的执行。 可能会发生这种情况、任务稍后唤醒(如果此时有一个更高优先级的任务正在运行)。 但是、一个合理的预期是任务 不会提前唤醒

但是、 由于这些功能是如何实现的、情况并非如此。 在内部、它们映射到 FreeRTOS vTaskDelay ()/ SAFERTOS xTaskDelay () 调用、以延迟给定数量的 tick 的当前任务 — 但这会计算当前的 tick! 因此、如果在节拍间隔的中间调用 appRtosTaskSleepInMsecs(1)、它将在半毫秒内返回。 如果在周期间隔接近结束时调用相同的方法、它几乎可以立即返回。

如果在调用 appRthosTaskSleepInMsec() 之前和之后调用 appLogGetTimeInUse()、则可以轻松地观察到这种行为。 在空载系统上、两个时间戳之间的差异 始终小于 请求的睡眠时间。

这将中断在硬件通信代码中使用 appRtosTaskSleepInMsecs()、其中延迟很重要、如果未等待所需的延迟、则会中断硬件功能故障。  特别敏感的情况是,当需要数百微秒的延迟时,尝试使用 appRtosTaskSleepInSecs(1)-它确实会中断。

虽然这可以在应用程序代码中通过始终调用 appRtosTaskSleepInMsecs() 来实现每个应用程序逻辑所需的更大延迟、但这种解决方案看起来并不好。 PSDK 中的修复会更好。

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

    您好、Nikita、

    是的,你是正确的,PDK 中的 appRtosTaskSleepInMsecs() 使用 RTOS API 的延迟,这是根据节拍工作的。

    clockP_usleep () 实现忙时循环、以延迟毫秒延迟后出现的额外微秒延迟。  

    我理解使用 appRtosTaskSleepInMsecs () 实现精确毫秒时间延迟的问题,我将为此创建一个 JIRA。

    同时、如果您需要精确的计时要求、您可以使用任何基于计时器的延迟。

    此致、
    Gokul

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

    唤醒精度是节拍(这是预期的)、这是正常现象。
    在请求的延迟结束之前唤醒可能发生的情况是什么?

    换句话说,我认为  在将请求的延迟转换为节拍时, TaskP_WaitMsec() 和 ClockP_usleep() 都包含一个错误。 他们不会安排最接近节拍的唤醒(仍确保延迟不小于请求的延迟)、而是提前一周期请求唤醒。

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

    您好、Nikita、

    我创建了 JIRA、并附上内部跟踪 jira.itg.ti.com/.../PDK-20351 的链接

    我将在此基础上更新您的信息。

    此致、
    Gokul