基于ARM体系的虚拟机的构架实现 开题报告_第1页
基于ARM体系的虚拟机的构架实现 开题报告_第2页
基于ARM体系的虚拟机的构架实现 开题报告_第3页
基于ARM体系的虚拟机的构架实现 开题报告_第4页
免费预览已结束,剩余16页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

厦门大学软件学院毕业设计(论文)开题报告学生姓名 班级 学号 校内指导教师姓名 职称教授副教授所在单位厦门大学软件学院校外指导教师姓名职称毕业设计(论文)题 目基于ARM体系的虚拟机的构架实现毕业设计(论文)的目标:在晋通PC平台上实现ARMv4体系的虚拟机。随着时代的发展,嵌入式开发应用已经深入各个领域,前景十分看好。目前,嵌入式开发方式都以实际硬件为主,由于代价较高,不利于学习和开发调试,使得嵌入式开发门槛较高,难以普及。虚拟机是一项应用广泛的技术,它也早已在嵌入式开发中得到大量的应用。在嵌入式开发中,很多时候,我们只需要在虚拟机中调试我们的程序,就可以让程序很好地移植到实际硬件平台上执行。ARM系列CPU是目前最成功和最广泛地应用于嵌入式的CPU系列。我们的目标是实现一个基础的ARM体系的虚拟机。实现方法:我们的实现方式遵循从内部到外围逐渐完善的方式迭代完成整个虚拟机的开发。我负责MMU的模拟模拟ARM MMU1 MMU行为1.1 地址映射MMU支持基于段或页内存访问:段:由1MB块的内存组成,支持3种不同的页尺寸:n Tiny 页:由1KB块内存组成。n Small 页:由4KB块内存组成。n Large 页:由64KB块内存组成。MMU支持两级地址转换表:一级表:存有Section转换或者指向Second-level表二级表: 存有Large和Small页转换。有些类型二级表也可以完成Tiny页转换。转换表基地址:转换表基地址寄存器(CP15寄存器2)保存着一级表的物理地址。这个过程描述为:Function Translate (IN C,IN VA,OUT PA):SR;其中C为CPU状态,VA为待转换的虚拟地址,PA为结果物理地址,SR为返回的状态码。一级表转换:一级表转换过程如下:则一级表项地址为:(一级表项获取)A1=(R2 & 0xFFFFC000) | (VA & 0xFFF00000)18)其中:A1为结果地址,R2为CP15第2号寄存器得到的表项如下:一级表项描述符:这样需要执行(一级表项转换):If (A1 & 0x3) = 0x0 ThenSR=缺页异常ReturnElseif (A1 & 0x3) = 0x1 Then粗页表地址转换Elseif (A1 & 0x3) = 0x2 Then段地址转换Elseif (A1 & 0x3) = 0x3 Then细页表地址转换Endif其中,A1是取内存物理地址A1所存储的值。段地址转换:段过程转换如下:则物理地址为:PA1=(A1 & 0xFFF00000) | (VA & 0x000FFFFF)其中:PA1为结果地址,A1是取内存物理地址A1所存储的值粗页表转换粗页表转换如下:则二级表项物理地址为:A2=(A1 & 0xFFFFFC00) | (VA & 0x000FF000)10)其中:A2为结果地址,A1是取内存物理地址A1所存储的值细页表转换细页表转换如下:则二级表项物理地址为:A2=(A1 & 0xFFFFF000) | (VA & 0x000FFC00)8)其中:A2为结果地址,A1是取内存物理地址A1所存储的值二级表转换二级表项描述符:这样需要执行(二级表转换):If (A2 & 0x3) = 0x0 ThenSR=缺页异常ReturnElseif (A2 & 0x3) = 0x1 ThenLarge页地址转换Elseif (A2 & 0x3) = 0x2 ThenSmall页地址转换Elseif (A2 & 0x3) = 0x3 ThenTiny页地址转换Endif其中,A2是取内存物理地址A2所存储的值。Large页地址转换:Large页地址转换过程如下:则物理地址为:PA2=(A2 & 0xFFFF0000) | (VA & 0x0000FFFF)其中:PA2为结果地址,A2是取内存物理地址A2所存储的值Small页地址转换:Small页地址转换过程如下:则物理地址为:PA2=(A2 & 0xFFFFF000) | (VA & 0x00000FFF)其中:PA2为结果地址,A2是取内存物理地址A2所存储的值Tiny页地址转换:Tiny页地址转换过程如下:则物理地址为:PA2=(A2 & 0xFFFFFC00) | (VA & 0x000003FF)其中:PA2为结果地址,A2是取内存物理地址A2所存储的值1.2 权限检查访问权限检查:当需要时:对页表项的AP位进行检查,同时检查CP15寄存器1的S和R位来判定访问权限,如下:这个过程如下:(权限检查)AP=当前表项APS=R18R=R19M=0x1F;If AP=0x0 ThenIf S=0 AND R=0 ThenSR=访问异常ReturnElseif S=1 AND R=0 ThenIf C.CPSR & M = 0x10 Then用户模式SR=访问异常ReturnElseSR=只读ReturnEndifElseif S=0 AND R=1 ThenSR=只读ReturnElse if S=1 AND R=1 ThenSR=未定义ReturnEndifElseif AP=0x1 ThenIf C.CPSR & M = 0x10 Then用户模式SR=访问异常ReturnElseSR=读写ReturnEndifElseif AP=0x2 ThenIf C.CPSR & M = 0x10 Then用户模式SR=只读ReturnElseSR=读写ReturnEndifElseif AP=0x3 ThenIf C.CPSR & M = 0x10 Then用户模式SR=读写ReturnElseSR=读写ReturnEndifEndif页域检查:页域区分了页表的用户程序和管理程序,管理程序对页表的访问不受访问权限限制:这个操作即:(页域检查)AS=(R3(A1 & 0x1E0)5) & 0x3If AS=0x0 OR AS=0x2 ThenSR=域异常Elseif AS=0x1 ThenCA=TRUEElseif AS=0x3 ThenCA=FALSEEndif其中,CA为是否要检查访问权限异常中断MMU 故障MMU产生四中异常:对齐异常:转换异常页域异常权限异常3种内存系统访问可能导致异常行获取内存访问(无Cache和Buffer的访问)转换表访问故障地址寄存器和故障状态寄存器:异常发生时的故障地址寄存器和故障状态寄存器状态故障检查过程:故障检测过程如下:即:Function Translate (IN C,IN VA,OUT PA):SR;If R1 & 0x2 AND VA & 0x3ThenSR=对齐异常ReturnEndifA1=(R2 & 0xFFFFC000) | (VA & 0xFFF00000)18)If A导致外部异常 ThenSR=外部异常ReturnEndifIf (A1 & 0x3) = 0x0 ThenSR=缺页异常ReturnElseif (A1 & 0x3) = 0x1 ThenA2=(A1 & 0xFFFFFC00) | (VA & 0x000FF000)10)PT=TRUEElseif (A1 & 0x3) = 0x2 ThenPA=(A1 & 0xFFF00000) | (VA & 0x000FFFFF)PT=FALSEElseif (A1 & 0x3) = 0x3 ThenA2=(A1 & 0xFFFFF000) | (VA & 0x000FFC00)8)PT=TRUEEndifAS=(R3(A1 & 0x1E0)5) & 0x3If AS=0x0 OR AS=0x2 ThenSR=域异常ReturnElseif AS=0x1 ThenCA=TRUEElseif AS=0x3 ThenCA=FALSEEndifIf PT=FALSE ThenAP=(A1 & 0x00000C00)10ElseA2=(A1 & 0xFFFFF000) | (VA & 0x000FFC00)8)If A2导致外部异常 ThenSR=外部异常ReturnEndifIf (A2 & 0x3) = 0x0 ThenSR=缺页异常ReturnElseif (A2 & 0x3) = 0x1 ThenPA=(A2 & 0xFFFF0000) | (VA & 0x0000FFFF)AP=(A2(VA18)&0x3)4) & 0x00000003Elseif (A2 & 0x3) = 0x2 ThenPA=(A2 & 0xFFFFF000) | (VA & 0x00000FFF)AP=(A2(VA10)&0x3)4) & 0x00000003Elseif (A2 & 0x3) = 0x3 ThenPA=(A2 & 0xFFFFFC00) | (VA & 0x000003FF)AP=(A24) & 0x00000003EndifEndifIf CA ThenS=R18R=R19M=0x1F;If AP=0x0 ThenIf S=0 AND R=0 ThenSR=访问异常ReturnElseif S=1 AND R=0 ThenIf C.CPSR & M = 0x10 Then用户模式SR=访问异常ReturnElseSR=只读EndifElseif S=0 AND R=1 ThenSR=只读Else if S=1 AND R=1 ThenSR=未定义EndifElseif AP=0x1 ThenIf C.CPSR & M = 0x10 Then用户模式SR=访问异常ElseSR=读写EndifElseif AP=0x2 ThenIf C.CPSR & M = 0x10 Then用户模式SR=只读ElseSR=读写EndifElseif AP=0x3 ThenIf C.CPSR & M = 0x10 Then用户模式SR=读写ElseSR=读写EndifEndifReturn终止异常严重的不可恢复错误,发生环境由IMPLEMENTATION DEFINED。向量异常当处理器处于32为配置,26为指令执行模式时,向异常向量访问数据导致一个数据失败异常。MMU无效时由IMPLEMENTATION DEFINED引发。对齐故障取字地址要字对齐,取半字地址要半字对齐,否则此故障发生。转换故障转换表项中指定的缺页故障。域故障域导致的异常权限故障权限地址的异常外部异常外部内存访问导致的异常2 MCR、MRC指令与CP15寄存器MCR和MRC指令CP15的CDP、 LDC和STC指令都未定义汇编格式如下:MCR p15, 0, , , , MRC p15, 0, , , , CP15寄存器1读写时CRm和opcode2忽略且必须为0其中:M位:0=关闭MMU,1=使用MMUA为:0=不使用对齐故障检查,1=使用对其故障检查S为:系统保护位R为:ROM保护位CP15寄存器2即转换表基地址寄存器:读写时CRm和opcode2忽略且必须为0CP15寄存器3读写时CRm和opcode2忽略且必须为0CP15寄存器4:保留读写会导致不可预知的后果CP15寄存器5读写时CRm和opcode2忽略且必须为0其中:Domain:包含故障发生时的DomainStatus:指示故障类型,前面的表3-5详CP15寄存器6读写时CRm和opcode2忽略且必须为0其中:Fault address:保存故障发生时的访问的虚拟内存地址时间进度安排:2007年2月-2007年3月,理解毕业设计(论文)的任务,阅读有关文献,熟悉开发工具,提出系统的总体设计框架。2007年3月底,完成毕业设计(论文)开题报告。2007

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论