工具与软件:
尊敬的 Andreas:
请参阅此页面、其中介绍如何启用 main spi0的 DMA 模式。
启用后、它可以正常运行、并且 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