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.

AM3357: Optimization of SORTE implmentation

Part Number: AM3357

Hello,

For our project, we have a SORTE implementation using the PRU-ICSS. The communication bus works great for our network size of 50 slaves. However, I noticed that it takes some time for the master to store the data that it receives from the slaves and I am looking into different methods of optimization.

When the master device receives slave data, the PRU writes the data into a FIFO buffer in memory. Each data packet is 42 bytes and I poll the buffer for new packets every 100us. I then copy this data into another non-volatile array. In 100us, the master can receive data packets from up to 30 slaves, which means that sometimes over 1kB of data needs to be copied over. Using memcopy for this purpose seems to take a long time (~30us).

I have tried using the DMA in order to transfer the data over to non-volatile memory. For the most part this seems to work nicely, but there are random data packets that the PRU never writes to the FIFO buffer. It almost seems that the PRU gets blocked from writing to the FIFO when the DMA is trying to read from the buffer, even though they never try to access the same address in the FIFO buffer simultaneously.

My questions are:

1. Is there any other way to speed up memcopy?

2. Could the DMA be blocking the PRU from writing to the FIFO buffer if they both try to access the buffer simultaneously, even though they never try to access the same address in the buffer simultaneously?

Thanks,

Stephen