问题描述
我正在尝试关闭 MMU 以运行一些测试代码。我需要创建精确的 1:1 虚拟到物理内存映射,以便在 MMU 关闭后运行代码。
In this question 一个人描述了一种使用汇编代码创建此类映射的方法,但似乎在他创建映射时,系统已无法正常工作。
我的问题是:
解决方法
我需要精确地创建 1:1 的虚拟到物理内存映射 MMU关闭后运行的代码
这根本就没有意义。内存映射仅在 MMU ON 时使用。
一旦 MMU 关闭,就没有虚拟到物理的转换,内存由物理地址访问。好吧,可以将其描述为“虚拟到物理的 1:1”。
关闭 MMU 的问题是执行该操作的代码应该专门构建以使用 1:1 映射运行。
例如代码被构建以调用具有虚拟地址border-bottom-width: 1px
的函数。操作系统将您的程序放置在物理地址 0x8000
。所以基本上跳到0x00C0_0000
就是跳到物理0x8000
。
一旦 MMU 关闭,跳转到 0x00C0_8000
将进入物理 0x8000
。
此外,请确保在关闭 MMU 之前刷新缓存。