请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】
及【嵌入式开发学习必备专栏】
文章目录
- MMU Table 表分配原理及其代码实现
- 虚拟地址空间 Region的配置
- 系统物理地址位宽获取
- 汇编代码实现
MMU Table 表分配原理及其代码实现
假设当前系统中需要映射多个region,其中第一个要映射的region虚拟地址范围是0x0000_0000 -- 0x8000_0000
一共2G
的大小。MMU默认最大支持48bit的虚拟地址,由前面文章可知 如果按照颗粒度为4K大小进行映射,且按照4级映射的方式进行映射(9bit-9bit-9bit-9bit-12bit
),那么:
- Level0 table 一个entry对应的大小为
512G
; - Level1 table 一个entry对应的大小为
1G
; - Level2 table 一个entry对应的大小为
2M
; - Level3 table 一个entry对应的大小为
4K
。
由于每个Level 又由9bit
组成,所以每个Level 有 29 = 512 个entry。由于 Level0 的一个entry对应的地址范围是512G,所以通常用不到 Level0,虽然用不到Level0, 但是低级 table的地址