I am using an Atmel/Microchip ATSAME70 Cortex M7 processor and was working on getting Ethernet GMAC driver working. The GMAC uses an internal DMA engine to transfer packets to SRAM. I noticed that I was getting some HRESP errors with the DMA transferring data and the peripheral driver was not working. I disabled the data cache and the driver works.
The code polls the SRAM locations to see if a DMA has completed so I tried leaving data cache on and invalidating the cache before reading the SRAM but that did not fix problem. I was wondering if anyone knew of any problems using the data cache and DMAs in peripherals like this?
Note every time I contact Microchip about such problems they inform me that they never test/run code with caching enabled, so they never see any problems.
Thanks
Trampas
I have found that it appears to work if I clean the cache, before sending data to peripheral and if I a clean/invalidate cache before reading memory.
The cache appears to have been doing it's job. I am still trying to determine the HRESP errors, the problem I have is that Atmel/Microchip's datasheets do not contain enough enough information to determine the root causes and how to deal with errors (their example code does not even check for errors). If anyone has a recommendation for silicon provider which has decent datasheets and examples please let me know.