Hi BU experts,
This question is an urgent case and need your quick and high priority support.
Customer side found Flash read content sometimes not right (after Flash read, they immediately do CRC check on the content and failed). They tried 3 methods to solve the issue: 1. disable EDMA, no problem anymore; 2. disable cache, also no problem anymore; 3. adding 5us delay after Cache_inv in QSPI_edmaTransfer function, no problem found anymore.
Based on the above observation, I hypothesize that this issue may be caused by cache coherency problem. Since customer immediately used the data after Flash read, and maybe Cache_inv operation needs more time to finished, and before that if CPU read to the buffer it will use the old value in the cache but not the updated one. I compared the buffer result with the Flash content, found that the correct values are aligned at 32-byte which is also the cache line size.
Need your double confirmation on above analysis and please check internally with the design team that if cache_inv needs some time to be finished and if it is, please also give the needed time.
Regards,
Will