ok6410利用MMU实现虚拟地址点灯

MMU其实就是一个页表。将虚拟地址通过查表的方式,对应到物理地址去他由一个或一组芯片组成,一般存在与协处理器中。

1.将虚拟地址转化为物理地址

2.访问权限管理

这里先讲内存映射功能,

MMU可以将CPU寻址的虚拟内存转化为实际的物理内存,通过查表的方式,这样满足多进程或者超过物理内存的虚拟内存(通过将需要的内容从硬盘or存储器拷贝到内存,再将暂时不用的内存存回硬盘or存储器)

MMU要自动进行虚拟地址到物理地址的转化,首先要找到一级页表,而一级页表的基地址(TTB:translation table base)则是保存在CP15的C2寄存器中。因此,当程序员创建好相应的页表后,需要将页表基地址写入该寄存器。(ARM11文档)

MMU有一级转换和二级转换,其实就是查几次表。对于一级转换,就是只查一次页表,就确定了物理地址。这个在S3C6410中,方式是段映射。对于二级转换,就要查两次页表或者三次,才能确定物理地址,这个在S3C6410中。有两种方式,一种细页方式,一种粗页方式。这两种的区别就是每一页对应的大小不一样而已。

6410支持两种格式的页表:

1.支持子页面访问模式的向后拓展模式。

2. ARMv6格式,不支持子页面访问权限,但支持ARMv6 MMU特性,还添加了TrustZone的NS属性位。

特性有

  • 扩展区域类型
  • 全局和处理特定页面
  • 更多的访问权限
  • 具有共享区域和非共享区域标记
  • 具有从不执行区域标记。

两种模式下P:如果支持并为内存区域设置P位,则向系统内存控制器表明该内存区域已启用ECC,一项内存校验纠错功能。ARM1176JZF-S处理器不支持P位。

当第一级描述符的位[1:0]为b01时,描述符指向第二级页表,称为粗页表。

b01则为段模式。无效翻译bits b00及保留项的翻译b11,均会导致翻译错误。

向后拓展模式:

一级描述符格式

二级描述符格式

页表查找示意图:

ARMv6格式:

一级描述符

二级描述符

页表查找示意图:

查找模式详解:

首先,内存映射可以被分为2部分,表0与表1,他们由参数N来控制,N的值被写入TTBCR来完成设置。N与表0的大小如下所示:

在做页表查询时会根据虚拟地址的高N位是否为零判断用哪个表(为0用0表,不为0用1表)

这里详细讲一下段页表,其他的页表建立模式只是层数和格式不同,并无太大区别(我看着是这样)

建立过程首先根据页表起始地址与虚拟地址高12位找到页表地址,之后将高12位赋值为物理地址高12位,AP位访问权限设为11, domain为0,XN为1,C,B根据需求设定,加快运行速率的选项。

这样就完成的一项页表的创建,需要哪些映射就创建那些。

创建完页表后就准备开启MMU

首先将MMU的物理地址传入,无效ICaches和DCaches,无效指令、数据TLB,与访问控制器均为11,不进行权限检查(没做权限的那些东西,以后做),写页表基地址,读控制寄存器的并逐位修改,

控制寄存器的低16位含义为:。RVI 。。RS B。。。 。CAM,。表示无关位

* R : 表示换出Cache中的条目时使用的算法,

* 0 = Random replacement;1 = Round robin replacement

* V : 表示异常向量表所在的位置,

*0 = Low addresses = 0x00000000;1 = High addresses = 0xFFFF0000

* I : 0 = 关闭ICaches;1 = 开启ICaches

* R、S : 用来与页表中的描述符一起确定内存的访问权限

* B : 0 = CPU为小字节序;1 = CPU为大字节序

* C : 0 = 关闭DCaches;1 = 开启DCaches

* A : 0 = 数据访问时不进行地址对齐检查;1 = 数据访问时进行地址对齐检查

* M : 0 = 关闭MMU;1 = 开启MMU

按需要进行设置,并最后开启MMU

实现了MMU虚拟地址映射

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值