FS2410 开发板上启用 MMU 实现虚拟内存管理
用 MCR 指令
来写该寄存器,具体格式如下:
MCR P15, 0,
其中,
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
C0 4 等待中断激活0
C5 0 使用无效整个Cache 0
C5 1 使无效指令Cache 中的某块 虚地址
C5 2 使无效指令Cache 中的某块 组号/组内序号
C5 4 清空预取缓冲区0
C5 6 清空整个跳转目标Cache 0
C5 7 清空跳转目标Cache中的某块 生产商定义
C6 0 使无效整个数据Cache 0
C6 1 使无效数据Cache 中的某块 虚地址
C6 2 使无效数据Cache 中的某块 组号/组内序号
C7 0 使数据Cache 和指令Cache 无效 0
C7 1 使无效整个Cache 中的某块 虚地址
C7 2 使无效整个Cache 中的某块 组号/组内序号
C8 2 等待中断激活 0
C10 1 清空数据Cache 中某块虚地址
C10 2 清空数据Cache 中某块组号/组内序号
C10 4 清空写缓冲区0
C11 1 清空整个Caceh 中某块虚地址
C11 2 清空整个Caceh 中某块组号/组内序号
C13 1 预取指令Cache 中某块虚地址
C14 1 清空并使无效数据Cache中某块虚地址
C14 2 清空并使无效数据Cache中某块组号/组内序号
C15 1 清空并使无效整个Cache中某块虚地址
C15 2 清空并使无效整个Cache中某块组号/组内序号
----------------------------------------------------------------------------------
第 35~36 行: 清空写缓冲区
第 38~39 行,使DCache, ICache 及页表的内容无效。系统控制协处理器 CP15 的寄存器 C8就
是用来控制清除 TLB内容相关操作的。指令格式如下:
MCR P15, 0,
其中
----------------------------------------------------------------------------------
指令
----------------------------------------------------------------------------------
MCR P15,0,Rd,C8,C7,0 0b0000 0b0111 0 DCache,ICache 无效
MCR P15,0,Rd,C8,C7,1 0b0000 0b0111 虚地址 整个Cache 中单个地址变换条目无效
MCR P15,0,Rd,C8,C5,0 0b0000 0b0101 0 整个Cache无效
MCR P15,0,Rd,C8,C5,1 0b0000 0b0101 虚地址 指令Cache 中单个地址变换条目无效
MCR P15,0,Rd,C8,C6,0 0b0000 0b0110 0 整个数据Cache无效
MCR P15,0,Rd,C8,C6,1 0b0000 0b0110 虚地址 数据Cache 中单个地址变换条目无效
----------------------------------------------------------------------------------
第 41~43 行:加载页表的首地址到 CP15 协处理器的寄存器 C2
第 45~53 行:设置访问控制权限。协处理器 CP15 中 C3 为 DOMAIN ACCESS CONTROL REGISTER,
该寄存器有效位为32,被分成16个区域,每个区域由两个位组成,含义如下:
00:当前级别下,该内存区域不允许被访问,任何的访问都会引起一个 domain fault
01:当前级别下,该内存区域的访问必须配合该内存区域的段描述符中AP位进行权检查
10:保留状态
11:当前级别下,对该内存区域的访问都不进行权限检查
注意第 49 行我们用的是 "mvn r0, #0" 而非 "mov r0, #0"
第 59~76 行, 设置并启用 MMU。这几行代码主要是设置了 CP15 的寄存器 C1。C1 是一个控制寄
存器它包括以下功能:
禁止/使能 MMU 以及其它的与存储系统相关的功能
配置存储系统以及 ARM 处理器中的相关部分的工作方式
来看一下 C1 寄存器具体是什么样子:
各控制位含义如下表:
----------------------------------------------------------------------------------
C1中的控制位 含义
----------------------------------------------------------------------------------
M 禁止/使能 MMU
A 禁止/使能地址对齐检查功能
C 禁止/使能整个 Cache
W 禁止/使能写缓冲
P 32/26地址模式
D 禁止/使能26地址异常检查
L 早期/后期中止模型
B little-endian/big-endian
S 在 MMU 启用时用作系统保护
R 在 MMU 启用时用作系统保护
F 由生产商定义
Z 禁止/使能跳转预测指令
I 禁止/使能 Cache
V 低端/高端异常中断向量表
RR 对系统中的 Cache 选择淘汰算法
L4 提供对以前的 ARM 的版本兼容
bits[31:16] 保留
----------------------------------------------------------------------------------
第 77~79 行: 这是使用嵌入汇编的方式,第 78 行的 "r"(ttb) 表示变量 ttb 的值赋给一个寄
存器作为输
FS2410MMU虚拟内存管 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)