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.

[参考译文] TDA4VEN-Q1:SPI 性能问题

Guru**** 2478775 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1455573/tda4ven-q1-spi-performance-issues

器件型号:TDA4VEN-Q1

工具与软件:

尊敬的 TI 专家:

HW Env:我们自己的 TDA4Ven 板

SW 编码:SDK10.0.5

我们发现当前 SPI 的 CPU 使用率非常高。 通过使用 perf 命令生成火焰图、我们发现 mcspi_wait_for-reg 位函数是影响函数的关键。

我根据 AM4377进行了一些修改:Linux SPI 性能-处理器论坛-处理器- TI E2E 支持论坛、使 CPU 使用率降低了30%。 但是、SPI 数据不准确、会导致帧丢失和数据验证失败。

     

我可以进行哪些修改来确保低 SPI CPU 使用率和准确的通信数据?

此致。

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

    您好!

    大部分团队成员都在度假。 请预计会延迟响应。

    此致、

    基尔西  

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

    尊敬的 Xie:

    如果数据仍然不正确、还请帮助尝试以下2种方法

    -1-

    添加函数

    udelay (xxx);

    良率();

    -2-

    -# define CPU_RELAX()屏障()
    +static inline void cpu_relax (void)
    +{
    + asm volatile ("产量"::"存储器");
    +}
    +

    此致

    Joe

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

    由于节假日、将从12月25日到1月2日推迟答复。 感谢您的耐心。

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

    您好、Joe。

    我们的项目要求是在20ms 内传输4K 字节的数据。 目前、我们发现在 mcspi_wait_for_reg_bit 函数中添加延迟可以解决 CPU 使用率过高的问题、但20ms 无法完成4K 字节数据的传输、从而导致数据丢失;如果不增加延迟、可以在20ms 内传输4K 数据、但 CPU 使用率非常高、这似乎是个矛盾。

    如何解决 SPI 驱动器中 CPU 使用率过高的问题?

    此致。

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

    Praveen、您好!

    这里有更新吗?

    此致。

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

    尊敬的 JC:

     中断模式没有帮助吗? 否则、我们应 使用 DMA 来传输4K 字节。  

    以下主题是否相关?  

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1456314/tda4ven-q1-how-to-enable-mcspi-slave-mode-dma/5589564#5589564

    此致、

    Brijesh

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

    您好、Brijesh:

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1455573/tda4ven-q1-spi-performance-issues/5589596 #5589596"]

    以下主题是否相关?  

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1456314/tda4ven-q1-how-to-enable-mcspi-slave-mode-dma/5589564#5589564

    [报价]

     是的、这两个线程是相关的。 主要目的是解决由 SPI 作为主控器件引起的 CPU 使用率过高的问题、并且了解 SPI 作为受控器件的一些执行、为将来的其它项目做好准备。

    此致。

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

    尊敬的 JC:

    我想我们在上一个版本中已在 SPI 中启用了 DMA 模式、但在 RTOS 驱动程序中启用了 DMA 模式、 我不确定 Linux 是否正常。 是否有可能为此使用 RTOS 驱动程序?  

    此致、

    Brijesh

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

    您好、Brijesh:

    方框图如下所示。 我认为使用 RTOS 驱动程序不会是我们所期望的解决方案。 SPI 数据最终需要提供给应用算法以在 A53上使用。

    使用 RTOS 驱动程序是否会导致额外的数据延迟(rh850---(SPI)--> RTOS 驱动程序--(IPC)--> A53)?

    此致。

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

    尊敬的 JC:

    好的、这是第一 个解决方案、因为我认为在上一个 SDK 版本中、RTOS 支持 DMA、并且 可以使用 IPC 将采集的数据传输到 A53。  

    我将检查是否 可以在 Linux 驱动程序中启用 DMA。  

    此致、

    Brijesh

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

    您好、Brijesh、

    SPI 的 CPU 使用率过高是否是已知问题? 因为我在其他平台(如 Xilinx SDK)上没有找到相同的问题。

    我希望您能找到在 Linux 驱动程序中启用 DMA 的方法。

    此致。

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

    您好!

    在 ts 中启用 DMA 的步骤在 https://www.ti.com/lit/an/sprad26/sprad26.pdf?DMA=1736229904830&ref_url=https%253A%252F%252Fwww.google.com%252F 中的应用手册中提供

    您能告诉我您正在使用哪个 SPI 实例、以便我可以建议更改吗?

    此致

    Tarun Mukesh

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

    尊敬的 Tarun Mukesh:

    [报价 userid="547969" url="~/support/processors-group/processors/f/processors-forum/1455573/tda4ven-q1-spi-performance-issues/5596383 #5596383"]在 ts 中启用 DMA 的步骤已在应用手册中提供(https://www.ti.com/lit/an/sprad26/sprad26.pdf?DMA=1736229904830&ref_url=https%253A%252F%252Fwww.google.com%252F)

    下面是一个相关的 主题、我根据 sprad26.pdf 和我当前面临的问题进行了一些修改。 该主题是 TDA4VEN-Q1:如何启用 mcspi 从模式和 DMA? -处理器论坛-处理器- TI E2E 支持论坛

    您能告诉我您正在使用哪个 SPI 实例、以便我可以建议更改吗?

    在 psdkla/linux/tools/spi 下修改并实现 SPI 实例、主要实现20ms 内传输和接收4K 字节的数据。

    此致。

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

    尊敬的 Xie:

    20ms 内的4K 需要32M 位/秒。 我在您的器件树中看到 SPI-max-frequency 为24MHz。 基于 TRM、McSPI 应配置为50MHz。 您是否可以尝试增大 SPI-max-Frequency 属性?

    此致、

    Takuma

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

    你好、Takuma、

    根据您的建议、我进行了以下修改、但 CPU 使用率未降低。

    此致。

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

    您好!

    我在 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1456314/tda4ven-q1-how-to-enable-mcspi-slave-mode-dma/5589944#5589944上共享了更新

    我们可以使用一个主题继续讨论吗? 在一个线程中、它被称为主 TDA4AEN、而在另一个线程中被称为从器件? 我们可以继续1个 E2E 主题吗?

    此致

    Tarun Mukesh

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

    尊敬的 Tarun Mukesh:

    在众多 TDA4项目中、SPI 驱动器用作主器件、SPI 用作从器件以及 DMA 的启用和禁用、所有这些都可满足客户的需求。 如果与 SPI 相关的线程太多而导致问题分析不集中、我建议优先解决 SPI CPU 使用率过高的问题、因为我不确定使用 SPI 作为从设备和启用 DMA 是否可以解决这个问题。

    此致。

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

    尊敬的 JC:

    使用 DMA 应该可以减少 CPU 负载。 由于您希望在20ms 内传输4K 字节、这意味着即使我们保持 FIFO 大小为32字节、也可能存在大约6.5K 中断、这 似乎过高。 相反、如果你可以使用 DMA、它可以大大减少中断 和 CPU 负载。  

    您能否尝试在 DTS 文件中进行建议的更改、以启用 DMA 并查看是否有帮助?  

    此致、

    Brijesh