SC2440虚拟地址到物理地址的转换

发布者:数字奇迹最新更新时间:2018-06-05 来源: eefocus关键字:SC2440  虚拟地址  物理地址 手机看文章 扫描二维码
随时随地手机看文章

声明:本文得出的结论皆来自于《嵌入式linux完全开发手册》,是在尝试自己理解其含义之后用自己的语言总结出来的,以便于更好的去理解本节内容。

VA:虚拟地址 
WVA:经过转换后的虚拟地址 
PA:物理地址 
PID:进程标识号,由CP15的C13取得。

  • 1、 虚拟地址得到转换后虚拟地址

  • 若VA < 32M,则MVA = VA | (PID << 25), 
    其他情况VA = MVA。 
    32M = 2^25,所以PID要左移25位以便得到不重复的物理地址空间。

Tip:那个VA < 32M,至于为什么是32,我觉得可能是程序运行时的代码空间不会超出后面32M的虚拟地址空间。由于这种取得MVA的方法就是为了简化防止拥有重叠的虚拟地址的不同进程映射到同一物理地址空间所做的工作,而32M之后的虚拟内存空间存放系统组件以及动态链接库等,可以为不同进程所共享,所以就不需要专门去为每个进程区分32M之后的虚拟地址空间所对应的物理地址空间了。

  • 2、 页表分类

  • 2.1、一级页表条目 
    一级页表

  • 标识低2位条目类型
    00无效条目
    01粗页表条目
    10段条目
    11细页表条目
  • 2.2、二级页表条目 
    二级页表

  • 标识低2位条目类型
    00无效条目
    01大页条目
    10小页条目
    11极小页条目
  • 3、 各页表之间关系

  • 页表关系

  • 3.1、指向关系 
    指向关系

  • 其中可以理解为段、大页、小页、极小页属于同一级别,因为由它们可以直接得到物理地址。 
    粗页表、细页表属于二级页表,页表属于一级页表。

  • 3.2、包含关系 
    (1)页表可以包含有4096个段条目(即段描述符),每个段存放有1M的物理地址空间。

  • (2)页表可以包含有4096个粗页表 
    1.每个粗页表包含256个条目,每个条目可以索引4K的物理地址 
    2.一个大页可以索引64K物理地址,粗页表每16个条目可以指向同1个大页 
    3.一个小页可以索引4K的物理地址,粗页表每1个条目可以指向1个小页 
    4.一个极小页可以索引1K的物理地址,粗页表不可指向极小页

  • (3)页表可以包含有4096个细页表 
    1.每个细页表包含1024个条目,每个条目可以索引1K的物理地址 
    2.一个大页可以索引64K物理地址,细页表每64个条目可以指向同1个大页 
    3.一个小页可以索引4K的物理地址,细页表每4个条目可以指向1个小页 
    4.一个极小页可以索引1K的物理地址,细页表每1个指向1个极小页

  • 4、索引步骤

  • (1)段方式 
    从CP15的C2(页表基址寄存器)取得一级页表物理地址(位[31:14]),由MVA的[31:20]位索引到一级页表中的对应的段描述符,从段描述符的[31:20]位得到对应段的物理地址,由MVA的[19:0]位在该段中索引要操作的物理地址。

  • (2)粗页表方式(保存的是大页) 
    从CP15的C2(页表基址寄存器)取得一级页表物理地址(位[31:14]),由MVA的[31:20]位索引到一级页表中的对应的粗页表描述符,由该粗页表描述符的[31:10]得到对应粗页表的物理地址,由MVA的[19:12]位在该粗页表中索引到一个大页描述符,从该大页描述符的[31:16]位得到大页的物理地址,由MVA的[15:0]位在该大页中索引到要操作的物理地址。 
    大页保存在细页表中的索引方式雷同

  • (3)粗页表方式(保存的是小页) 
    从CP15的C2(页表基址寄存器)取得一级页表物理地址(位[31:14]),由MVA的[31:20]位索引到一级页表中的对应的粗页表描述符,由该粗页表描述符的[31:10]得到对应粗页表的物理地址,由MVA的[19:12]位在该粗页表中索引到一个小页描述符,取出描述符[31:12]得到小页表的物理地址,然后由MVA的[11:0]索引到小页表中存放的物理地址。

  • (4)细页表(保存的是极小页表) 
    从CP15的C2(页表基址寄存器)取得一级页表物理地址(位[31:14]),由MVA的[31:20]位索引到一级页表中的对应的细页表描述符,由该细页表描述符的[31:12]位索引到一个极小页表的基址,再由MVA的[19:10]索引到该极小页表中的一个描述符,取出该描述符的[31:10]索引到极小页的物理地址,再由MVA的[9:0]在该极小页中索引到要操作的物理地址。

  • 综述:

  • 段索引: 
    TTB[31:14] MVA[31:20] 得到段描述符 
    DUB[31:20] MVA[19:0] 得到物理地址

  • 粗页表大页: 
    TTB[31:14] MVA[31:20] 得到粗页表描述符 
    SOB[31:10] MVA[19:12] 得到大页表描述符 
    BIB[31:16] MVA[15:0] 得到物理地址

  • 细页表大页: 
    TTB[31:14] MVA[31:20] 得到细页表描述符 
    FIB[31:12] MVA[19:12] 得到大页表描述符 
    BIB[31:16] MVA[15:0] 得到物理地址

  • 粗页表小页: 
    TTB[31:14] MVA[31:20] 得到粗页表描述符 
    SOB[31:10] MVA[19:12] 得到小页表描述符 
    SMB[31:12] MVA[11:0] 得到物理地址

  • 细页表小页: 
    TTB[31:14] MVA[31:20] 得到细页表描述符 
    FIB[31:12] MVA[19:12] 得到小页表描述符 
    SMB[31:12] MVA[11:0] 得到物理地址

  • 细页表极小页: 
    TTB[31:14] MVA[31:20] 得到细页表描述符 
    FIB[31:12] MVA[19:10] 得到极小页描述符 
    VSB[31:10] MVA[9:0] 得到物理地址

  • Tip:

  • SOB: coarse base 
    FIB: fine base 
    DUB: section base 
    SMB: small base 
    VSB: very small base 
    BIB: big base


关键字:SC2440  虚拟地址  物理地址 引用地址:SC2440虚拟地址到物理地址的转换

上一篇:ARM地址重映射机制
下一篇:基于linux2.6.30.4的s3c2440寄存器的虚拟地址和物理地址的关系

推荐阅读最新更新时间:2024-03-16 16:04

采用段式管理的大容量外部RAM扩展技术
MCS96系列单片机是一种16位字长,比MCS51系列单片机功能更全、性能更高的单片机,在仪器仪表、过程控制等领域应用极为广泛。在采用MCS96系列单片机的应用开发中,我们碰到一个难题:当需要大容量的数据存储时,数据存储器的扩展如采用与MCS51系列单片机同样的方法则无法工作。因为其内存体系结构采用程序存储器与数据存储器统一编址的普林斯顿结构,程序存储器的地址与数据存储器的地址不能相同;而MCS51系列单片机采用程序存储器与数据存储器分开编址的哈佛结构,程序存储器的地址与数据存储器的地址不冲突,可以相同,因而其数据存储器扩展容易,而且整个数据存储器地址空间连续。MCS96系列单片机的普林斯顿内存体系结构决定了不能简单采用与MCS5
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved