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.

[参考译文] AM62L-UDMA EVSE-DEV-EVM:dmaengine:TI:k3-UDMA:1 秒轮询延迟

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1648054/am62l-evse-dev-evm-dmaengine-ti-k3-udma-1-second-polling-delay

器件型号: AM62L-AM62L- EVSE-DEV-EVM

您好、

我在 AM62P5-SK-EVM 上运行 ti-linux-kernel 版本 6.18.15。 我运行了 K3-UDMA 和 SPI-OMAP2-mcspi。 我对非板载 STM32 运行 20MHz SPI。 我偶尔会在 SPI 帧的传输中看到 1 秒延迟。 我已经跟踪此函数导致的延迟:

void UDMA_CHECK_TX_Completion(结构 WORK_STRUCT *work);
在文件:k3-UDMA-common.c 中
具体来说、在代码的这一重试部分中、如果 mcspi 对等器件没有足够快地将数据读取到其 FIFO 中、则会调用该部分:

                /*没有进展、1 秒后再次检查 */
                schedule_delayed_work (&uC->tx_d漏.work、Hz);

我看到了在线讨论、我想 TI 知道这一点、但不想将此等待时间更改为更短的时间或以这些在线讨论建议的另一种方式检测 DMA 完成。:
https://lkml.org/lkml/2022/8/22/299
https://lkml.org/lkml/2025/7/31/950

我正处于需要通过我们产品的内核更新解决此问题的情况、并寻求您的建议。

我想知道:
1.为什么 TI 没有就此采取行动?
2.现在我想简单地将 1 秒的轮询大拉缩短到几毫秒。 您是否看到与此相关的任何问题?

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

    您好、Olle:

    通常、ti-linux-kernel 遵循开源开发模型、任何上游网络更新(在本例中为 v6.18 存储库)都会定期拉入、并且 TI 开发团队实施的任何补丁都将在适用时首先发送到内核上游、然后也应用于 ti-linux-kernel。

    关于上面链接的 lkml.org 中的两个补丁集、我看到第一个链接中的补丁 1/2 已经在 ti-linux-kernel 中。

    [补丁 1/2] dmaengine:TI:k3-UDMA:如果未请求 DMA_PREP_INTERRUPT—Linux SPI、则响应 TX 完成

    但这组中的修补程序 2/2 不在中、甚至不在上游内核中。

    [补丁 2/2] SPI:SPI-OMAP2-mcspi:启用 DMA 时使用 EOW 中断完成—Linux SPI

    我想知道这是否是因为它的内核测试机器人注释没有得到解决。

    Re:[补丁 2/2] SPI:SPI-OMAP2-mcspi:启用 DMA 时使用 EOW 中断完成—Linux SPI

    第二个链接中的补丁不在上游内核中、因此也不会是 ti-linux-kernel。

    但是、第一组中的补丁 2/2 位于 ti-linux-kernel v6.1 分支中、但它不在任何较新的内核分支中。 我想知道它被丢弃只是因为上游内核没有采用这个补丁。 我正在与我们的软件开发团队核实是否有任何见解。

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

    嗨 Bin!
    感谢您对此进行研究。 似乎增补程序 2/2 否定了我认为是因为一个原因而放在那里的对等会计。 因此我建议仅缩短此处的超时时间:

                    /*没有进展、1 秒后再次检查 */
                    schedule_delayed_work(&uC->tx_d漏.work,此处!!)

    其余部分保持原样。 如果您也能询问开发团队、我将不胜感激。 在我的案例中、我甚至可以考虑查看 DMA 通道来识别 McSPI 的使用情况、如果开发团队发现所有 DMA 用户使用的通用解决方案存在问题、则只能缩短 SPI 流量的时间。

    谢谢 agan。

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

    您好、Olle:

    上述补丁 2/2(应用于 spi-OMAP2-mcspi 驱动程序)实际上也在 ti-linux-kernel 6.1.y 分支和 SDK9.x 版本中。 但它不在任何新内核(分支 6.{6,12,18}.y)中。 我已经与我们的软件开发团队讨论过这个问题、他们决定将此补丁应用到 ti-linux-kernel 6.18.y 中 因此、我想您现在可以将补丁 2/2 放入您的项目中、以解决 mcspi 延迟问题。

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

    您发布的链接已失效。 在哪里可以找到该补丁?

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

    SPI:spi-OMAP2-mcspi:启用 DMA 时使用 EOW 中断完成 — ti-linux-kernel/ti-linux-kernel — 此存储库包含一个已集成到突出显示的 Linux 内核

    这是 ti-linux-kernel 6.1.y 分支中的内容。

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

    将此文件替换为 SDK12.0、无法成功构建。  

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

    这话什么意思?

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

    Olle,  

    我也想尝试此补丁、因为无法将其应用于 SDK12.0、所以直接替换文件、但生成返回错误。

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

    您好、

    好的、我看到了。 看起来 TI DMA 子系统已经被重构。 这就是为什么我只对 6.12 应用了补丁。 TI 已承诺将此补丁引入 6.18。 我不知道什么时候。  

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

    SDK 12.1 开发周期已完成。 补丁 2/2 应该位于 SDK 12.2 中。