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.

[参考译文] AM62A3-Q1:传输速率在启用 SPI DMA 模式后降低

Guru**** 2474700 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1462126/am62a3-q1-the-transmission-rate-is-reduced-after-enabled-spi-dma-mode

器件型号:AM62A3-Q1

工具与软件:

尊敬的  Andreas:

请参阅此页面、其中介绍如何启用 main spi0的 DMA 模式。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1461583/am62a3-q1-how-to-enable-main-spi0-dma-mode-on-am62ax

启用后、它可以正常运行、并且 cpuload 大幅减少。

但是、我发现 传输速率在启用 SPI DMA 模式后会降低。

以下是测试日志:

PIO 模式

root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 200000 -b 8 -S 256 -I 10000000
spi mode: 0x0
bits per word: 8
max speed: 200000 Hz (200 KHz)
rate: tx 186.0kbps, rx 186.0kbps
rate: tx 215.0kbps, rx 215.0kbps
rate: tx 214.6kbps, rx 214.6kbps
rate: tx 215.0kbps, rx 215.0kbps
rate: tx 215.4kbps, rx 215.4kbps
^C
root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 500000 -b 8 -S 256 -I 10000000
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
rate: tx 454.7kbps, rx 454.7kbps
rate: tx 519.8kbps, rx 519.8kbps
rate: tx 519.0kbps, rx 519.0kbps
rate: tx 519.4kbps, rx 519.4kbps
rate: tx 519.4kbps, rx 519.4kbps
^C
root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 900000 -b 8 -S 256 -I 10000000
spi mode: 0x0
bits per word: 8
max speed: 900000 Hz (900 KHz)
rate: tx 756.5kbps, rx 756.5kbps
rate: tx 869.6kbps, rx 869.6kbps
rate: tx 867.1kbps, rx 867.1kbps
rate: tx 860.2kbps, rx 860.2kbps
rate: tx 860.2kbps, rx 860.2kbps
^C
root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 960000 -b 8 -S 256 -I 10000000
spi mode: 0x0
bits per word: 8
max speed: 960000 Hz (960 KHz)
rate: tx 859.3kbps, rx 859.3kbps
rate: tx 921.6kbps, rx 921.6kbps
rate: tx 922.0kbps, rx 922.0kbps
rate: tx 922.4kbps, rx 922.4kbps
rate: tx 922.4kbps, rx 922.4kbps
^C

DMA 模式

root@am62axx-evm:/boot/dtb/ti# spidev_test -D /dev/spidev1.0 -s 200000 -b 8 -S 256 -I 10000000
spi mode: 0x0
bits per word: 8
max speed: 200000 Hz (200 KHz)
rate: tx 1.2kbps, rx 1.2kbps
rate: tx 2.9kbps, rx 2.9kbps
rate: tx 1.2kbps, rx 1.2kbps
rate: tx 1.2kbps, rx 1.2kbps
rate: tx 1.2kbps, rx 1.2kbps
^C
root@am62axx-evm:/boot/dtb/ti# spidev_test -D /dev/spidev1.0 -s 500000 -b 8 -S 256 -I 10000000
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
rate: tx 9.4kbps, rx 9.4kbps
rate: tx 2.5kbps, rx 2.5kbps
rate: tx 2.5kbps, rx 2.5kbps
rate: tx 2.5kbps, rx 2.5kbps
rate: tx 2.5kbps, rx 2.5kbps
^C
root@am62axx-evm:/boot/dtb/ti# spidev_test -D /dev/spidev1.0 -s 900000 -b 8 -S 256 -I 10000000
spi mode: 0x0
bits per word: 8
max speed: 900000 Hz (900 KHz)
rate: tx 26.2kbps, rx 26.2kbps
rate: tx 126.6kbps, rx 126.6kbps
rate: tx 4.9kbps, rx 4.9kbps
rate: tx 36.5kbps, rx 36.5kbps
rate: tx 45.5kbps, rx 45.5kbps
rate: tx 46.7kbps, rx 46.7kbps
^C
root@am62axx-evm:/boot/dtb/ti# spidev_test -D /dev/spidev1.0 -s 960000 -b 8 -S 256 -I 10000000
spi mode: 0x0
bits per word: 8
max speed: 960000 Hz (960 KHz)
rate: tx 326.9kbps, rx 326.9kbps
rate: tx 499.3kbps, rx 499.3kbps
rate: tx 501.4kbps, rx 501.4kbps
rate: tx 324.4kbps, rx 324.4kbps
rate: tx 670.1kbps, rx 670.1kbps
^C

PIO 模式下、传输速率随着时钟频率的增加而增加。

DMA 模式下随着时钟速率接近1 MHz、传输速率呈现出显著增加。  这并不理想。

您能帮助检查这个 现象吗?

谢谢。

TAO

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

    您好、Tao、

    这是一个有趣的观察结果。 由于我需要首先处理的其他优先事项、我可能在另外两周内无法更深入地对此进行调查、但我注意到有一件事。 通常、SPI 以更高的速度运行、例如5MHz、10MHz 或更高速度。 您是否可以将 SPI 时钟速度提高得多、看看这是否在 DMA 使用方面为您提供了更高的一致性?

    此致、Andreas

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

    尊敬的  Andreas:

     更高速度的测试结果。

    PIO 模式

    root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 5000000 -b 8 -S 256 -I 10000000
    spi mode: 0x0
    bits per word: 8
    max speed: 5000000 Hz (5000 KHz)
    rate: tx 2755.4kbps, rx 2755.4kbps
    rate: tx 3142.9kbps, rx 3142.9kbps
    rate: tx 3149.8kbps, rx 3149.8kbps
    rate: tx 3149.8kbps, rx 3149.8kbps
    rate: tx 3149.0kbps, rx 3149.0kbps
    rate: tx 3147.8kbps, rx 3147.8kbps
    ^C
    root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 10000000 -b 8 -S 256 -I 10000000
    spi mode: 0x0
    bits per word: 8
    max speed: 10000000 Hz (10000 KHz)
    rate: tx 4064.1kbps, rx 4064.1kbps
    rate: tx 4063.6kbps, rx 4063.6kbps
    rate: tx 4060.8kbps, rx 4060.8kbps
    rate: tx 4062.8kbps, rx 4062.8kbps
    rate: tx 4062.4kbps, rx 4062.4kbps
    ^C
    root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 20000000 -b 8 -S 256 -I 10000000
    spi mode: 0x0
    bits per word: 8
    max speed: 20000000 Hz (20000 KHz)
    rate: tx 4276.6kbps, rx 4276.6kbps
    rate: tx 4655.1kbps, rx 4655.1kbps
    rate: tx 4704.7kbps, rx 4704.7kbps
    rate: tx 4704.7kbps, rx 4704.7kbps
    rate: tx 4635.0kbps, rx 4635.0kbps

    DMA 模式

    root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 5000000 -b 8 -S 256 -I 10000000
    spi mode: 0x0
    bits per word: 8
    max speed: 5000000 Hz (5000 KHz)
    rate: tx 3967.0kbps, rx 3967.0kbps
    rate: tx 4652.2kbps, rx 4652.2kbps
    rate: tx 4649.4kbps, rx 4649.4kbps
    rate: tx 4613.3kbps, rx 4613.3kbps
    rate: tx 4649.0kbps, rx 4649.0kbps
    
    ^C
    root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 10000000 -b 8 -S 256 -I 10000000
    spi mode: 0x0
    bits per word: 8
    max speed: 10000000 Hz (10000 KHz)
    rate: tx 6665.4kbps, rx 6665.4kbps
    rate: tx 7959.3kbps, rx 7959.3kbps
    rate: tx 7963.9kbps, rx 7963.9kbps
    rate: tx 7902.4kbps, rx 7902.4kbps
    rate: tx 7978.6kbps, rx 7978.6kbps
    rate: tx 7979.4kbps, rx 7979.4kbps
    ^C
    root@am62axx-evm:~# spidev_test -D /dev/spidev1.0 -s 20000000 -b 8 -S 256 -I 10000000
    spi mode: 0x0
    bits per word: 8
    max speed: 20000000 Hz (20000 KHz)
    rate: tx 10409.6kbps, rx 10409.6kbps
    rate: tx 11072.3kbps, rx 11072.3kbps
    rate: tx 11090.7kbps, rx 11090.7kbps
    rate: tx 10986.7kbps, rx 10986.7kbps
    rate: tx 11068.2kbps, rx 11068.2kbps

    在高时钟频率下、DMA 模式似乎是有利的。

    谢谢

    TAO

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

    TAO、

    感谢额外的测试。

    您最初尝试以如此低的频率运行 SPI 主设备是否有任何原因? 您在与外部与什么 SPI 从器件通信?

    此外、如果您希望确保、使用逻辑分析器来确认实际的 SPI 波形可能会有所帮助;而不仅仅依赖于 spidev_test.c 工具生成的软件输出。

    此致、Andreas

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

    尊敬的  Andreas:

    您最初尝试以如此低的频率运行 SPI 主设备是否有任何原因? 您在与外部与什么 SPI 从器件通信?

    =>从器件是一个外部 PWC (电源控制器)、 不能处理高传输速率。 我们已评估出200kbps 是稳定的、任何更高的速率都不能保证。

    根据您的建议、我们将与普华永道进行实际测量、并将继续更新此处的进度。

    谢谢。

    TAO

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid="615537" url="~/support/processors-group/processors/f/processors-forum/1462126/am62a3-q1-the-transmission-rate-is-reduced-after-enabled-spi-dma-mode/5617702 #5617702">=>从设备是外部 PWC (电源控制器)、 无法处理高传输速率。 我们已评估出200kbps 是稳定的、而且任何更高的速率都不能保证。

    此外、如果您只喜欢200kbps、在非 DMA 模式下(您的原始 E2E 帖子)、 我很惊讶它会100%加载 CPU?? SPI 主器件传输默认为中断驱动、不会产生100%的 CPU 负载。 您能否使用 spidev_test.c 重新创建100% CPU 负载方案? 如果可以轻松地重新创建高 CPU 负载、我可以在下周设法找到一些时间来深入了解其背后的原因。

    此致、Andreas