Tool/software:
Hi Andreas,
Refer to this page which is enable DMA mode of main spi0.
After enabled, it works and the cpuload is reduced a lot.
But, I found the transmission rate is reduced after enabled spi DMA mode.
Below are the test logs:
PIO mode
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 mode
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
In PIO mode, the transmission rate increases as the clock frequency increases.
In DMA mode, the transmission rate exhibits a substantial increase as the clock rate approaches 1 MHz. And it's not stable.
Could you please help to check this phenomenon?
Thanks.
Tao