为什么DMA情况下的SDRAM不能使能dcache,但可以使能icache
如果使用了DMA,比如USB试用了DMA,那么就不能开dcache,因为这样会导致SDRAM中的数据与dcache中的数据存在不匹配的风险,
比如:
1.cpu从SDRAM中读取若干cache线大小数据到cpu内部dcache空间,而后
2.DMA从usb总线回写了数据到SDRAM中,那么位于dcache中的数据将不能获知SDRAM中由DMA接收到的新数据,
3.直到cpu操作相应cache线数据,使cache线invalid失效,这样cpu才会从SDRAM再次取出数据存到cpu内部的相应失效的cache线上,
4.所以DMA的SDRAM空间,是不允许使能dcache的,也就有了linux进入schedule之后,invalid所有dcache和icache的不须性[luther.gliethttp]
而icache指令cache,因为其存在只读性,所以不会存在由ROM加载到SDRAM后,SDRAM中的程序指令和icache线上的数据不一致现象,
所以icache是可以安全使用的[luther.gliethttp]
阅读(3135) | 评论(0) | 转发(0) |