- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM920T虚拟地址原理分析及实现
第五章 虚拟内存及缓冲区管理
在刚开始接触TQ2440并测试TEST程序时,当时就产生了一个疑惑,把程序下载到NAND和SDRAM中,其中断均能正确执行,当时以为,程序有可能采用了动态添加中断向量技术,即在SDRAM中运行时在向量0x18处添加跳转指令的二进制编码。虽然能够实现,但在实际编程时会非常麻烦。
ARM采用了虚拟内存映射技术即MMU,负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查,通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统的差别,从而提高系统的整体性能。
在系统加电时,将ROM/FLASH映射为地址0,进行一些初始化工作并将程序加载到SDRAM中去,然后启用MMU,将虚拟地址0映射到SDRAM地址(0S3c2440内存管理单元有如下特征:
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寄存器数据传送
格式:
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地址转换过程及描述符定义
描述符定义:
第一级段、粗页和细页描述符 类型 31 20 19 12 11 10 9 8 5 4 3 2 1 0 粗页 二级页表基地址[31:10] Domain 1 0 1 段 物理地址基地址[31:20] AP Domain 1 C B 1 0 细页 二级页表基地址[31:12] Domain 1 1 1 第二级极大页、小页和极小页描述符 31 16 15 12 11 10 9 8 7 6 5 4 3 2 1 0 极大 物理地址基地址[31:16]64k Ap3 Ap2 Ap1 Ap0 C B 0 1 小页 物理地址基地址[31:12]4k Ap3 Ap2 Ap1 Ap0 C B 1 0 极小 物理地址基地址[31:10]1k ap C B 1 1
虚拟地址空间到物理地址空间映射是以内存块为单位进行的,即虚拟存储空间中一块连续的存储空间被映射成物理存储空间中同样大小的一块连续存储空间,每一个描述符实际记录了一个虚拟地址与物理地址之间的对应关系,ARM支持多种地址变换。
通常,以段为单位的地址变换过程只需要一级页表,而以页为单位的地址变换过程还需要二级页表。
地址转换过程
从CP15寄存器C2得到一级页表的基地址
将虚拟地址[31:20]作为页表的索引,得到页表中该虚拟地址的描述符。
判断该描述符是否为段描述符,如为段描述符,将该描述符[31:20]和虚拟地址[19:0]作为偏移量组成一个32位的物理地址进行访问。
如为粗页表描述符,则将该粗页表描述符[31:10]作为二级页表的基地址,并将虚拟地址[19:12]位作为索引得到在二级页表中该虚拟地址的描述符。
判断二级页表符的类型
为极大页描述符表将该描述符[31:16]作为基地和虚拟地址[15:0]作为偏移量得到该虚拟地址的32位物理地址
文档评论(0)