1. ARMv7系统控制寄存器概述
在ARMv7架构中,系统控制寄存器是处理器核心功能管理的关键组件,它们通过协处理器CP15进行访问和控制。这些寄存器为操作系统和Hypervisor提供了底层硬件控制接口,主要涉及以下几个关键领域:
- 内存管理单元(MMU)配置
- 异常处理和调试支持
- 缓存控制和维护操作
- 虚拟化扩展支持
- 安全状态管理
1.1 CP15协处理器接口
ARM架构通过协处理器指令MRC和MCR来访问系统控制寄存器。基本语法格式如下:
assembly复制MRC p15, <opc1>, <Rt>, <CRn>, <CRm>, <opc2> ; 读取CP15寄存器
MCR p15, <opc1>, <Rt>, <CRn>, <CRm>, <opc2> ; 写入CP15寄存器
其中各字段含义:
- opc1:主要操作码,通常为0
- Rt:通用寄存器,用于传输数据
- CRn:主寄存器编号(c0-c15)
- CRm:辅助寄存器编号
- opc2:次要操作码
重要提示:在修改关键系统寄存器后,通常需要执行DSB/ISB屏障指令来确保操作的全局可见性和指令序列的正确性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 关键系统寄存器详解
2.1 内存管理相关寄存器
2.1.1 转换表基址寄存器(TTBR0/TTBR1)
TTBR0和TTBR1寄存器存储页表的物理基地址,分别用于:
- TTBR0:用户空间地址转换
- TTBR1:内核空间地址转换
寄存器格式:
code复制31 N N-1 0
+---------------------+---------------------+
| 基地址[31:N] | 保留位(通常为0) |
+---------------------+---------------------+
其中N取决于页表粒度配置。
配置示例:
assembly复制; 设置TTBR0
LDR r0, =0x80040000 ; 页表物理地址
ORR r0, r0, #0x08 ; 设置Inner Cacheable属性
MCR p15, 0, r0, c2, c0,
