今天在学习MMU时,学到了不少知识。现总结如下,一是加深印象;二是写出来希望能和大家交流学习。
1.MMU是什么?
答:MMU是内存管理单元。如果MMU开启的话,它会把CPU发出的虚拟地址转化为物理地址,然后对实际的物理地址进行相应的读写操作。当然,它还有其他的作用,包括内存权限检查、Cache等。
2.虚拟地址是什么?为什么会出现虚拟地址?
答:虚拟地址是CPU所“看到”的地址。它的所有与地址相关的操作用到的都是虚拟地址。那为什么会出现虚拟地址呢?我想,可能是这个原因:以前,还没有操作系统的时候,只有一个程序在CPU上跑,它占据了所有的内存空间(和现在的裸板程序差不多),只要程序所需要的的内存空间小于实际物理内存,那CPU就可以直接用物理地址操纵这个物理内存。但后来,随着多用户、多程序机制的出现,所有程序所需要的内存空间大于实际的物理内存,这样虚拟内存出现了,理论上,它使得每个程序可以具有同样大小的内存空间(理论上,最大可以为实际物理内存空间,具体的原理在此就不赘述了)。虚拟内存对应的就是虚拟地址,每个进程的虚拟地址空间可以是相同的(你可以在一个C语言中申请一个变量然后把它的地址打印出来,同时运行两次这个程序,你会发现这两个变量的地址是一样的),然后再通过MMU的作用把每个进程的虚拟地址,转化到实际的物理地址空间中。
3.MMU的地址映射(虚拟地址->物理地址)功能是如何实现的?
答:其实总体上看很简单,一般来说采用的是类似与映射表的一种机制(专业上叫页表)。虚拟地址到物理地址的映射。简单来说,CPU发出的虚拟地址,MMU通过查询这种映射表把这种虚拟地址转化为物理地址。在ARM体系中,用的有段(一级页表)、大页、小页、极小页(二级页表)等页表类型。
4.运行地址和加载地址分别是什么意思,有什么区别?
答:在ARM中,当程序被烧写到FLASH中,用的就是加载地址。是烧写到FLASH中的某地址上。当程序运行时,程序所处的地址就是运行地址,也叫做链接地址。在烧写ARM裸板程序时,如果在链接时,不指定链接地址的话,程序的加载地址就是链接地址。当指定了某段的链接地址时,运行到此段时,此段必须处在所指定的链接地址上,否则可能会出现程序崩溃(其实,如果指定段中不涉及到与位置相关的指令应该也没关系,因为与位置相关的指令使用的绝对地址,而与位置无关的指令使用的是相对地址。绝对地址和链接地址有关系,相对地址和链接没关系)。
关键字:ARM 内存管理单元 MMU
引用地址:
ARM学习之内存管理单元(MMU)
推荐阅读最新更新时间:2024-03-16 16:09
一文看懂arm架构和x86架构有什么区别
本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能、扩展能力、操作系统的兼容性、软件开发的方便性及可使用工具的多样性及功耗这五个方面详细的对比了arm架构和x86架构的区别,具体的跟随小编一起来了解一下。 什么叫arm架构 ARM架构过去称作进阶精简指令集机器(AdvancedRISCMachine,更早称作:AcornRISCMachine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。 在今日,ARM家族占了所有32位嵌入式处理器75
[单片机]
嵌入式处理器ARM(Advanced RISC Machines)技术及芯片
ARM (Advanced RISC Machines)公司从1991年推出第一种嵌入式RISC内核ARM6开始至今,经过十年多坚持不懈的打造,ARM已成为世界领先的嵌入式RISC处理器知识产权(IP)提供商。ARM公司是一个概念创新的公司,它首先提出知识产权公开出售授权的概念,它既不生产芯片,也不销售芯片,它的商业模式是搞设计和卖方案,它通过对数字电子公司在广泛的应用中使用高性能、低价格、低功耗的微处理器和系统芯片进行授权而获利。ARM公司也出售软件和开发系统,还提供咨询、技术支持、维护和培训服务,以加快大家对ARM体系结构和产品的认知和接受,从而改变了世界半导体行业的格局。它借助于拥有的强大技术优势,在世界范围内与许多业界领先的
[单片机]
将ARM版Android用于非智能手机应用
Android操作系统此前主要被用于 智能手机 和平板等移动设备,现在它将进入更多市场。ARM处理器开发者倾向于利用Android的灵活性、性能和多功能性。基于开源Linux内核的Android系统依然保留了开源软件的很多特性,即便在Google收购Android以后,它也只是蜕变为混合模式——鉴于开源和商业之间的操作系统。Android1的优势在于没有授权费而且可以免于开源社区的索取。Android已经预配了强大的功能,Google定义了该操作系统的中间件、多媒体框架以及关键系统固件,这和需要开发者自行集成功能至开源内核的其它Linux系统不一样。 截至2011年10月,Android智能手机应用数量已经突破40万个,
[单片机]
孙正义:20年内ARM芯片年产量可达1万亿片
软银集团股份有限公司(SoftBank Group Corp., 9984.TO)首席执行长孙正义(Masayoshi Son)周四表示,预计未来20年内ARM Holdings PLC (ARM.LN)芯片的年产量将达到1万亿片。此前软银宣布将收购这家英国芯片设计商。
孙正义在东京的一个软银活动上发表演讲时称,20年内,ARM架构将分布在全球各地的1万亿片芯片中,这些芯片用于迅速收集所有的实时数据。
孙正义表示,去年ARM芯片约150亿片,意味着全世界平均每个人拥有2片ARM芯片。
孙正义周四称,软银专注于三大领域:人工智能、智能机器人和“物联网”。
孙正义周四还宣布,软银和本田汽车(Honda Motor
[手机便携]
移植 libxml2-2.9.4 到arm
一、环境介绍 1.1 宿主机 Ubuntu 1404 32 位 1.2 嵌入式平台 ATMEL AT91SAM9X25 1.3 交叉工具链 arm-none-linux-gnueabi libxml2-2.9.4移植所需源码包下载地址 二、交叉编译 2.1 先编译 libxml2-2.9.4 依赖的模块 2.1.1 libicobv tar xvf libiconv-1.15.tar.gz cd libiconv-1.15/ ./configure --prefix=$PWD/tmp --host=arm-none-linux-gnueabi --build=i686-linux make V=s make in
[单片机]
在ARM开发环境下C语言的设置堆栈指针和清理BSS段的作用概述
以前稍微写过操作系统上的C程序,感受不出来:BSS段,堆栈的意义。到了在单片机上写程序也没有考虑这些问题。但是到了ARM上环境似乎没有那么简单了,C的环境要自己来创建,不然就不能用。这也深刻的感受到了C语言中原来难以理解的概念。 裸机建立C语言环境-设置堆栈指针 这个是使用C语言的首要条件,不过这个就是指定一个sp指针就可以了,很简单的。ldr sp, =4096。 裸机建立C语言环境-清理BSS段 如果C语言中用到的全局变量或者静态变量,这个编译的时候是把它们放到了BSS段,这个段在内存中。怎么建成的?手动写一个链接脚本,添加__bss_start __bss_end变量来表示BSS段的开始和结束。如下: SECTION
[单片机]
ARM与TSMC完成首件20纳米ARM Cortex-A15 处理器设计定案
ARM公司与TSMC日前共同宣布,已顺利完成首件采用20纳米工艺技术生产的ARM Cortex-A15 处理器设计定案(Tape Out)。藉由TSMC在开放创新平台上建构完成的20纳米设计生态环境,双方花费六个月的时间即完成从缓存器转换阶层(RTL)到产品设计定案的整个设计过程。
随着设计定案的完成,ARM公司将提供优化的架构,在TSMC特定的20纳米工艺技术上提升产品的效能、功率与面积(performance, power and area),进而强化Cortex-A15处理器优化套件(Processor Optimization Pack)的规格。相较于前几世代工艺技术,TSMC的20纳米先进工艺技术可提升产品
[工业控制]
基于ARM Cortex-M3的多路数据采集系统的设计
0 引言 数据采集系统是将采集传感器输出的温度、压力、流量、位移等模拟信号转换成计算机能识别的数字信号,进行相应的计算存储和处理;同时,可将计算所得的数据进行显示或打印,以便实现对某些物理量的监测和控制。 嵌入式系统是以应用为中心,以计算机为基础,软硬件可剪裁,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统的核心是各种类型的嵌入式处理器。目前,采用ARM技术的微处理器占据了主流,其应用遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场。而 ARM微处理器的Cortex系列专为安全要求较高的应用而设计。其中,Cortex-M3适于高性能、低成本需求的嵌入式应用。 1 多路数
[单片机]