教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 外语考试 >

ARM920T虚拟地址原理分析及实现

来源:网络收集 时间:2026-08-01
导读: 这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码 第五章 虚拟内存及缓冲区管理 在刚开始接触TQ2440并测试TEST程序时,当时就产生了一个疑惑,把程序下载到NAND和SDRAM中,其中断均能正确执行,当时以为,程序有可能采用了动态添加中断向量技术,

这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码

第五章 虚拟内存及缓冲区管理

在刚开始接触TQ2440并测试TEST程序时,当时就产生了一个疑惑,把程序下载到NAND和SDRAM中,其中断均能正确执行,当时以为,程序有可能采用了动态添加中断向量技术,即在SDRAM中运行时在向量0x18处添加跳转指令的二进制编码。虽然能够实现,但在实际编程时会非常麻烦。

ARM采用了虚拟内存映射技术即MMU,负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查,通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统的差别,从而提高系统的整体性能。

在系统加电时,将ROM/FLASH映射为地址0,进行一些初始化工作并将程序加载到SDRAM中去,然后启用MMU,将虚拟地址0映射到SDRAM地址(0x30000000),这样当中断产生时读取0x18处的指令时实际读取的是0x30000018处的指令,这样中断就就可以正确执行。

S3c2440内存管理单元有如下特征:

4种映射长度,段1M、大页64k、小页4k,极小页1k

指令TLB(含64个条目)、数据TLB(含64个条目)

硬件访问页表地址映射、权限检查由硬件自动完成

第一节CP15寄存器的功能及读写

ARM的虚拟地址管理主要通过CP15相关寄存器来实现的,CP15包括了16个32位寄存器,编号为0~15,实际上对于某些编号的寄存器可能对应有多个物理寄存器,在指令编码时指定标志位来区分。

CP15寄存器功能

编号 MMU功能

C0 ID编码(只读)

C1 开启/禁止MMU/CACHE/WRITE等功能

C2 地址转换表基地址

C3 域访问控制

C4 保留

C5 内存失效状态

C6 内存失效状态

C7 CACHE及WRITE控制

C8 TLB控制

C9 CACHE锁定

C10 TLB锁定

C11 保留

C12 保留

C13 进程PID

C14 保留

C15

CP15寄存器的读写

MCR ARM寄存器到协处理器寄存器数据传送

MRC 协处理器寄存器到ARM寄存器数据传送

这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码

格式:

MCR/MRC P15,0,<RD>,<CRN>,<CRM>,{,<OPCODE_2>}

其中RD为ARM寄存器

CRN为协处理器寄存器

CRM附加的目标寄存器或源操作数寄存器,用于区分一个编号的不同物理寄存器,当指令不需要提供附加信息时,将CRMC0指定为,OPCODE_2指定为0

MCR P15,0,R4,C1,C0,0 R4->C1

MRC P15,0,R4,C1,C0,0 R4<-C1

C1寄存器位相关功能

M[0]:0禁止|1启用MMU

A[1]:0禁止地址对齐检查|1使能地址对齐检查

C[2]:0禁止数据CACHE|1使能数据CACHE

W[3]:0禁止写缓冲|1使能写缓冲

I[12]:0禁止代码CACHE|1使能代码CACHE

第二节 地址转换过程

MMU地址转换过程及描述符定义

虚拟地址空间到物理地址空间映射是以内存块为单位进行的,即虚拟存储空间中一块连续的存储空间被映射成物理存储空间中同样大小的一块连续存储空间,每一个描述符实际记录了一个虚拟地址与物理地址之间的对应关系,ARM支持多种地址变换。

通常,以段为单位的地址变换过程只需要一级页表,而以页为单位的地址变换过程还需要二级页表。

地址转换过程

1. 从CP15寄存器C2得到一级页表的基地址

2. 将虚拟地址[31:20]作为页表的索引,得到页表中该虚拟地址的描述符。

3. 判断该描述符是否为段描述符,如为段描述符,将该描述符[31:20]和虚拟地址[19:

0]作为偏移量组成一个32位的物理地址进行访问。

这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码

4. 如为粗页表描述符,则将该粗页表描述符[31:10]作为二级页表的基地址,并将虚

拟地址[19:12]位作为索引得到在二级页表中该虚拟地址的描述符。

判断二级页表符的类型

① 为极大页描述符表将该描述符[31:16]作为基地和虚拟地址[15:0]作为偏移

量得到该虚拟地址的32位物理地址进行访问。

② 为小页描述符表将描述符[31:12]作为基地和虚拟地址[11:0]作为偏移量得

到该虚拟地址的32位物理地址进行访问。

5. 如为细页表描述符,将该组页表描述符[31:12]作为二级页表的基地址,并将虚拟

地址[19:10]位作为索引得到在二级页表中该虚拟地址的描述符。

判断二级页表符的类型

① 为大页描述符表将该描述符[31:16]作为基地和虚拟地址[15:0]作为偏移量

得到该虚拟地址的32位物理地址进行访问。

②为小页描述符表将该描述符[31:12]作为基地和虚拟地址[11:0]作为偏移量得

到该虚拟地址的32位物理地址进行访问。

③为小极页描述符表将描述符[31:10]作为基地和虚拟地址[9:0]作为偏移量得到

该虚拟地址的32位物理地址进行访问。

其转换过程如下图如示:

当采用段描述符时,虚地址[19:0]共20位作为偏移量可寻址空间为1M

当采用二级描述符时:

第一级为粗页时,虚地址[19:12]共8位作为第二级的索引量,可寻址256个第二级页表。

这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码

1.当第二级为小页描述符时,虚地址[11:0]作为偏移量,可寻址空间2^12=4k,一个粗页表总可寻址4k*256=1M。

2.当第二级为大页描述符时,虚地址[15:0]作为偏移量,可寻址空间2^16=64k 但

是,虚地址[19:15:12]是作为第二级大页描述符的索引,虚地址[15:0]作为偏

移量,也就是说虚地址[15:12]被重复使用。我们考虑一下从0x0~0xffff(64K)

空间地址的转换问题,显然虚地址[15:12]将从0~f,也就是说二级页表开始的16

个描述符都将被访问,如果每个描述符定义的页物理基地址不一致,如第二级第

一个页表定义物理基地址为0x300000000;第2个页表为0x30001000,第16个页

表定义的物理基地址为0x300f000时,0~ffff(64K)空间将被映射到0~fffff(1M)

地址空间,显然这是不正确的。为了得到正确的结果,我们可以将这粗页表中16

个连续的大页描述符定义为同一大页描述符,其物理基地址一致。

结论:当采用二级页表时,索引第二级页表虚地址和作为偏移量的虚地址有重复时,

其重复为n位,则第二级页表中连续的2^n个页表描述符必须定义为一致。如上

所示[15:12]位重复,n=4,则连续16个描述符必须相同。

第一级为细页表时,其情况类似,不再分析。

地址映射具体实例:

我们将以下图所示的过程对虚拟地址0x00000018和0x30605600的转换过程进行详细的说明:

TLB寄存器值0x33ffc000是整个页表的基地址

0x00000018地址转换:将虚地址[31:20]位0x0作为索引*4(每个描述符占4个字节)再与页表基地址相加得0x33ffc000,即页表中第一个描述符,因为该描述符为段描述符,将其[31:20]位0x300左移20位充0为0x30000000作为该段物理基地址,并将虚地址[19:0]位0x18作为偏移地址与该段物理基地相加得0x30000018。该地址就为虚地址0x18对应的物理地址。

0x30605600地址转换:将虚地址[31:20]位0x306作为索引*4(每个描述符占4个字节)再与页表基地址相加得0x33ffcc18,即页表中第775 …… 此处隐藏:9405字,全部文档内容请下载后查看。喜欢就下载吧 ……

ARM920T虚拟地址原理分析及实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1695043.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)