程序中如果有DMA等访问外部存储器如DDR数据时候,CPU处理前需要进行相应Cache数据同步,因为DMA等设备更新的实际存储空间中的数据,而Cache中的数据不能同时更新。需要注意的场景有两个:
(1)在DMA或者EMDA(尤其像HPI、SRIO等具备EDMA外设)操作外存(FSL DSP内存也需要)数据后,CPU需要置cache line无效进行数据同步。
(2)如果CPU更新了外存数据,而DMA(包括SRIO,EMAC,HPI等使用DMA的外设)需要读取,也需要在读取之前,CPU启动Cache Writeback将数据及时回写到外存中。 |