Hello everyone, my 1st question to the ARM community; please excuse my ignorance. Fairly recently, I shared OCM (on-chip-memory) on Xilinx Zynq processor (which is dual ARM Cortex A9). To pass message between the 2 cores, I followed the Xilinx example and turned off L1 and L2 cache for this OCM. But at first, I actually tried to keep L1 turned on the OCM by relying on DMB to do the job, which did NOT work. I realized that I did NOT understand cache after all. Scanning the web, this is what I gathered:
But beyond the basics, I have a few questions:
Thank you very much for considering my questions. Perhaps these are such basic questions, and I should have learned this in school, but I could not find a clear discussion online.
You have better choice instead of clean/invalidate the whole L1/L2 cache: DCIMVAC(Invalidate data* cache line by MVA to PoC) and DCCMVAC(Clean data* cache line by MVA to PoC). Please refer "ARM® Architecture Reference Manual ARMv7-A" for detail. Good luck.