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:如何在 spi7 上启用 SPI 和从模式?

Guru**** 2781645 points

Other Parts Discussed in Thread: AM68

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1567175/tda4ve-q1-how-to-enable-spi-and-slave-mode-on-spi7

器件型号: TDA4VE-Q1
Thread: AM68 中讨论的其他器件

工具/软件:

尊敬的专家:

我们要在 TDA4VE SDK9.2 上启用 spi7 作为从模式、如何获得它?

此致!

Hawayi

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

    尊敬的客户:  

       下面是一个补丁、您可以启用 SPI DMA 模式。

        /cfs-file/__key/communityserver-discussions-components-files/791/0361.0001_2D00_Test_5F00_spi_5F00_DMA.patch

      关于 SPI7 和从模式、您可以相应地进行更改。 如有任何进一步的问题、请提供反馈。 谢谢。

    Linjun

      

      

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

    您好、Linjun:

    主应用程序在 A72 端运行。 如果我们在 R5 内核上启用 SPI、那么我们还需要 IPC 通信来转发数据、这种方法的不切实际。 因此、我们需要启用 A72 侧的 SPI、以便与外部 MCU 进行通信、从而处理相关数据。

    此致!

    Hawayi

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

    您好、Keerthy、

      我们可以在 Linux OS 的 A72 上支持从 SPI DMA 模式吗?  谢谢。 Keerthy J 

    此致、

    Linjun

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

    3.2.2.17. SPI—适用于 J721s2 的 Processor SDK Linux 文档

    以下是 Linux 用户指南中的一个示例、但请帮助客户为 TDA4VE 和 Processor SDK Linux 9.2(目前为大规模生产基准)提供一个主 SPI 的正确 Dtso 配置为从模式。 特别是、当需要与 sysfw 保持一致时、我们无法在当前 TI 文档下找到适用于 SPI 的正确 UDMA TX 和 Rx psil-ID。  

    谢谢。   

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

    这是 SPI7 的引脚配置

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

    嗨、Hawayi、

    请参考适用于 MCU SPI0 和主 SPI2 的 J722S 的常见问题解答:  【常见问题解答】J722SXH01EVM:如何在 J722SXH01EVM 的 40 引脚用户扩展头上启用 McSPI? 

    常见问题解答还包含一个应用手册链接、该应用手册详细介绍了 J721E。  

    请参考上面的内容、将 SPI7 添加到 TDA4VE 的器件树。

    此致、

    Tali、a

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

    尊敬的  Tali、A:

    如何验证配置的 DMA 是否正常运行? 器件节点中会发生哪些变化? 在未连接外部器件的情况下在 SPI7 从模式下测试 spidev_test 应用程序时、应用程序无法退出并消耗超过 95%的 CPU 使用率。

    此致!

    Hawayi

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

    嗨、Hawayi、

    目前出差。 让我明天再回到您的身边。

    此致、

    Takuma

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

    嗨、Hawayi、

    我的理解是、为 McSPI 启用 DMA 需要 PSIL 线程。 J721S2/TDA4VE 没有适用于 McSPI 的 PSIL 线程、因此我认为 DMA 不是可以使用的: https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j721s2/psil_cfg.html

    但是、如果我错了、请务必联系本应用手册的作者: https://www.ti.com/lit/an/sprad26/sprad26.pdf?ts = 1758666511555&ref_url=https%253A%252F%252Fwww.google.com%252F

    此致、

    Takuma

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

    正在等待验证结果、谢谢。

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

    尊敬的  Tali、A:

    以下是我的修改、如果有任何错误、请帮助查看。 谢谢!

    索引:arch/arm64/boot/dts/ti/k3-j721s2-common-proc-board.dts
    ===================================================================
    --arch/arm64/boot/dts/ti/k3-j721s2-common-proc-board.dts(修订版 10713)
    ++ arch/arm64/boot/dts/ti/k3-j721s2-common-proc-board.dts(工作副本)
    @@–382、13 +383、19 @@
    };

    &main_spi7{
    + status=“okay";“;
    pinctrl-names =“default";“;
    pinctrl-0 =<&myspi1_pins_default>;
    - status=“okay";“;
    - spidev@0 {
    + SPI 从器件;
    +//ti、pindir-d0-out-d1-in;
    + DMA =<&MAIN_udmap 0xc600>、<&MAIN_udmap 0x4600>;
    + dma-names =“tx0",“,"rx0"、"rx0";“;</s>“
    +从器件@0{
    SPI-max-frequency =<24000000>;
    reg =<0>;
    -兼容=“cisco,spi-Petra";</s>“
    + compatible =“Rohm、dh2228fv“;
    };
    };

    索引:drivers/dma/ti/k3-psil-j721s2.c
    ===================================================================
    --drivers/dma/ti/k3-psil-j721s2.c(修订版 10713)
    ++ drivers/dma/ti/k3-psil-j721s2.c(工作副本)
    @@–248,6 +248,9 @@
    /* SA2UL */
    PSIL_SA2UL (0xf500、1)、
    PSIL_SA2UL (0xf501、1)、
    +
    +/* PDMA8 (PDMA_MISC_G0)- SPI0-1 */
    + PSIL_PDMA_XY_PKT (0xc600)、
    };

    struct psil_ep_map j721s2_ep_map ={

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

    尊敬的  Tali、A:

       是否有任何进展?

    此致!

    Hawayi

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

    嗨、Hawayi、

    已与应用手册作者核实。 如果没有 PSIL、则无法使用 DMA。 因此、在 J721S2 上不支持 DMA 模式 McSPI。

    此致、

    Takuma

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

    尊敬的 Takuma:

      SPI 从模式取决于 DMA、而 J721S2 由于缺少 PSIL 而无法支持 DMA、因此是否也不再支持 SPI 从模式?

    此致、

    Hawayi

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

    嗨、Hawayi、

    这是我的理解... 但这对我来说听起来很奇怪、那就是这种情况。  J721E 架构类似于 J721S2/TDA4VE 架构、我可以看到 k3-psil-j721e.c 对 RX 和 TX DMA 的 SPI 使用“Misc"PSIL 线“ 线程。

    J721S2 未在 k3-psil-j721s2.c 中为 TX 定义这些 PSIL 线程(尽管定义了 RX PSIL)。

    进一步查看我们的 TISCI 文档 (https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j721s2/psil_cfg.html)、J721S2 器件也应该存在 k3-psil-j721e.c 中的 MISC TX 线程

    所以您所做的应该是正确的...

    此致、

    Takuma

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

    否则、CPU 负载较大可能是由对 SPI_SYNC 的这种阻止调用引起的、并且已经设置了 DMA?

    下面是 SPI_SYNC 的说明、描述为“阻塞/同步 SPI 数据传输“

    在 spidev.c 中、我看到.write 的文件操作是 spidev_write、然后调用到->spidev_sync_write->spidev_sync->spi_sync。

    此致、

    Takuma

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

    尊敬的 Takuma:

    TDA4VE 的 SPI 实际上是否支持从模式?

    此致、

    Hawayi

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

    您好 Liu、

    应该支持。 几天前、我在您的查询中研究了这一点、有工程师在 AM68(TDA4VE 的工业型号)上的 Linux 上启用了 SPI 从器件:  关于 SK-AM68:启用 SPI 从模式和 spidev 

    此致、

    Takuma

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

    尊敬的 Takuma:

    我根据文档( https://www.ti.com/lit/an/sprad26/sprad26.pdf?ts = 1758666511555&ref_url=https%253A%252F%252Fwww.google.com%252F)测试了 spidev_test 应用程序、并且发现无论使用-p 还是-i 参数、当发送超过 159 个字节的数据时、它会挂起。 随附的是操作日志,供您参考 — 请帮助验证导致此问题的原因。 谢谢!

    此致、

    Hawayi

    e2e.ti.com/.../spi_5F00_debug.txt

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

    嗨、Hawayi、

    如果完成某种环回测试、看起来 RX 没有接收。

    您能否检查它在内核驱动程序中挂起的位置? 我怀疑它挂起在 spidev.c spidev_write 函数中、因为它执行 spidev_sync_write 、最终调用 spi.c 中的_spi_sync 函数、该函数会对 wait_for_completion 进行阻塞调用。

    您还可以通过查看源代码进行确认:

    过去、在使用与 TDA4VE 相同的驱动器和相同 McSPI 硬件的不同器件上、我在连接 TX 和 RX 时没有看到挂起问题:  关于 PROCESSOR-SDK-J722S:mcspi 从模式挂起?  

    此致、

    Takuma

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

    嗨、Takuma

    该问题可能与该链接(e2echina.ti.com/.../omap2-mcspi-dma)—could 中提到的问题类似、因为 DMA 无法正常工作?

    该宏定义了 DMA_MIN_Bytes = 160、这意味着当发送少于 160 个字节时、使用 OMAP2_mcspi_txrx_Pio (SPI、t) 可以正常工作。

    但是、当超过 160 字节时、OMAP2_mcspi_txrx_dma (SPI、t) 会出现问题

    此致、

    Hawayi

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

    嗨、Hawayi、

    您提出了一个好问题。 这确实与您发送的字节数的阈值相匹配。

    如果 增加 DMA_MIN_Bytes、您是否可以看到可以成功传输的字节数也会增加?

    此致、

    Takuma

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

    是的、没错。

    问题已解决、非常感谢!

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

    您好 Liu、

    很好地听到问题已解决。 如果您不介意、 我能否 获得有关如何修复该问题的详细信息以供将来参考?

    此致、

    Takuma

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

    尊敬的 Takuma:

    我将 dma id 更改为 0xc610 (TX)/0x4610 (Rx)、但内核显示仍有问题、如下所示、这是什么问题?

    [0.118136] ti-UDMA 31150000.dma-controller:通道:60 (tchan:30、rchan:30、gp-rflow:16)
    [ 1.550984] ti-UDMA 31150000.dma-controller:psi-L 配对失败:0x4610 -> 0x9005
    [ 1.623617] ti-UDMA 31150000.dma 控制器:获取 UDMA_OF_xlate 中的通道故障。

    此致、

    Hawayi

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

    嗨、Hawayi、

    对于较新的 SDK 版本、RTOS PDK 为所有外设定义了 PSIL 线程编号、并在 SDK ( https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j721s2/11_01_00_04/exports/docs/pdk_j721s2_11_01_00_17/docs/userguide/j721s2/faq/faq_udma_j721s2.html#udma-channels-and-psil-threads) 中提供了文档

    您是否可以尝试在上述文档中为 MAIN_MCSPI7 使用 PSIL 线程偏移? 需要使用此新线程编号更新 dts 和 k3-psil-j721s2.c。

    此致、

    Takuma

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

    尊敬的 Takuma:

    另一个问题:当 SOC 充当主器件时、每个字节之间大约有 2.3 微秒的间隔、如图所示。 导致此时间间隔的原因是什么? 如何将其删除?

    此致、

    Hawayi

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

    嗨、Hawayi、

    McSPI 接口是否用于传输大量数据块、例如使用-i 选项进行文件传输? 或者、它是否用于收集屏幕截图数据时的小频率事务?

    此致、

    Takuma

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

    它一次传输大约 2K 字节的大型数据块、我认为这是 DMA 通道传输的。

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

    嗨、Hawayi、

    好的。 我懂了。 我认为司机会拆分大笔转账。 因此、延迟是从 单个大型传输发生的拆分传输之间的间隔。

    我需要更深入地了解这种行为。 请预计一周左右的时间进行更新、但如果您希望进行临时更新、请随时 ping 通此主题。

    此致、

    Takuma

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

    您好、Takuma、

    到目前为止、我们发现了几个与 SPI 主模式相关的问题、总结如下:

    TDA4VE SPI 问题文档 ‌

    通信模式: ‌

    RH850 和 TDA4 之间的通信配置如下:
    通信速度:2Mbps
    TDA4 充当主器件、RH850 充当从器件
    每 20ms 间隔、两个器件同时发送 2KB 数据(全双工通信)

    问题 1:CPU 使用率高 ‌

    运行 SPI_TEST 软件会使 CPU 利用率很高(达到大约 37.4%)


    注意:SPI_TEST 由 spidev_test.c 生成、修改为以 20ms 的间隔传输 2KB 数据

    问题 2:低 SPI 效率 ‌

    使用 8 位传输模式会显示字节之间的 2.1μs 脉冲宽度间隔(16 位设置也会出现同样的问题)


    实际测量:2KB 数据传输大约需要 12ms


    打印输出结果


    逻辑分析仪捕获图

    问题 3:初始化期间 SPI 时钟异常 ‌

    在初始上电 SPI 初始化期间、观察到异常时钟行为
    预期:2K 连续时钟周期
    实际测量:2K 数据传输内出现不规则间隔(8ms、5ms 等)

    此致、

    Hawayi

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

    尊敬的  Takuma:

       是否有任何进展?

    此致!

    Hawayi

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

    嗨、Hawayi、

    正在寻求内部 SDK 团队的帮助。 这似乎需要进行更深入的调试。  

    但是、我发现、在较旧的 SDK 中、似乎有一个额外的 McSPI 器件配置已在此提交中针对较新的 SDK 删除: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/include/linux/platform_data/spi-omap2-mcspi.h?h=ti-linux-6.12.y&id=67bb37c05a6b56e0e1f804706145a52f655af3f1

    我无法使用逻辑分析仪进行测试、看看这是否会产生信号差异、但如果您已准备好设置、您是否能够测试这样是否可以缩短字节之间的时间?

    此致、

    Takuma

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

    嗨、Hawayi、

    最近提交了 McSPI 驱动程序、该驱动程序启用了“涡轮“模式、从而减少了字间隙: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.12.y-cicd&id=d445576c3b7f234acbdff168a5923f0f196dcfeb

    您是否可以尝试此修补程序以查看是否可以观察到性能改进?

    此致、

    Takuma

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

    嗨、Hawayi、

    绕回一些旧螺纹。 但是、如果这仍然是一个未解决的问题、您能否检查正在使用的内核中是否存在以下补丁? 如果没有、您是否可以尝试应用更改?

    e2e.ti.com/.../0001_2D00_spi_2D00_omap2_2D00_mcspi_2D00_Add_2D00_optional_2D00_FIFO_2D00_support_2D00_without_2D00_DM.patch

    此致、

    Takuma