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.
I'm doing SW development on an AM335x based development board (BeagleBone Black). The AM335x in addition to doing some on-board processing does the following:
- Retrieve high throughput data over SPI (McSPI 1)
- Output some datastreams as I2S (over McASP)
- Act as a TCP server over ethernet.
A rudimentary form of this was achieved using the deprecated StarterWare SDK. The lack of multi-threading, online support and documentation was affecting achievable performance and warrants a shift towards another SDK.
Since I'm new to embedded Linux development, I have a few noob queries related to implementing SPI communication using the Proccessor-SDK-Linux (RT).
For my usecase, the AM335X acts as an SPI master and needs to retrieve a few thousand samples ( b/w 1024 and 4096 samples, 32-bit wide) every 250 ms. The SPI slave has on-board buffers so the non-deterministic time delay involved in the SPI transaction being initiated fthrough Linux from the AM335x isn't an issue. I wish to use the DMA to complete the transaction and retrieval of data.
The SDK doc states that a McSPI driver with support for DMA in master mode is provided.
Given this do I only need to update the DTS in order to add DMA support similar to procedure outlined for the AM62x and AM437x? Or do I need to reconfigure and recompile the kernel as well, in order to enable the McSPI driver? (I'm currently using the default pre-generated compiled OS image that TI provides for kernel version 5.10.100-rt62)
After these steps, do I use the userspace spidev driver, with the assumption that the appropriate McSPI driver with DMA enabled is being used in kernel space? Or is there some other driver and API?
Hi Alborg,
The SPI expert is out of office today. Please expect delayed response.