ARM9学习笔记之——MMU

发布者:devilcore最新更新时间:2016-05-09 来源: eefocus关键字:ARM9  MMU 手机看文章 扫描二维码
随时随地手机看文章
 我记得有一次我去应聘ARM-Linux软件工程师。结果被问到ARM中的虚拟内存是怎么管理的。由于我只对X86平台下的MMU了解,所以我被问倒了。原来我所学的只是皮毛。还有很多东西值得我去深入。要做ARM-Linux下的驱动,熟悉虚拟内存应该是必须的。

        ARM9中的虚拟内存是怎么实现的呢?以下是我的学习总结。

 

        ARM920T核是通过CP15来实现MMU机制的。

 

1. 关于地址

        要知道虚拟内存机制必须了解ARM9中的3种地址:VA(虚地址),MVA(修正后虚地址),PA(物理地址)

        1)VA,是程序中的逻辑地址,0x00000000~0xFFFFFFFF。

        2)MVA,由于多个进程执行,逻辑地址会重合。所以,跟据进程号将逻辑地址分布到整个内存中。MVA = (PID << 25)  | VA

        3)PA,MVA通过MMU转换后的地址。

        由2可知,地址位共32位,PID占7位,所以最多只能有 128 个进程。而每个进程可访问的地址位为25位,故只能分到 32MB 的地址空间。(注:不是物理内存空间)

        PID是存放在CP15协处理器的C13寄存器的高7位。

ARM9学习笔记之——MMU

2. 关于虚拟内存转换

        CP15从C2中获得页基址(TTB)。将 MVA 的高12位作为页表索引值。获得页表项:TTB [ MVA >> 20 ]。注意:页表项是32位的。

        从上可知,一个页表最多有4096个页表项,也就是4K。那么,每个页表项可以表示1MB的地址空间。

        得来的项表项分三种:

        1)段页描述符,直接指向1MB的内存空间。

        2)粗页描述符,有256个二级页表项,每个二级页表项指向4KB的内存空间。

        3)细页描述符,有1024个二级页表项,每个二级页表项指向1KB的内存空间。

 

  ## 粗页描述符中存放的是粗页表二级表的基址。 将MVA的[19~12]位用来进行二级页表查寻。粗页表二级表分两种:

        1)大页描述符,一个描述符可以对应64KB的内存地址,但16个二级描述符对应同一块内存。

        2)小页描述符,一个描述符只对应4KB的内存地址,每个二级描述符只对应一块内存。

  ## 细页描述符中存放的是细页表二级表的基址。将MVA的[19~10],共计10位用于进行二级页表索引。二级页表共1024个描述符。剩下的10位作为基址,可访问空间为1024B。

     

    如下是内存转换图:

 ARM9学习笔记之——MMU

思考:

        通过上面的学习,了解到ARM将4GB的地址访问空间分成128个32MB,每份供一个进程使用。如此以来,一个进程的地址访问空间只有32MB。如进程1的地址空间为[0x02000000~0x03FFFFFF]。如果超出这个范围,地址访问就是非法的。

        那ARM9在设计CP15时为什么不为每一个进程指定一个单独的页表。这样以来,每个进程就可以独地拥有4GB的地址空间。

ARM9学习笔记之——MMU

        如此以来,进程数就不再受限于128个,可以多达1024个进程。而每一个进程的虚拟地址的空间可以扩展到4GB。

关键字:ARM9  MMU 引用地址:ARM9学习笔记之——MMU

上一篇:ARM Cortex-M3 学习笔记(1)
下一篇:ARM9学习笔记之——SDRAM实验

推荐阅读最新更新时间:2024-03-16 14:53

基于ARM9的无线多床位心电监护仪的设计
1 引言 随着社会生活节奏加快、人口逐渐老龄化,心血管疾病已经成为同前威胁人类生命的丰要疾病之一,此类疾病往往具有突发性、短暂性和危险性的特点,如果不能及时发现并进行治疗将会产生非常严重的后果。心电图是检查.诊断和预防该类疾病的主要手段和依据,对于心肌梗塞、心律失常等症状,心电监护仪的使用贯穿于治疗、康复的整个过程。由于传统的基于PC机平台的心电躲护仪,价格昂贵,体积庞大,不便于移动且主要集中在大医院,给医生和病人带来了很大的不便。因此,为了降低成本、缩小体积,本文设计了一种基于ARM9微处理器的新型便携式多床位遥测心电监护仪。该监护仪采用Samsung公司的一款以ARM920T为控制器内核的16/32位高速处理器S3C2
[工业控制]
基于<font color='red'>ARM9</font>的无线多床位心电监护仪的设计
采用ARM9处理器S3C2410的数字多路语音记录器设计
1. 引言 数字多路语音记录器在安全、监控方面有很多应用。一些传统的设计方案基于工控机,用数据采集卡实现语音的A/D转换,用软件实现语音编解码,这种方案成本高、功耗大。如果采用嵌入式的设计方案,可以实现同样的功能,并且具有低成本,低功耗的特点。 普通的低成本嵌入式处理器性能不高,不足以实现多路语音的实时编码、解码,需要用专门的语音处理芯片完成这一工作。基于DSP自主设计语音编码器是一种方法,但工作量大。AC48304广泛应用于各种小型VOIP网关中,价格低廉,是一种很好的替代方案。同时AC48304还具有DTMF识别和静音检测等功能,便于实现电话号码识别和语音的自动记录。 ARM是一种应用广泛的嵌入式处理器,Samsung、
[单片机]
采用<font color='red'>ARM9</font>处理器S3C2410的数字多路语音记录器设计
ARM9的寄存器
CPSR寄存器(程序状态): T标志位:1:THUMB状态(指令16位半对齐) 0:ARM状态(指令32位对齐) I、F: 中断屏蔽位,把它们设置为1可以相应的屏蔽IRQ和FIQ中断 M4-M0: 处理器工作模式位,只能按照下列组合工作,其它的非法组合都会进入未知的状态,而导致处理器复位。
[单片机]
<font color='red'>ARM9</font>的寄存器
基于ARM9的自由摆平板控制板的设计及实现
本设计的重点在于通过加速度传感器MMA7455采集各关节处角度信息,并根据得到的角度值及任务要求控制步进电机的运转,完成自由摆臂末端平板姿态的调整,完成预定任务。通过MMA7455加速度传感器得到的是三轴加速度信息,而在实际控制过程中所需要的是角度信息,所以要用到三角函数完成加速度值到角度值的转换,其次实践证明MMA7455加速度传感器稳定性较差,需要通过滑动平均滤波算法对得到的三轴加速度值进行滤波处理,以达到精确控制的目的。而对于步进电机的精确控制则需要PID控制算法以去除控制过程中的抖动,达到自控系统“稳、准、快”的设计要求。综上所述,本系统中存在大量的数据运算及控制算法并且对实时性要求较高,因此选用主频高达400 MHz
[单片机]
基于<font color='red'>ARM9</font>的自由摆平板控制板的设计及实现
基于ARM9与LINUX的RS485总线的通信接口设计
  摘要:在ARM9处理器S3C2440上设计RS485通信接口,实现与总线上其他设备的通信,利用ARM9处理器内部集成的UART外设和RSM485CT模块组成RS485通信硬件接口,在嵌入式Linux系统下设计RS485通信程序实现与RS485总线上的其他外设间的数据互通。实验效果良好,表明该设计是行之有效的。文中在介绍了通信接口的硬件设计、Linux下RS485驱动设计、通信程序设计的同时,重点介绍了Linux系统下RS485通信程序的编写方法以及RS485总线上设备通信的实现过程。   0引言   随着ARM处理器应用的范围的不断深入,根据需求的不同ARM提供的外设也越来越丰富,常用的通信接口有RS232、RS485、C
[单片机]
基于<font color='red'>ARM9</font>与LINUX的RS485总线的通信接口设计
基于ARM9的嵌入式Zigbee网关设计与实现
引言 无线传感器网络(Wireless Sensor Network,WSN)是指由大量成本相对低廉的,具有感知能力、计算能力、实时通信能力的传感器节点组成的嵌入式无线网络,是当前众多领域的研究和应用热点。建立在IEEE 802.15.4(LR_WPAN,低速率无线个人区域网)上的Zigbee协议是应用于无线监测与控制的全球性无线通信标准,是无线传感器网络组网的首选技术之一。 随着Zigbee无线传感器网络技术的广泛应用,如何通过现有网络基础设施(如Internet、GPRS等)对其进行远程管理、控制感测环境中的各种传感装置,逐渐成为该领域的重要研究课题。图1给出了基于Zigbee的无线传感器网络体系结构,如图示Zig
[单片机]
基于<font color='red'>ARM9</font>的嵌入式Zigbee网关设计与实现
2410之MMU_Init()
/************************************************ NAME : MMU.C DESC : Revision: 2002.2.28 ver 0.0 ************************************************/ #include def.h #include option.h #include 2410addr.h #include 2410lib.h #include 2410slib.h #include mmu.h // 1) On ly the section table is used. // 2) The c
[单片机]
基于ARM9的数控铣床系统设计方案
引言 目前国内使用的数控系统通常是在通用计算机或工控机的基础上加装运动控制卡,使用Windows操作系统,并安装昂贵的数控软件构成的。这样的系统软件成本高、硬件资源浪费、功耗大。而嵌入式产品具有系统结构精简、功耗低等特点,能弥补传统数控系统的不足。免费软件Linux 操作系统进军嵌入式领域,更使得嵌入式产品能够充分发挥廉价、高性价比的优势。 本文所述的正是以Linux操作系统为软件平台,以ARM9微处理器为硬件平台,以数控铣床为背景,自主研发数控硬件及软件的嵌入式数控铣床控制系统。 1 系统硬件组成 系统的硬件由ARM系统主板和扩展板卡组成。 硬件结构如图1。 1.1 ARM系统主板 根据系统需要,主板上主要包括
[单片机]
基于<font color='red'>ARM9</font>的数控铣床系统设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved