在sdk调试ddr的时候,想要使用memory窗口观察写入情况,需要使用到Xil_DCacheInvalidateRange函数无效化数据缓存,memory窗口才能刷新最新的数据。 Xil_DCacheInvalidateRange 这个函数用于无效化指定范围内的数据缓存。当你无效化缓存时,缓存中的数据将被标记为无效,但是并不会写回主存储器。这
void (*flush_kern_dcache_page)(void *); void (*dma_inv_range)(const void *, const void *); void (*dma_clean_range)(const void *, const void *); void (*dma_flush_range)(const void *, const void *); }; 所以其实flush_cache_all 在我们的项目中就是arm926_flush_kern_cache_all:...
对处理器而言,清除操作只要清零相应cache行的有效位即可。当存储器配置上有变化时,整体或部分cache可能需要进行清除(flush)操作。有时也用术语作废(invalidate)来代替术语“清除(flush)”。然而,对于采用写回策略的D-cache,就需要使用清理(clean)操作(注:dcache也有flush(清除)操作,见flush_dcache_range函数)。
extern void flush_dcache_page(struct page *); #define ARCH_IMPLEMENTS_FLUSH_KERNEL_VMAP_RANGE 1 static inline void flush_kernel_vmap_range(void *addr, int size) { if ((cache_is_vivt() || cache_is_vipt_aliasing())) @@ -312,9 +313,6 @@ static inline void flush_anon_page(struct...
在驱动程序的设计中,我们可能会用到flush_cache_all将ARM cache的内容刷新到RAM,这是因为ARM Linux中cache一般会被设定为write back的。而通常象DMA是访问不了cache,所以如果我们需要启动DMA将RAM中的内容写到Flash中或LCD framebuffer,那么我们就需要调用flush_cache_all将cache中最新的内容刷新到RAM中。如果不这样...
对处理器而言,清除操作只要清零相应cache行的有效位即可。当存储器配置上有变化时,整体或部分cache可能需要进行清除(flush)操作。有时也用术语作废(invalidate)来代替术语“清除(flush)”。然而,对于采用写回策略的D-cache,就需要使用清理(clean)操作(注:dcache也有flush(清除)操作,见flush_dcache_range函数)。
在驱动程序的设计中,我们可能会用到flush_cache_all将ARM cache的内容刷新到RAM,这是因为ARM Linux中cache一般会被设定为write back的。而通常象DMA是访问不了cache,所以如果我们需要启动DMA将RAM中的内容写到Flash中或LCD framebuffer,那么我们就需要调用flush_cache_all将cache中最新的内容刷新到RAM中。如果不这样...