如下是ADS下的boot的MMU.c的MMU初始化代码。在2440init.S中跳入Main,这个Main函数在U2440mom.c中实现,这个Main函数包括了对端口,中断服务,MMU,VGA等的初始化函数的调用。MMU.c中进行了MMU的初始化,其中调用了很多初始化函数,使用汇编写的,确切的说是用协处理指令写的。这些函数的声明部分在2440slib.h,实现在2440slib.c中。在MMU的初始化程序MMU_Init中,首先禁止了Dcache,Icache,清除了Dcache和Icache。禁止了MMU,TLB。然后对存储系统进行了虚拟地址到物理地址的映射。然后设置了转化表的基地址,设置了域,开启了MMU,Icache,Dcache。
void MMU_Init(void)
{
int i,j;
//========================== IMPORTANT NOTE =========================
//The current stack and code area can't be re-mapped in this routine.
//If you want memory map mapped freely, your own sophiscated MMU
//initialization code is needed.
//===================================================================
MMU_DisableDCache();
MMU_DisableICache();
//If write-back is used,the DCache should be cleared.
for(i=0;i<64;i++)
for(j=0;j<8;j++)
MMU_CleanInvalidateDCacheIndex((i<<26)|(j<<5));
MMU_InvalidateICache();
#if 0
//To complete MMU_Init() fast, Icache may be turned on here.
MMU_EnableICache();
#endif
MMU_DisableMMU();
MMU_InvalidateTLB();
//MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
//MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_CNB); //bank0
if(rBWSCON&0x6)//nor启动
MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_NCNB); //bank0
else//nand 启动
MMU_SetMTT(0x00000000,0x00001000,0/*(int)__ENTRY*/,RW_CB); //bank0
//MMU_SetMTT(0x04000000,0x07f00000,0,RW_NCNB); //bank0
MMU_SetMTT(0x08000000,0x0ff00000,0x08000000,RW_NCNB); //bank1
MMU_SetMTT(0x10000000,0x17f00000,0x10000000,RW_NCNB); //bank2
MMU_SetMTT(0x18000000,0x1ff00000,0x18000000,RW_NCNB); //bank3
//MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CB); //bank4
MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_NCNB); //bank4 for STRATA Flash
MMU_SetMTT(0x28000000,0x2ff00000,0x28000000,RW_NCNB); //bank5
MMU_SetMTT(0x30000000,0x30100000,0x30000000,RW_CB); //bank6-1 1
MMU_SetMTT(0x30200000,0x33e00000,0x30200000,RW_NCNB); //bank6-2 60
//
MMU_SetMTT(0x33f00000,0x33f00000,0x33f00000,RW_CB); //bank6-3
MMU_SetMTT(0x38000000,0x3ff00000,0x38000000,RW_NCNB); //bank7
MMU_SetMTT(0x40000000,0x47f00000,0x40000000,RW_NCNB); //SFR 127
MMU_SetMTT(0x48000000,0x5af00000,0x48000000,RW_NCNB); //SFR 303
MMU_SetMTT(0x5b000000,0x5b000000,0x5b000000,RW_NCNB); //SFR
MMU_SetMTT(0x5b100000,0xfff00000,0x5b100000,RW_FAULT);//not used
MMU_SetTTBase(_MMUTT_STARTADDRESS);
MMU_SetDomain(0x55555550|DOMAIN1_ATTR|DOMAIN0_ATTR);
//DOMAIN1: no_access, DOMAIN0,2"15=client(AP is checked)
MMU_SetProcessId(0x0);
MMU_EnableAlignFault();
MMU_EnableMMU();
MMU_EnableICache();
MMU_EnableDCache(); //DCache should be turned on after MMU is turned on.
}
for(i=0;i<64;i++)
for(j=0;j<8;j++)
MMU_CleanInvalidateDCacheIndex((i<<26)|(j<<5));
MMU_InvalidateICache();
这里是因为ARM920T有64路,每路有8个组。所以。。。为什么要i<<26,j<<5呢,看下图便知
这是一个MMU的虚拟地址向物理地址映射的函数。通过上边的调用可以看到物理地址和虚拟地址的地址是相同的,那为什么还要开MMU呢,不是多此一举吗,Dcache的开启必须在MMU开启后才能开启,Icache不受MMU影响。开启Cache对系统性能会有很大提升。所以,哈哈。这里_MMUTT_STARTADDRESS是转换表的基址,因为没有使用复杂的操作系统,所以只使用了一级页表,每个页表项对应的是一个1MB的段。pTT=(U32 *)_MMUTT_STARTADDRESS+(vaddrStart>>20);相当于获得相应的页表项。看一下下图就会明白。nSec=(vaddrEnd>>20)-(vaddrStart>>20);这句是计算有几个段。for(i=0;i<=nSec;i++)*pTT++=attr |(((paddrStart>>20)+i)<<20);分别映射每段。Attr是域。
void MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
{
volatile U32 *pTT;
volatile int i,nSec;
pTT=(U32 *)_MMUTT_STARTADDRESS+(vaddrStart>>20);
nSec=(vaddrEnd>>20)-(vaddrStart>>20);
for(i=0;i<=nSec;i++)*pTT++=attr |(((paddrStart>>20)+i)<<20);
}
这里就不列出那些被调用的汇编代码,这个是飞凌的boot,网上好多人说没开MMU,真是误人子弟啊。
ADS下bootloader之MMU研究
- ADS1220(125084)
- bootloader(45027)
- MMU(17888)
相关推荐
对于系统启动,bootloader的功能的简单分析
(因为没有去映射,直接输出到地址线上了),mmu可以当坐中间的翻译,系统上电后,cpu自然要从某一处读指令,那么我们要做的就是把初始化系统的代码(请允许我叫他bootloader)放在那,
2018-02-05 10:23:2310530
什么是Bootloader 浅谈STM32中bootloader的内存分配
1. 什么是Bootloader Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统
2021-02-15 06:10:0015652
为什么没有MMU就无法运行Linux系统呢?
MMU(Memory Management Unit,内存管理单元)是一种硬件模块,用于在CPU和内存之间实现虚拟内存管理。
2023-08-03 10:05:00473
Bootloader驱动相关代码
S32K144提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助
2021-08-17 06:17:02
MMU的TabIndex的问题
*(pTtb + (va >> 20)) = (pa & 0xfff00000) | MMU_SECDESC_WB;为什么是右移20位而不是va >> 20 >
2019-06-25 05:23:33
MMU的产生及MMU工作过程详解
MMU的调度下是如何进行映射的: 在这个例子中我们有一台可以生成16位地址的机器,它的虚拟地址范围从0x0000~0xFFFF(64K),而这台机器只有32K的物理地址,因此他可以运行64K的程序,但
2018-07-03 08:19:31
研究下stm32基于BootLoader的IAP功能
近期想研究下stm32基于BootLoader的IAP功能,要想实现这个,必须先搞明白程序跳转,在真正开搞前折腾了半晚上,完成了程序跳转的简单测试。stm32代码下载到0x8000000开始的地址
2021-12-21 06:44:10
AVR之BOOTLOADER技术详解
本帖最后由 一只耳朵怪 于 2018-6-26 10:42 编辑
AVR之BOOTLOADER技术详解 ATmega128具备引导加载支持的用户程序自编程功能(In-System
2018-06-26 06:22:07
AVR和STM32的bootloader机制记录和讲解
基于STM32F10X系列通用OTA bootloader原理、移植与使用全指南 写在前面这几天我都做了什么呢?有什么感受?写在前面从2020.1.26到2020.1.30这5天,我的较多研究精力
2021-12-09 07:37:23
STM32F407的系统bootloader之串口IAP固件升级
STM32F407的系统bootloader之串口IAP固件升级,STM32F407的系统bootloader之串口IAP固件升级本章节为大家讲解使用系统bootloader做程序升级的方法,即使
2021-08-10 07:26:18
STM32H7的系统bootloader之串口IAP固件升级
第69章 STM32H7的系统bootloader之串口IAP固件升级本章节为大家讲解使用系统bootloader做程序升级的方法,即使不依赖外部boot引脚也可以方便升级。IAP的全称是In Application Programming...
2021-08-20 06:04:02
arm_mmu详细图解
arm_mmu详细图解arm_mmu详细图解arm_mmu详细图解arm_mmu详细图解arm_mmu详细图解arm_mmu详细图解arm_mmu详细图解arm_mmu详细图解arm_mmu详细图解
2009-11-21 23:58:12
linux 下 SD卡烧写bootloader不成功
linux 下 SD卡烧写bootloader不成功,出现:the bootloader size is not 264K提示卡是新买的4G卡
2013-09-26 16:32:46
vivi-bootloader
新人,正在学习arm9.裸板硬件基本都学的差不多了,正在接触软件,看视频第一个就是vivi-bootloader。现有几个疑问想请教:1.vivi程序重要吗?如果想研究底层,需要对源码进行分析
2014-02-22 09:24:33
【OK210试用体验】简易Bootloader的实现
。us5pv210.icf,IAR下链接文件,指定板载内存范围,代码以及RAM等布局。这里笔者说明一下,在建立c运行环境之前的Bootloader代码均是地址无关的,CPU上电后会加载部分的Bootloader代码到内部
2015-07-26 12:01:24
为什么mmu代码改成在ADS环境下编译并下载到nandFLASH中一直出不来效果?
我把书中光盘里hardware目录中的mmu代码改成在ADS环境下编译并下载到nandFLASH中一直出不来效果,现在有两个疑问!请大家伙帮个忙哈!感激涕零哈(1)编译led.c的时候:总是在
2019-07-11 05:45:22
使用MMU进行多用户场景下的FLASH分区保护
或修改其它用户区的FLASH内容。我们可以使用国民技术MCU内置的MMU,将FLASH主存储区的区域进行划分和设置访问权限,同时可保护各个应用存储区域内的代码与数据不被非法访问及篡改,并指示出存储器
2022-11-02 06:45:02
使用系统bootloader做程序升级的方法
第29章 STM32F407的系统bootloader之USB DFU方式固件升级本章节为大家讲解使用系统bootloader做程序升级的方法,即使不依赖外部boot引脚也可以方便升级。DFU的全称
2021-08-10 06:31:55
使用系统bootloader做程序升级的方法
第29章 STM32F429的系统bootloader之USB DFU方式固件升级本章节为大家讲解使用系统bootloader做程序升级的方法,即使不依赖外部boot引脚也可以方便升级。DFU的全称
2021-08-10 08:15:24
使用系统bootloader做程序升级的方法
第30章 STM32F429的系统bootloader之串口IAP固件升级本章节为大家讲解使用系统bootloader做程序升级的方法,即使不依赖外部boot引脚也可以方便升级。IAP的全称
2021-08-10 06:29:51
使用系统bootloader做程序升级的方法
第68章 STM32H7的系统bootloader之USB DFU方式固件升级本章节为大家讲解使用系统bootloader做程序升级的方法,即使不依赖外部boot引脚也可以方便升级。DFU的全称是Device Firmware Upgrad...
2021-08-20 06:32:39
关于页表和MMU的问题
刚开始学,好多东西都云里雾里的TT为什么在bootloader里要进行页表初始化然后开启MMU,然后在进入内核后还要创建页表开启MMU?这两个有什么不一样么?s3c2410,bootloader用的是vivi-0.1.4,kernel是linux-2.6.14望赐教。
2013-05-06 17:25:50
如何配置MMU page table walk的访问属性
的页表项可以在cache中缓存如何配置MMU page table walk的访问属性如果需要在MMU enable的情况下,运行时修改页表项。如上所述,因为MMU page table walk
2022-10-24 15:45:24
嵌入式Linux中的bootloader
一、bootloader: 它就是一个稍微复杂的裸板程序。但是要把这裸板程序看懂写好一点都不容易。Windows下好用的工具弱化了我们的编程能力。很多人一玩嵌入式就用ADS、KEIL。你能回答这几
2017-11-10 21:29:08
嵌入式中ARM的MMU和Cache机制
)集成了MMU是其最大的卖点;有了MMU,高级的操作系统(虚拟地址空间,平面地址,进程保护等)才得以实现。二者都挺复杂,并且在920T中又高度耦合,相互配合操作,所以需要结合起来研究。同时,二者的操作
2017-08-19 22:42:08
有哪位大侠用过TI公司的ADS1232或ADS1230没
新手做一个实验板,用TI公司的ADS1232采集信号进入ATMEG32显示,研究了一段时间,对程序还是无从下手,也没法验证硬件是否有无问题,有做过的大侠麻烦提供个简单例程,指导下,先谢过
2013-04-01 15:28:17
有对MMU比较了解的吗?
我最近在写一个MMU的裸机程序,但是无论怎么映射都不行,一旦开启MMU,程序就会卡住。我想问的是写MMU的程序对链接脚本和程序本身有什么特别的要求吗?我的映射代码如下(0~0x60000000全部
2014-01-10 21:43:32
有没有方法单独测试ARM920T的MMU和Cache?
ARM9的MMU和Cache运作机理,翻阅了不少资料,也理解了一点原理,没看到这方面的单独测试方法,也没有真正明白其原理,大部分说操作系统使用这功能,一直苦于没法研究最底层运作.不用操作系统就没法
2008-07-14 14:11:03
求分享CH573F bootloader引导用户app的例程
最近在学习研究BootLoader+APP烧入单片机,想的是BootLoader存入地址0x00000000,APP程序地址为0x00004000,由BootLoader跳转至地址
2022-08-24 06:56:56
浅析ARMv7-A体系架构下的MMU的基本原理
。MMU 主要功能之一是虚拟地址到物理地址的转换,这个需要软件和硬件配合完成,软件需要针对不同的硬件进行策略。这里主要分析 ARMv7-A 体系架构下的 MMU 的基本原理。VMSA 是针对
2022-05-24 16:54:31
请问谁有关于ADS1299寿命问题的相关测试研究及报告?
请问, 关于ADS1299的寿命,官方是否有相关测试研究及报告?能否发给一份?谢谢! e-mail:xiaochow650@qq.com
2019-06-20 12:17:45
基于ARM核的Bootloader代码的分析与设计
Bootloader 是系统上电或复位后首先运行的一段代码,Bootloader 代码(即启动代码)的好坏对整个系统的运行效率有着重要的影响, 而Bootloader 代码与芯片的特性有着紧密的联系。本
2009-08-15 09:45:3147
ADS5481/ADS5482ADS5483,pdf (16
The ADS5481/ADS5482/ADS5483 (ADS548x) is a 16-bit family of analog-to-digital converters (ADCs
2010-06-03 16:01:5719
ADS1146/ADS1147/ADS1148,pdf (1
The ADS1146, ADS1147, and ADS1148 are highly-integrated, precision, 16-bit analog-to-digital
2010-06-03 17:04:5459
ADS1113/ADS1114/ADS1115,pdf (U
The ADS1113, ADS1114, and ADS1115 are precision analog-to-digital converters (ADCs) with 16 bits
2010-06-03 17:10:2278
ADS6145/ADS6144/ADS6143/ADS614
ADS6145/ADS6144/ADS6143/ADS6142 (ADS614X) are a family of 14-bit A/D converters with sampling
2010-06-04 10:29:1920
ADS5525IRGZT:高性能模数转换器的技术之巅
ADS5525IRGZT:高性能模数转换器的技术之巅在数字信号处理的世界中,模数转换器(ADC)扮演着至关重要的角色。它们是将连续的模拟信号转换为离散的数字信号的关键组件。而ADS
2024-01-14 21:52:30
S3C2410内存管理单元MMU基础实验
(11)实验十一:MMU 在理论上概括或解释MMU,这不是我能胜任的。我仅基于为了理解本实验中操作MMU的代码而对MMU做些说明,现在先简单地描述虚拟地址(VA)、变换后的虚拟地址(MVA)、物理地址(PA) 之间的关系: 启动MMU后,S3C2410的CPU核看到的、用到的只是虚拟
2009-01-01 02:29:4217
BootLoader_BootLoader是什么
ARM实现手指静脉识别系统_本文将从 BootLoader的概念、BootLoader 的框架结构与安装等四个方面来讨论。
2011-11-30 10:32:312979
ARM的Bootloader启动流程研究
讲述了基于ARM 处理器的嵌入式系统在上电启动后应用程序或操作系统运行前,对处理器及其内部功能模块进行初始化的过程,并结合经过实际验证的代码详细的分析了S3C44B0 Bootloader 的
2012-02-03 14:48:0570
Host端MSD类的Bootloader程序
研究了一下AN4368,该AplplicationNote讲述了如何基于飞思卡尔支持USB功能的Coldfire和Kinetis芯片如何开发一个Host端MSD类的Bootloader程序,以及如何修改应用程序配置。通俗来讲就是完成了通过U盘更新芯片程序代码。
2017-09-15 17:50:0810
ARM存储管理单元MMU详解
15.5 存储管理单元MMU 在创建多任务嵌入式系统时,最好有一个简单的方式来编写、装载及运行各自独立的任务。目前大多数的嵌入式系统不再使用自己定制的控制系统,而使用操作系统来简化这个过程。较高
2017-10-17 16:24:114
bootloader如何更新
BootLoader就是单片机启动时候运行的一段小程序,这段程序负责单片机固件的更新,也就是单片机选择性的自己给自己下程序。可以更新,也可以不更新,更新的话,BootLoader更新完程序后,跳转到新程序运行;不更新的话,BootLoader直接跳转到原来的程序去运行。
2017-11-10 08:22:537257
对MMU和页表工作机制的简单评析
对于一个有MMU的CPU而言,MMU开启后,CPU是这样寻址的:CPU任何时候,一切时候,发出的地址都是虚拟地址,这个虚拟地址发给MMU后,MMU通过页表来在页表里面查出来这个虚拟地址对应的物理地址是什么,从而去访问外面的内存条。MMU里面的页表地址寄存器,记录了页表本身的存放位置。
2018-02-02 14:08:5710515
Bootloader中LCD硬件初始化和软件驱动程序设计
,并不违背这一目标。本文通过对Bootloader的原理分析和嵌入式芯片C6310中LCD控制器的研究,设计了Bootloader中LCD硬件初始化和软件驱动程序。该设计完善了Bootloader的扩展功能,加快了手机动画的实现,改善了客户的使用体验。
2018-03-07 14:05:068517
AVR的bootloader的设置步骤教程及注意事项
熔丝位的烧写:BOOTRST要进行编程,这样单片机在复位后自动跳转到bootloader区执行bootloader的代码,然后要根据自己bootloader的大小设置boot区的的熔丝位。
2018-05-20 09:46:006344
Bootloader是什么Bootloader的介绍和过程详细解
本文档的主要内容详细介绍的是Bootloader是什么Bootloader的介绍和过程详细解主要内容包括了: 1. Bootloader简介2.几种发布的Bootloader
2018-12-11 17:33:2044
Bootloader的详细资料分析免费下载
本文档的主要内容详细介绍的是Bootloader的详细资料分析免费下载。主要内容包括了:熟悉BootLoader的实现原理,认识Bootloader的主要任务,熟悉BootLoader的结构框架,I U-boot使用
2018-12-13 17:08:3942
STM32系统bootloader的应用有哪些
嵌入式开发中,经常需要bootloader进行程序固件升级和系统维护,所以bootloader是必不可少的功能。STM32系统自带的系统bootloader很方便使用。大量减少了工程师开发bootloader的工作。
2020-10-22 12:19:454861
如何编写ARM处理器的Bootloader
作者 | strongerHuang 微信公众号 | strongerHuang 之前从应用的角度给大家分享过Bootloader相关的文章,今天从底层原理来给大家描述ARM处理器如何编写
2020-10-27 11:02:363827
MMU的工作原理梳理
本文从内存管理的发展历程角度层层递进,介绍 MMU 的诞生背景,工作机制。而忽略了具体处理器的具体实现细节,将 MMU 的工作原理从概念上比较清晰的梳理了一遍。 MMU 诞生之前:在传统的批处理
2020-12-17 16:13:5612456
MPU和MMU、MPU和MCU的区别
一、MMU vs MPU内存是现代计算机最重要的组件之一。因此,它的内容不能被任何错误的应用所篡改。这个功能可以通过MMU(Memory Management Unit)或者MPU(Memory
2021-10-26 16:36:234
【MCU】BootLoader的简单介绍
一、pandas是什么?在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行,用来初始化硬件设备,建立内存空间映射图,以便为操作系统的启动做准备。在嵌入式系统中,通常没有想BIOS
2021-10-27 19:21:0148
MCU Bootloader总结
Bootloader本文只探讨MCU(单片机)下的Bootloader,对ARM系列暂不做探讨。(1)bootloader是弄啥的?(2)为什么要引入bootloader(也就是加入bootloader之后起什么作用)?(3)bootloader怎么根据自己的需求去设计流程?...
2021-11-05 15:51:0332
STM32系统bootloader应用
嵌入式开发中,经常需要bootloader进行程序固件升级和系统维护,所以bootloader是必不可少的功能。STM32系统自带的系统bootloader很方便使用。大量减少了工程师开...
2021-11-26 13:36:0416
STM32单片机bootloader扫盲
STM32单片机BootLoader扫盲BootLoader和APP之间的关系APP就是平时写的单片机上的应用程序,而BootLoader本质上和APP一样,也是平时写的应用程序
2021-11-26 18:21:0476
stm32 复位到内部bootloader
sm32的bootloader一般是通过开机时设置boot0=1来实现的。下面是通过程序来实现:原来的startup文件是直接把flash的数据加载到ram里面然后跑main函数循环
2022-01-17 12:44:544
为什么要用MMU?为什么要用虚拟地址?
既然MMU开启后,硬件会自动的将虚拟地址转换成物理地址,那么还需要我们软件做什么事情呢?即创建一个页表翻译都需要做哪些事情呢?或者说启用一个MMU需要软件做什么事情呢?
2022-04-26 14:37:313688
仔细研究欧盟 ADS 立法草案中的合规评估
欧盟 (EU) 于 2022 年 4 月初发布了针对配备自动驾驶系统 (ADS) 的车辆的立法草案。本专栏的重点是概述 ADS 合规性评估。 欧盟 ADS 立法草案有两个主要部分:ADS 性能要求
2022-07-14 15:54:40894
RTOS多线程必须要MMU才行?
前两天看到有人说:计算机的多线程,必须要有MMU才行,否则系统不能正常运行。 MMU:Memory Management Unit,即内存管理单元,它是一个“好东西”,在大型的操作系统中,起到了关键
2022-10-11 18:56:281767
为什么没有MMU就无法运行Linux系统
MMU(Memory Management Unit,内存管理单元)是一种硬件模块,用于在CPU和内存之间实现虚拟内存管理。
2023-04-23 10:48:05521
单片机BootLoader与APP如何合并
嵌入式固件一般分为BootLoader和App,BootLoader用于启动校验、App升级、App版本回滚等功能,BootLoader在cpu上电第一阶段中运行,之后跳转至App地址执行应用程序。
2023-07-25 11:29:38899
ARM处理器如何编写Bootloader
前面给大家分享过Bootloader从应用角度执行的相关文章,今天从底层原理来给大家描述ARM处理器如何编写Bootloader,以及底层流程。
2023-07-26 09:10:47538
MMU内存管理单元的工作原理和作用
MMU(Memory Management Unit,内存管理单元)是一种硬件模块,用于在CPU和内存之间实现虚拟内存管理。
2023-08-03 10:03:421094
什么是MMU?linux为什么需要MMU?
在内存管理方面,MMU可以通过页面表(Page Table)实现虚拟内存管理。页面表是一种数据结构,记录了每个虚拟页面和其对应的物理页面之间的映射关系。
2023-10-09 11:27:33419
嵌入式Linux运行一定需要MMU吗?为什么需要MMU?
嵌入式Linux运行一定需要MMU吗?为什么需要MMU? 嵌入式Linux运行需要MMU,这是因为MMU是嵌入式系统中最重要的子系统之一,它扮演着以硬件的方式隔离不同应用程序,为操作系统提供
2023-10-29 16:28:35409
MMU原理:CPU是如何访问到内存的?
当CPU访问虚拟地址0的时候,MMU会去查上面页表的第0行,发现第0行没有命中,于是无论以何种形式(R读,W写,X执行)访问,MMU都会给CPU发出page fault,CPU自动跳到fault的代码去处理fault。
2023-11-09 12:30:04259
MMU内存管理单元的宏观理解
最近一直在学习内存管理,也知道MMU是管理内存的映射的逻辑IP,还知道里面有个TLB。 今天刚刚好看到了几篇前辈的文章,很是不错,于是这里来一起学习一下吧。 PART 一:MMU 架构篇 MMU
2023-11-26 15:21:34200
MMU包含两个模块是什么
后的物理地址也有两部分:PFN和offset,PFN( Physical frame number)是物理页框number,offset和上面虚拟地址的offset相同,是页内偏移。 2-MMU包含两个
2023-11-26 15:40:58260
MMU中的页命中、缺页介绍
页命中、缺页 (1)页命中 • a) 处理器要对虚拟地址VA进行访问。 • b) MMU的TLB没有命中,通过TWU遍历主存页表中的PTEA(PTE地址)。 • c) 主存向MMU返回PTE
2023-11-26 16:19:27364
评论
查看更多