单片机
返回首页

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

2018-06-05 来源:eefocus

声明:本文得出的结论皆来自于《嵌入式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


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • PIC单片机控制的遥控防盗报警器电路

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • RS-485基础知识:处理空闲总线条件的两种常见方法

    相关电子头条文章