我是 2 核的 ARM Cortex A9 CPU。但我只使用 1 个核心,而另一个只是处于繁忙循环中。我使用部分(每个条目 1MB)设置 MMU 表,如下所示:
0x00000000-0x14ffffff => 0x00000000-0x14ffffff (non-cachable, non-bufferable)
0x15000000-0x24ffffff => 0x15000000-0x24ffffff (cachable, bufferable)
0x25000000-0x94ffffff => 0x25000000-0x94ffffff (non-cachable, non-bufferable)
0x15000000-0x24ffffff => 0x95000000-0xa4ffffff (non-cachable, non-bufferable)
0xa5000000-0xffffffff => 0xa5000000-0xffffffff (non-cachable, non-bufferable)
这很简单。我只想拥有一个 256MB 内存的镜像,用于不可缓存的访问。但是,当我多次写入 0x95000000-0xa4ffffff 的不可缓存内存部分时。我发现在我明确给出缓存刷新之前实际上并未写入写入。
我做错了什么还是这种映射无效?如果是这样的话,我不明白 Linux 的 ioremap 将如何在 ARM 上运行。如果有人能给我一些解释,那就太好了。非常感谢。