Other Parts Discussed in Thread: AM68
器件型号: TDA4VE-Q1
Thread: AM68 中讨论的其他器件
工具/软件:
尊敬的专家:
我们要在 TDA4VE SDK9.2 上启用 spi7 作为从模式、如何获得它?
此致!
Hawayi
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.
Other Parts Discussed in Thread: AM68
器件型号: TDA4VE-Q1
Thread: AM68 中讨论的其他器件
工具/软件:
尊敬的专家:
我们要在 TDA4VE SDK9.2 上启用 spi7 作为从模式、如何获得它?
此致!
Hawayi
尊敬的客户:
下面是一个补丁、您可以启用 SPI DMA 模式。
关于 SPI7 和从模式、您可以相应地进行更改。 如有任何进一步的问题、请提供反馈。 谢谢。
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。
谢谢。
嗨、Hawayi、
请参考适用于 MCU SPI0 和主 SPI2 的 J722S 的常见问题解答: 【常见问题解答】J722SXH01EVM:如何在 J722SXH01EVM 的 40 引脚用户扩展头上启用 McSPI?
常见问题解答还包含一个应用手册链接、该应用手册详细介绍了 J721E。
请参考上面的内容、将 SPI7 添加到 TDA4VE 的器件树。
此致、
Tali、a
嗨、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 ={
嗨、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
您好 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
嗨、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
尊敬的 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、
到目前为止、我们发现了几个与 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
嗨、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、
绕回一些旧螺纹。 但是、如果这仍然是一个未解决的问题、您能否检查正在使用的内核中是否存在以下补丁? 如果没有、您是否可以尝试应用更改?
此致、
Takuma