1、Tiny4412的MMU和S3C6410都是一样的,以前的程序都可以运行,因为MMU有两个特点:
①MMU实在cp15协处理器里面操作的,协处理器由ARM公司统一设计,不会轻易变化,这部分代码和Samsung没有关系;
②MMU的功能就是把虚拟地址映射物理地址上去。
2、为什么裸机要讲MMU?
因为中断,ARM地址的布局。现在三星处理器地址的布局和以前不一样,以前S3C6410的0地址是可以选的,比如nand flash启动的时候0地址对应片内内存;nor flash启动的时候0地址对应nor flash的0地址。也就是0地址我们可以选择是ROM或者RAM,根据前面JZ2440和OK6410的中断实验可以看出我们把中断向量表放在0地址开始的地方,一旦发生异常就会自动跳到相应的中断入口地址处执行。我们想构建自己的异常向量表的时候可以切换为nand flash启动,nand flash启动的话RAM就是映射在0地址这个地方,RAM映射在0地址我们想构建自己的中断异常向量表的时候就把异常向量表放到RAM这,也就是重启开机的第一句代码都可以由我们自己写。
可是4412处理器不一样了,4412的0地址只能是ROM不能选择成RAM,0地址直接就是一个ROM,整个ARM一开机必须先执行它ROM里面的代码,它的ROM里的代码再去选择执行EMMC启动、USB启动、SD卡启动,这个时候异常向量表由ARM来决定,异常向量表依然在0地址,那这个时候构建自己的异常向量表还能不能下载到ROM里面呢?很显然ROM是不能更改的不能下载到ROM里面去,这就是要讲MMU的原因。
3、可以把异常向量表地址选成高地址0xFFFF0000,程序运行起来以后就往这跳,但是机器上并没有这个地址,就通过MMU来映射。
板子上的内存布局:0x40000000 - 0x80000000 共1G
uboot的链接地址(在uboot源码中修改过):0x43e00000
我们测试程序的时候就是用0x73000000的地方,不会把u-boot破坏掉。
4、tlb缓存的是虚拟地址和物理地址之间的对应关系;
5、icache、dcache也是缓存,但缓存的不是虚拟地址和物理地址之间的对应关系,ARM以前的版本缓存的是虚拟地址和数据的对应关系,在后面的物理cache上面缓存的是物理地址和内容的关系;
====================================================================
转载:http://blog.chinaunix.net/uid-28454895-id-3583559.html
MMU(Memory Management Unit,内存管理单元)在现代处理器中扮演着非常重要的角色。操作系统通过使用处理器的MMU功能,能实现以下功能:
1)虚拟内存。有了虚拟内存,可以在处理器上运行比实际物理内存大的应用程序。为了使用虚拟内存,操作系统通常要设置一个交换分区(通常是硬盘),通过将不活跃的内存中的数据放入交换分区,操作系统可以腾出其空间来为其它的程序服务。虚拟内存是通过虚拟地址来实现的。
2)内存保护。根据需要对特定的内存区块的访问进行保护,通过这一功能,我们可以将特定的内存块设置成只读、只写或是可同时读写。
MMU给我感觉是个很复杂的东西,网上看了一些资料,勉强知道了一些表面的东西。它有两个作用:
1、把虚拟地址映射到物理地址;
2、对内存访问提供控制机制。
我主要记录下我对映射表变换的理解。
在ARM中,MMU另外提供了一张映射表(MVA),用于程序虚拟地址(VA)到物理地址(PA)的映射。MVA称为变换后的VA。在程序运行时,CPU只看到VA,而MMU和cache们只看到PA和MVA。应该说,在进程运行切换过程中,映射关系是动态变化的,因为不同进程和内存之间需要不同的映射关系,就需要不断的重做映射表,这个代价是很大的。所以,有必要让映射表中需要更新的内容很少,以减少性能开支,这就出现了“变换后的”VA,即MVA,如果VA<32M,需要使用进程标识号PID(通过读CP15的C13获得)来转换为MVA。
VA与MVA的转换方法如下(这是硬件自动完成的):
if(VA < 32M)
MVA = VA | (PID<<25); //VA<32M,即PID*0x02000000作为该进程起始地址
else
MVA = VA; //VA>=32M
如:假设两个进程1、2运行时的VA都是0-32M,则他们的MVA分别是0x02000000-0x03ffffff、0x04000000-0x05ffffff,这样进程切换就省事多了,不必进行重建页表等工作。
但是,这同时带来了中断跳转的问题。当发生异常时,需要跳到0x0位置的异常向量表,这个0x0应该是VA,且小于32M,如果开启了MMU,就会被转换为MVA,而不同的PID产生不同的MVA,这就导致异常向量表的地址不统一了。所以,Linux采取了将0x0位置的向量表映射到高地址0xffff0000处,就没有上述的问题了,看了半天原来是这么回事。。。
接下来,就是MVA如何映射PA的工作。s3c2410的datasheet中说到4中映射方案,其中最方便的是段(section)操作,具体见《s3c2410 MMU》的后半文。
上一篇:Tiny4412异常处理
下一篇:tiny4412的Uboot启动流程
推荐阅读
史海拾趣
为了加速全球化进程,HBH-Microwave积极寻求与国际知名企业的合作。通过技术交流和联合研发,HBH与多家跨国公司建立了长期稳定的合作关系。这些合作不仅为公司带来了先进的技术和管理经验,也帮助HBH的产品成功打入国际市场,实现了销售额的快速增长。同时,HBH还通过参加国际展会和研讨会,不断提升品牌知名度和行业影响力。
随着国内市场的稳定发展,Chip Quik公司开始将目光投向国际市场。公司通过分析不同国家和地区的电子维修市场需求,制定针对性的市场策略。通过参加国际电子展会、建立海外销售渠道等方式,公司逐渐在国际市场上取得了一席之地。
随着科技的快速发展,电子设备的设计要求越来越高。DESIGNERSYSTEMS公司投入大量研发资源,不断推动技术突破。他们成功开发出一套高效、智能的设计软件,能够大大提高设计效率和精度。这一技术突破使得DESIGNERSYSTEMS在电子设备设计领域具备了更强的竞争力,吸引了更多客户的合作。
昭华公司一直注重品牌建设和市场拓展。他们通过参加各种行业展会、举办技术研讨会等方式,积极宣传公司的产品和技术优势。同时,昭华公司还加强了与客户的沟通和合作,深入了解客户需求并提供定制化的解决方案。这些努力使得昭华公司的品牌知名度不断提升,市场份额也逐渐扩大。
随着业务的不断发展,C-MAX Time Solutions公司开始寻求与行业内其他企业的战略合作。通过与一家知名通信设备制造商的合作,C-MAX成功将其时间同步技术融入对方的设备中,从而实现了产品的互补和市场的共同开拓。这一合作不仅拓宽了C-MAX的业务范围,也提高了其品牌在行业内的知名度和影响力。
随着AMD与英特尔公司竞相为其下一代多核处理器定义互连规则,一场有关计算机用处理器的激战正在悄然升级。两者都希望利用自己的互连标准编织单独的合作伙伴网,因为这将成为决定其在未来计算机行业取得胜利的关键。 在近日于旧金山举行的英特尔开发 ...… 查看全部问答∨ |
要完成从技术人员到老板的转变,需要做以下的思考: 1、管理知识的准备 1)老板角色代入体验 先做好几年的角色代入体验,代入到你现在公司的老板角色,看看他是如何处理问题的; 开会 忽悠(也叫做激励) 设计员工职业生涯 处理工作中 ...… 查看全部问答∨ |
压电式爆震传感器广泛应用于发动机机体或气缸的爆震检测中。汽车防爆震系统通过检测出压电传感器的电压值来判断爆震强度。 因此,功能完善、性能稳定、操作简单、测试精度高,可满足大批量生产测试需要的爆震传感 ...… 查看全部问答∨ |
纵观世界太阳能设备产业鼻祖也就三家:美国应用材料(AMAT)、爱发科(ULVAC,原日本真空)和瑞士Oerlikon。爱发科在FPD行业拥有丰富的经验,是日本能够设计和生产薄膜太阳能电池成套设备的最大的公司之一。爱发科在薄膜太阳能设备的发展领域早,是日本 ...… 查看全部问答∨ |
今天写了一个小程序,其中包括了按键和数码管,刚开始时一切正常,但是第二次用AS 下载时却发现数码管灭了,当时也没在意,然后再下一遍程序,数码管啥也不显示。最后我用最基本的 非门来验证,却发现所有没用的管脚都是3.2v。是不是我的芯片坏了 ...… 查看全部问答∨ |
|
我用的是WinCE5.0, HPC部分在explorerbase.rc增加自己的图片 a. 如果是sysgen或build sysgen生成的image,执行LoadImage自己的图片时,失败,GetLastError()返回1814 b. 如果是sysgen或build sysgen HPC,然后再make run-time ima ...… 查看全部问答∨ |
|
windows ce 安装盘需要哪些组件啊? 请求各位大侠帮帮忙了! windows ce 安装盘需要哪些组件啊 我想要购买一款windows ce 的安装盘,但是我是新手,不知道应该在这个安装盘中需要哪些组件。 比如需要BSP么 还有Platform Builder 这个是盘里面自带的么 请求各位大侠帮帮忙了… 查看全部问答∨ |