【ARM】虚拟地址映射理解

本文介绍了ARM处理器中的虚拟地址和物理地址概念,详细阐述了地址映射原理,尤其是段模式下的映射。通过页表理解VA与PA的映射关系,讨论了uboot中虚拟地址映射的具体实现,包括段基址、权限设置、域和控制位等关键点。最后,解释了uboot映射过程中的汇编代码和实际地址映射情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、关于虚拟地址和物理地址:

物理地址(记为PA)是设计生产的时候确定的,是一种硬件编码生产的物理地址。虚拟地址对于操作系统或者软件层面来说的。虚拟地址与物理地址之间有一个虚拟地址转换层建立了一个从虚拟地址映射到物理地址的映射表(也就是映射原理中所说的页表)。物理地址是根据具体需求来确定大小的,通常情况下会比虚拟地址小。

例如:对于 32 为 ARM 处理器,最大寻址空间为 4GB(2^32),但是物理空间并没有配置到这么大,所以对于虚拟地址(记为VA) 来说,其地址为 0x00000000~0xFFFFFFFF,对于 物理地址(记为PA) 来说,其地址应小于或等于 0xFFFFFFFF。

2、地址映射原理:

把虚拟地址划分为一定大小空间的存储块,同样,物理空间也划分为同样大小的块。然后,依照存储块的大小,可分为:1、段(1MB) 2、大页(64KB) 3、小页(4KB)4、极小页(1KB)。第一种称为段模式,后面三种称为页模式。这些映射,都是通过页表实现的,页表又可可以分为:一级页表(用于段模式)和 二级页表(用于页模式)

3、什么是页表(转换表)呢?

页表就是存储在内存中(会被拷贝到 SDRAM 中存放,以供 MMU 查询),用于表示 VA 与 PA的映射关系的一个表格。表格中每项称为条目,条目里的内容称为描述符(段描述符和页描述符)

宏观上理解转换表:整个转换表可以看作是一个int类型的数组,数组中的一个元素就是一个表索引和表项的单元。数组中的元素值就是表项,这个元素的数组下标就是表索引。

4、uboot中虚拟地址映射采用了段模式:

以段模式映射时,因为 VA 大小位 4G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值