Other Parts Discussed in Thread: SYSBIOS
Dear TI team,
we're trying to split our application to run timing critical code on a dedicated R5f core. For this we're looking at our options to implement inter-processor communication via shared memory.
I've always been under the impression that the A53 is cache-coherent with other bus masters when it comes to DDR and MSMC SRAM (see also related thread). This has for example been true for an external PCIe device writing via DMA into our DDR memory.
While trying to get the IPC driver code working in our own application we've come across issues relating to cache coherence. Unfortunately the TI IPC examples appear to be configuring the shared memory as uncacheable on the A53 so we can't look at those to figure out the right way to configure this.
Our setup looks like this:
- A53 running TI-RTOS application
- All of DDR memory mapped as normal, cacheable memory (MAIR 7)
- R5f running bare-metal application
- Most of DDR memory mapped as normal, WBWA memory via lower priority MPU entry
- Part of DDR memory mapped as strongly ordered or device memory via higher priority MPU entry (tried several different mappings)
The A53 and R5f use the same phsical memory range for the IPC/VRING stuff, but we've had issues with not all of the data being visible on the A53 after writes from the R5f.
To us it looks like the snooping into A53 caches is failing for accesses coming from the R5f. Since the DDR memory is coherent with the same settings for accesses coming from PCIe for example we're assuming that the A53 setup is fine.
Is there any example showing cache-coherent memory being shared between A53 and R5f?
How should we configure the R5f MPU to ensure that the MSMC snoops A53 caches for our R5f accesses?
Do we have to configure something within the MSMC / NBSS / ... for this to work?
Are there any recommendations from TI in order to debug this issue?
Unfortunately the TRM is rather sparse on details regarding cache coherence (see also related thread), and there still hasn't been an update to the TRM. The latest version is still from 2019, despite previous promises that a newer version was in the pipeline (March 2020) or pending external publication (January 2021). Is there any hope of that new TRM being released anytime soon? Is there any reliable schedule for this?
Best Regards,
Dominic