ARM的存储管理单元MMU_第1页
ARM的存储管理单元MMU_第2页
ARM的存储管理单元MMU_第3页
ARM的存储管理单元MMU_第4页
全文预览已结束

下载本文档

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

文档简介

ARM的储存管理单元MMUARM的储存管理单元MMUARM的储存管理单元MMU2021-01-1922:06:08MMU供给的一个重点服务是,能使各个任务作为独立的程序在其自己的私有储存空间运行.地点变换过程同意运转的多个程序使用同样的虚构地点,而各自储存在物理储存器的不一样地点.地区能够是活跃的,也能够是睡眠的:活跃地区包含目前系统正在使用的代码或数据;睡眠地区包含目前不使用,但可能在短时间内变成活跃的代码或数据.睡眠地区是被保护的,所以目前正在运转的任务是不可以接见的.MPU和MMU的主要差别是,MMU中增添了额外的硬件,以支持虚存.一个重定位寄存器只好变换一块储存空间.这块储存空间的大小由虚构地点的偏移量部分所占的位数所决定.ARM的MMU中暂时寄存变换数据的一组重定位寄存器其实是一个由64个重定位寄存器构成的全相联cache.这个cache就是变换旁路缓冲器--TLB.TLB缓存近来被接见的页的变换数据.MMU还使用主存中的表来寄存描绘系统顶用到的虚构储存器映照数据,这些变换数据的表就是页表.页表中的每个项代表了将虚构储存器的一个页变换到物理储存器的一个页帧所需要的全部信息.在MMU中,地区被定义为一组页表的会合,并作为虚存中的连续页完整由软件控制.除了L1一级页表外,全部其余的页表都代表虚存的1MB空间.假如一个地区的大小大于1MB或许它越过页表的1MB界限地点,那么就一定使用一组页表来描绘这个地区.页表能够驻留在储存器中,而不用映照到MMU硬件.当在2个应用程序任务间实现上下文切换时,办理器其实要发生多次上下文切换从用户模式任务切换到内核模式任务,以办理准备运转下一个应用程序任务时的上下文数

.它先据的挪动;而后,它从内核模式任务切换到下一个上下文的新的用户模式任务.MMU在变换一个地点时失败,就会产生一此中断异样.MMU只有在变换失败,权限错误和域错误时,才会中断.L1住页表包含2种种类的页表项:保存指向二级页表开端地点指针的页表项和保存用于变换1MB页的页表项.L1页表也称为段页表.当L1页表作为页目录时,其页表项包含的是1MB虚构空间的L2粗页表或L2细页表指针;当L1页表用于变换一个1MB的段时,其页表项包含的是物理储存器中1MB页帧的首地点.目录页表项和1MB的段页表项能够共存于L1主页表.CP15:c2寄存器保存变换表基地点TTB--指向L1主页表在虚存中的地点.TLB只支持两种种类的命令:消除TLB和锁定TLB中的变换数据.储存器接见时,MMU将虚构地点的一部分与TLB中的全部值进行比较.假如TLB中已有所要的变换数据,即为一次TLB命中,则由TLB供给物理地点的变换数据.假如TLB中不存在有效的变换数据,即为一次TLB无效,则MMU会由硬件自动办理TLB无效,经过主存中的页表搜寻有效的变换数据,并将其装入TLB的64行的一行.假如TLB中的某一行是锁定的,则当TLB消除命令发出时,它仍旧保存在TLB中.ARM

的储存保护单元

MPU2021-01-1922:03:38在受保护的系统中,主要有两类资源需要监督:储存器系统和外头设施.储存器中对区域的接见能够是读/写,只读或不行接见,鉴于当时的办理器模式--管理模式或用户模式,还有一些附带的权限.地区还有控制cache和写缓冲器属性的cache写策略.当办理器接见主存的一个地区时,MPU比较该地区的接见权限属性和当时的办理器模式.假如恳求切合地区接见标准,则MPU同意内核读/写主存;假如储存器恳求致使储存器接见违例,则MPU产生一个异样信号.地区与内核是冯.诺依曼构造仍是哈佛构造没关.每个地区经过0~7的号码来表记和引用.地区的属性以下:地区能够互相重叠;每个地区都分派有一个优先级,该优先级与分派地区的权限没关;当地区重叠时,拥有最高优先级的地区的属性能够覆盖其余地区的属性,优先级仅作用于重叠部分的地点;地区的开端地点一定是其大小的倍数;地区的大小能够是4KB~4GB之间的任何2的乘幂;接见所定义地区外的储存器将产生异样.假如是内核预取指令,则MPU产生预取指令中断异样;假如是储存器数据恳求,则产生数据中断异样.在启用储存器保护单元以前,一定起码定义一个数据地区和一个指令地区,并且一定在启用cache和写缓冲器以前(或同时)启用储存器保护单元.控制器经过设置CP15的主寄存器c1~5来配置MPU.经过配置寄存器c2和c3来设置地区的cache和写缓冲器的属性,寄存器c5控制地区的接见权限,在寄存器c6里有8个或16个次寄存器用来定义每个地区的大小和地点.初始化MPU,cache和写缓冲器需要以下步骤:使用CP15:c6来定义指令和数据地区的大小和地点使用CP15:c5来设置每个地区的接见权限(3)分别使用CP15:c2和CP15:c3来设置每个地区的cache和写缓冲器属性(4)使用CP15:c1来使能cache和MPU每个内核有3个CP15寄存器用来控制地区的cache和写缓冲器属性.此中CP15:c2:c0:0和CP15:c2:c0:1两个寄存器保存D-cache和I-cache地区属性;第三个寄存器,CP15:c3:c0:0用于保存地区写缓冲器属性,并应用于储存器数据地区.当配置数据地区时,地区的cache位和写缓冲器位一同决定地区的策略.写缓冲器位有2个用途:使能和禁止地区的写缓冲器和设置地区的cache策略.地区的cache位控制写缓冲器位的作用.当cache位为0时,写缓冲器位为1,则使能写缓冲器;写缓冲器位为0,则禁用写缓冲器.当cache位为1时,cache和写缓冲器都被使能,此时写缓冲器位决定cache策略.若写缓冲器位为0,则地区使用直写策略;若写缓冲器位为1,则地区使用回写策略.S3C2440从sd卡启动wince2021-04-1615:47:25经过一周的时间终于在s3c2440上把sdboot给跑起来了。整个任务是在已有的bootloader上(用usb线从pc下载的方式)改正以支持直接从sd卡上拷贝nk.nb0文件到内存并启动。相关sd卡驱动和fatfs的实现用了3个文件来实现。sdboot.c为sd的驱动(可理解为pdd)层,主要实现一些对sd控制器的配置以及一些基本sd命令的实现和对sd卡的操作。sdmmc.c实现了从sd卡读取nk并跳到内存去运转的代码(基本能够理解为sd驱动的mdd层)。sdfat.c文件就是实现fatfs的。mdd层经过fatfs来对pdd层操作以实现读取文件。在整个过程中碰到了好多问题,此刻列举以下:1)sd卡初始化问题配置gpio相关sd的功能:SDCMD,SDDAT[3:0]。使能CLKCON中的SDI位。时钟以及计算公式:SDIPRE=PCLK/(CLK)-1;INICLK=300000;SDCLK=24000000;MMCCLK=15000000cmd0-cmd55-cmd41-cmd2-cmd3-cmd7-cmd6-cmd172)对sd卡操作问题SD卡包含:一个表记寄存器CID,一个相应地点寄存器RCA,一个其余参数寄存器对sd卡的操作是驱动经过sdcontroller来发相应的命令以达到读写等操作的:发丧命令经过SDICmdCon[7:0]的除了开始2bit:CmdIndex搁置要发送的命令号;SDICmdCon[8]开始发丧命令来达成的。检测卡的插入,直接用中断引脚的电平来判断。判断插入的卡是不是sd卡,用命令cmd55和cmd41,由于mmc卡对cmd55不做回应。命令9就是获得sd卡中csd寄存器的值的,该值包含好多sd卡的信息,此中就有卡的容量。这个值在sd卡接收到cmd9以后会以response的形式寄存在sd控制器的ResponseRegister[0,1,2,3]中。在履行cmd9,cmd10等这样的命令的时候,卡的状态应当是不选中的,或直接在履行它们以前发送cmd7(0)不选中卡,否则的话会timeout。

sdSDI用cmd17来读取单个block的数据,该命令要带地点参数(该参数经过cmd3命令来获得),而后依据SDIDSTA和SDIFSTA状态值来从sd控制器的SDIDAT寄存器中读出要读的数据。该命令与cmd9相反,在履行它以前要选中卡。读完一个block以后要做一些善后工作,为下次读取做好准备,否则的话checkcmdend就要向来循环了。由于用的是每次都读一个block,并地点要以block对齐,这样就要考虑要读取的地点是不是blo

温馨提示

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

评论

0/150

提交评论