1. ARM MMU架构概述
在嵌入式系统开发中,内存管理单元(MMU)是处理器核心与物理内存之间的关键桥梁。ARMv4架构的MMU采用了一种高效而灵活的设计方案,主要实现两大核心功能:
- 地址转换:将程序使用的虚拟地址(VA)映射到实际的物理地址(PA)
- 访问控制:通过权限检查和域管理机制保护内存区域
以ARM922T为例,其MMU架构具有以下技术特点:
- 支持1MB段(section)、64KB大页(large page)、4KB小页(small page)和1KB微页(tiny page)四种映射粒度
- 采用两级页表结构,第一级页表固定4096个条目,每个条目对应1MB虚拟地址空间
- 16个独立的硬件域(domain),每个域可配置不同的访问控制策略
- 独立的指令TLB(I-TLB)和数据TLB(D-TLB),各64个条目
- 支持TLB条目锁定功能,满足实时性要求
关键提示:在启用MMU前,必须正确配置域访问控制寄存器(CP15 c3)和页表基址寄存器(CP15 c2)。错误的配置可能导致内存访问异常或系统崩溃。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 地址转换机制详解
2.1 转换流程
ARM MMU的地址转换过程可分为硬件自动完成的三个阶段:
-
虚拟地址生成:CPU核心发出虚拟地址(VA),经过FCSE(快速上下文切换扩展)处理后生成修改后的虚拟地址(MVA)
c复制// FCSE处理伪代码 if (VA < 32MB) MVA = VA + (FCSE_PID << 25); else MVA = VA; -
TLB查找:MMU首先查询TLB中是否缓存了该MVA的转换条目
- 命中(Hit):直接获取物理地址和权限信息
- 未命中(Miss):触发硬件页表遍历(table walk)
-
权限检查:根据域设置和访问权限位决定是否允许本次访问
2.2 页表结构
ARMv4采用两级页表结构,如下图所示:
code复制第一级页表(4096条目)
├─ 无效条目
├─ 段描述符(1MB映射)
├─ 粗粒度页表描述符(指向256条目的二级页表)
└─ 细粒度页表描述符(指向1024条目的
