05-18-2020 01:15 AM
We are trying to let cpu0 (linux) to write data into the OCM (0xFFFF1000) with 140 byte (Loop 35 times, writing 4byte each time). Before writing, a soft interrupt is sent to cpu1 (bare), and a soft interrupt is sent to cpu1 after writting all the data.
As we saw on the oscilloscope, the whole process of writing the data took 1-2ms. I tried to write 280 byte, and then the time of writting up to 3-4ms.
Why it takes so long?
05-19-2020 03:20 PM
How did you map the OCM in linux? If it is through UIO, for example, it is likely uncached. While you may want uncached memory for coherency with the other CPU (depending on how it is set up) that will drastically reduce write performance since every write will be a bus cycle rather than bursting cache lines.
05-21-2020 06:20 AM
Many thanks for your reply. But i have solved my problem by modifying the memory write function. Previuos i wrote the OCM one address with one file_open. Now, i write the address for all the data with only one file_open. After that, the delay is reduced to about 500us .