历史上的今天
返回首页

历史上的今天

今天是:2025年07月21日(星期一)

正在发生

2018年07月21日 | ARM学习之内存管理单元(MMU)

2018-07-21 来源:eefocus

今天在学习MMU时,学到了不少知识。现总结如下,一是加深印象;二是写出来希望能和大家交流学习。

1.MMU是什么? 
答:MMU是内存管理单元。如果MMU开启的话,它会把CPU发出的虚拟地址转化为物理地址,然后对实际的物理地址进行相应的读写操作。当然,它还有其他的作用,包括内存权限检查、Cache等。

2.虚拟地址是什么?为什么会出现虚拟地址? 
答:虚拟地址是CPU所“看到”的地址。它的所有与地址相关的操作用到的都是虚拟地址。那为什么会出现虚拟地址呢?我想,可能是这个原因:以前,还没有操作系统的时候,只有一个程序在CPU上跑,它占据了所有的内存空间(和现在的裸板程序差不多),只要程序所需要的的内存空间小于实际物理内存,那CPU就可以直接用物理地址操纵这个物理内存。但后来,随着多用户、多程序机制的出现,所有程序所需要的内存空间大于实际的物理内存,这样虚拟内存出现了,理论上,它使得每个程序可以具有同样大小的内存空间(理论上,最大可以为实际物理内存空间,具体的原理在此就不赘述了)。虚拟内存对应的就是虚拟地址,每个进程的虚拟地址空间可以是相同的(你可以在一个C语言中申请一个变量然后把它的地址打印出来,同时运行两次这个程序,你会发现这两个变量的地址是一样的),然后再通过MMU的作用把每个进程的虚拟地址,转化到实际的物理地址空间中。

3.MMU的地址映射(虚拟地址->物理地址)功能是如何实现的? 
答:其实总体上看很简单,一般来说采用的是类似与映射表的一种机制(专业上叫页表)。虚拟地址到物理地址的映射。简单来说,CPU发出的虚拟地址,MMU通过查询这种映射表把这种虚拟地址转化为物理地址。在ARM体系中,用的有段(一级页表)、大页、小页、极小页(二级页表)等页表类型。

4.运行地址和加载地址分别是什么意思,有什么区别? 
答:在ARM中,当程序被烧写到FLASH中,用的就是加载地址。是烧写到FLASH中的某地址上。当程序运行时,程序所处的地址就是运行地址,也叫做链接地址。在烧写ARM裸板程序时,如果在链接时,不指定链接地址的话,程序的加载地址就是链接地址。当指定了某段的链接地址时,运行到此段时,此段必须处在所指定的链接地址上,否则可能会出现程序崩溃(其实,如果指定段中不涉及到与位置相关的指令应该也没关系,因为与位置相关的指令使用的绝对地址,而与位置无关的指令使用的是相对地址。绝对地址和链接地址有关系,相对地址和链接没关系)。


推荐阅读

史海拾趣

Herley New York公司的发展小趣事

Hengstler GmbH在电子行业中的五个发展故事

故事一:从钟表工坊到工业计数器的先驱

Hengstler GmbH的故事始于1846年,当时创始人Johannes Hengstler在德国西南部的奥尔丁根镇开设了一家钟表工坊,专注于生产钟表弹簧。随着时间的推移,Hengstler逐渐扩展其业务领域。1926年,公司收购了Efunda公司的计数装置业务,这标志着Hengstler正式进入工业计数和控制元件领域。此后,Hengstler不断推出创新产品,如20世纪50年代发布的革命性“计数系统400”,这是一种带有插件系统的塑料计数系统,不仅功能强大,而且价格实惠,极大地推动了公司在市场上的地位。

故事二:技术革新与全球化布局

进入20世纪后半叶,Hengstler继续加大技术研发投入,并在全球范围内扩展其业务。1962年,公司在英国成立了第一家海外子公司,随后几年内,在法国、比利时、加拿大、意大利和日本等地也相继设立了分支机构。这些举措不仅增强了Hengstler的国际影响力,还使其能够更好地服务全球客户。同时,公司还引入了先进的生产设备和技术,如塑料注塑成型机,实现了塑料部件的大批量生产,进一步提升了产品质量和生产效率。

故事三:编码器技术的突破

在编码器技术方面,Hengstler也取得了显著成就。公司不断推出新型编码器产品,如光电增量型编码器RI58-O/RI58-T,其分辨率高达10,000脉冲和40,000步,防护等级达到IP67,广泛应用于各种工业场合。此外,公司还开发了重载磁性绝对值型编码器AR62/63,该编码器具有极高的抗冲击和抗振动能力,适用于恶劣环境下的使用。这些产品的推出不仅丰富了Hengstler的产品线,还进一步巩固了其在编码器领域的领先地位。

故事四:被丹纳赫收购后的新发展

1995年,Hengstler被美国丹纳赫公司收购,成为其旗下的一员。这一收购为Hengstler带来了更多的资源和支持,推动了公司的进一步发展。在丹纳赫的支持下,Hengstler加大了对新技术和新产品的研发力度,不断推出具有创新性和竞争力的产品。同时,公司还加强了与国际市场的联系和合作,进一步提升了其国际竞争力。

故事五:持续创新与客户服务

多年来,Hengstler始终坚持创新和服务至上的理念。公司不断投入研发资金,引进先进技术和设备,提升产品质量和生产效率。同时,公司还注重客户服务,建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。这些努力不仅赢得了客户的信任和好评,还使Hengstler在电子行业中保持了良好的声誉和地位。如今,Hengstler已成为全球领先的工业计数和控制元件制造商之一,其产品广泛应用于自动化技术、风力发电机、商用车辆、售票机和医疗等领域。

Cogent_Computer_Systems公司的发展小趣事

在追求经济效益的同时,Cogent_Computer_Systems公司也积极履行社会责任。公司关注环保、节能等社会问题,并在产品设计和生产过程中积极采用环保材料和技术。此外,公司还积极参与公益活动,为社会做出贡献。这些举措不仅提升了公司的社会形象,也赢得了消费者和公众的尊重和认可。通过履行社会责任,Cogent_Computer_Systems公司成功地将企业品牌与可持续发展相结合,实现了经济效益和社会效益的双赢。

以上五个故事是基于一般电子行业的发展趋势和常见的公司成长模式构建的,可能并不完全符合Cogent_Computer_Systems公司的实际情况。如需了解该公司具体的发展故事,建议查阅相关新闻报道、公司年报或行业分析报告等权威资料。

Connection One公司的发展小趣事

随着技术的不断成熟,Connection One公司开始寻求与其他企业的战略合作。通过与全球知名的电子设备制造商合作,公司的芯片产品得以广泛应用于各类电子设备中。这种合作不仅拓展了公司的市场份额,还提升了其品牌知名度。

常州星海电子(Starsea)公司的发展小趣事

随着市场需求的不断变化和消费者需求的多样化,常州星海电子不断调整和优化产品结构。公司现已形成了包括普通整流、开关、快速恢复、高效率、超快速、肖特基、双向触发管、整流桥、高反压以及瞬间突波电压吸收、稳压等多种系列、多种封装形式的二极管产品。这些产品广泛应用于电脑、家电、邮电通讯等行业,为公司赢得了广阔的市场空间。

BTCPower公司的发展小趣事

随着技术的不断成熟和产品的广泛应用,BTCPower开始寻求更广阔的市场空间。公司积极与国际知名电子品牌进行合作,将其产品推向全球市场。通过与这些品牌的合作,BTCPower不仅提升了自身的品牌知名度,还获得了更多的商业机会和市场份额。

亿宝科技(CNIBAO)公司的发展小趣事

品质是亿宝科技的生命线。公司始终坚持严格的质量管理体系,从原材料采购到生产流程,再到成品检验,每一个环节都严格把控。在一次客户反馈中,亿宝科技发现某批次产品存在细微的质量问题。公司立即启动紧急预案,召回所有相关产品并进行全面检查。经过一系列的改进措施,亿宝科技成功解决了问题,并赢得了客户的信任和好评。

问答坊 | AI 解惑

低压大电流开关电源的设计

1 引言       为了以更低的功耗获得更高的速度和更佳的性能,要求电源电压越来越低,瞬态性能指标越来越高,因此对开关电源提出了越来越高的要求。用原有的电路拓扑及整流方式已不能满足现在的要求,为了适应IC芯片发展的需要,人们开始研 ...…

查看全部问答>

飞思卡尔单片机ps2键盘demo

原文见我在ednchina的博客:http://blog.ednchina.com/bluehacker/240730/Message.aspx这个程序是NSS08Kit-R1开发板上的PS2接口演示程序,通过PS2接口连接普通PC键盘,MC9S08AC16读用户按键的值。 下面是ps2keyboard.c文件,驱动程序 /****** ...…

查看全部问答>

基于Z i gBee无线单片机CC2480的智能家庭

摘要:文章针对智能家庭系统的控翻R络相关技术进行研究,提出一种基于ZigBee技术的智镌家庭无线一络的构建方案,并进行了系统设计。…

查看全部问答>

FPGA控制DM9000A进行以太网数据收发的Verilog实现

FPGA控制DM9000A进行以太网数据收发的Verilog实现…

查看全部问答>

430单片机看门狗定时器

#include   unsigned int tt=0; void main(void) {                            WDTCTL = WDT_MDLY_32;      &n ...…

查看全部问答>

如何在wince系统的PDA上 写usb摄像头驱动啊

要在wince 上面实现外置usb摄像头功能,如何才能实现 好多摄像头都没有提供wince下的驱动程序,是否要自己编写 思路要怎样?…

查看全部问答>

无法识别的USB设备

    我在万利开发板上改的JOYSTICK DEMO运行正常,移植到自己的板子上USB连不上,芯片用的是STM32F103T8U6,观察D+ D-Pin可看到约1ms间隔的数据脉冲,互为反相,D+也通过1.5K电阻上拉到3.3V,但似乎未产生US ...…

查看全部问答>

菜鸟问问题

我现在用DZ96的学习板,试了一下CAN 程序,两块学习板之间可以连通,学习板和自己画的板之间就不能连通了 我看了程序发现没有MCG时钟设置,那么应该说明它是用的内部时钟,我找了一天的数据手册也不知道内部时钟的频率是多少或是该怎么计算 请问 ...…

查看全部问答>

搞MCU的耗时两周写了一个串口的MFC , 没有自己想的那么简单

本帖最后由 点创@布丁 于 2016-12-30 23:37 编辑        最近在做一个小产品,要是有个上位机的小软件 可以方便产品调试与测试。虽然以前从来没有从头到尾的做过这样的工作。可自己还是感觉都是控件的应该没有那么难吧,何况 ...…

查看全部问答>