因此、我启用了 MMU 和 Dcache (C-bit=1、M-bit=1和 L2EN=0)、并且设置了用于写回和完全访问的页表(AP=11b、TEX=000b、C=1、B=1、bit[1:0]=10b)。 如果我执行读取操作(将高速缓存线加载到 L1 Dcache 中)、然后对同一高速缓存执行单个字存储、我希望 L1高速缓存能够保存有效和脏数据。 如果我然后禁用 C 位并读取该位置、我希望从 SDRAM 中读取该值、该值应该是旧数据。 这不是我得到的。 在所有情况下(无论是否启用 L2)、L1 (和 L2)的行为都与它们处于写通状态类似、存储器始终会进入 SDRAM。
我认为确实需要启用 MMU 才能使用 L1 Dcache (尽管 TRM 未明确说明这一点)。 我想知道页面表 C 和 B 位是否确实是指示高速缓存作为写通或写回运行的位、或者是否还有其他一些我尚未发现的 cfg 位。 以下是我的断言所依据的相关页面:
