我在使用6713时将cache设置为64k,同时将HPI接口的数据缓存区设置在SDRAM区,因为cache不对外部存储器执行一致性检查,这样在DSP这边在第一次cache命中后如果cache区没有被刷新就不在从外部读取数据了,这样在主机在SDRAM区写入数据后,实际DSP这端有可能检测不到外部数据改变了,同样DSP写数据后也有可能存入不到SDRAM区。 此时必须通过人工干预使cache中与SDRAM缓存相关的内容无效,采用CACHE_flush和CACHE_clean来维护cache与SDRAM的内容一致。同时由于L2和L1之间也存在不一致问题,同样需要维护,但是这样会造成系统性能下降。 内部RAM对于L1来说相当于cache,如果将HPI缓存放置在内部RAM中则没有外部存储器一致性问题,但是也存在L2与L1之间的不一致问题,也需要干预。 当然L2和L1不一致问题在程序比较大时几率比较小,几乎可以忽略。 以上是我的理解,不知是否正确请大家看一下,提提意见,谢谢! 另:新库中CACHE_wbL2=CACHE_flush,CACHE_wbInvL2+CACHE_wbInvL1d=CACHE_clean? |