mmu 订阅
MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换(bank switching,尤其是在8位的系统上)。 展开全文
MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换(bank switching,尤其是在8位的系统上)。
信息
外文名
Memory Management Unit
又    叫
分页内存管理单元
相关概念
地址范围
中文名
内存管理单元
属    性
计算机硬件
负    责
虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权
MMU历史
许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory)。虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。
收起全文
精华内容
下载资源
问答
  • MMU

    2020-08-22 16:57:22
    MMU中文名是内存管理单元, 关MMU关掉MMU,因为u-boot软件是硬件实地址访问。 根本没有用到内存地址映射 因为MMU是;把虚拟地址转化为物理地址得作用,而目的是设置控制寄存器,而控制寄存器本来就是实地址(物理地址...

    MMU中文名是内存管理单元,
    关MMU关掉MMU,因为u-boot软件是硬件实地址访问。
    根本没有用到内存地址映射
    因为MMU是;把虚拟地址转化为物理地址得作用,而目的是设置控制寄存器,而控制寄存器本来就是实地址(物理地址)
    驱动与硬件的连接
    地址的映射
    控制外设,其实就是控制寄存器地址。由于MMU(内存管理单元),内核层的驱动不能直接操作硬件上的地址,通过虚拟地址来实现
    驱动程序 --> 虚拟地址 --> MMU --> 物理地址(寄存器) --> 硬件
    看门狗如果没关,硬件上默认到时会复位的。 所以要关掉
    关掉中断,避免中断打断带来的保存返回的问题

    第一条指令位置(参考u-boot.map) arch/arm/cpu/armv7/start.S 里的 _start: b reset
    设置为SVC模式 msr cpsr,r0
    关闭MMU Cache cpu_init_cp15
    基本硬件设备初始化 board/samsung/fs4412/lowlevel_init.S 的 lowlevel_init
    关中断 看门狗(时钟 串口,flash,内存等的初始化时间可能比较长,这样的话,看门狗会使开发板不停的重启,所以在初始化硬件之前,先关闭MMU Cache,关中断 看门狗)
    ,初始化时钟 串口,flash,内存
    自搬移到内存 relocate_code
    (把u-boot剩下的部分搬到内存中,然后运行)
    设置栈, IRQ stack frame
    (C代码运行之前,必须先设置栈)
    ===================================================
    准备进入C部分 bl _main ( 参u-boot.map )
    大部分硬件初始化 arch\arm\lib\board.c\board_init_f 里的init_sequence
    搬移内核到内存运行

    时钟 串口,flash,内存等的初始化时间可能比较长,这样的话,看门狗会使开发板不停的重启,所以在初始化硬件之前,先关闭MMU Cache,关中断 看门狗
    uboot是在开发板上的EMMC里面,开发板上电后,BootLoader运行,设置为SVC模式,关闭MMU Cache,基本硬件初始化,自搬移到内存(uboot剩余程序进内存),设置栈,准备进入C语言部分,大部分硬件初始化,搬移内核到内存(通过网络—tftp服务,将uImage和设备树文件加载到内存),挂载根文件系统(通过网络—nfs服务,将rootfs加载到内存)加粗样式

    展开全文
  • mmu

    2018-11-26 22:54:00
    title: mmu tags: ARM date: 2018-11-05 20:22:59 --- 原因 让APP可以以同样的链接地址来编译,这样虽然是同样的链接地址,实际会映射到不同的实际地址(具体可以通过不同的pid)对应到不同的地址 让大容量APP可以在...

    title: mmu
    tags: ARM
    date: 2018-11-05 20:22:59
    ---

    原因

    1. 让APP可以以同样的链接地址来编译,这样虽然是同样的链接地址,实际会映射到不同的实际地址(具体可以通过不同的pid)对应到不同的地址
    2. 让大容量APP可以在资源少的系统上运行,也就是先加载部分内存空间
    3. 权限管理,app应该禁止访问其他app的地址,也不应访问到系统的内存

    MMU原理

    有一张表,对应这虚拟地址与实际地址.这里可以用一级页表,也就是在表格里面,我们只保存PA,PA1对应的VA是0~1M-1,PA2对应的VA是1M~2M-1,以此类推。这样改进后,只需要原来表格容量的一半即可。最后还需要把基地址告诉MMU,启动MMU。

    启动MMU

    1.在内存中创建这些表格(页表);

    2.把页表基地址告诉MMU;

    3.设置CP15,启动MMU;

    程序简述

    1. 栈的实际映射
    2. 寄存器空间映射,不使用cache和write buff
    3. lcd的内存映射

    转载于:https://www.cnblogs.com/zongzi10010/p/10023650.html

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,555
精华内容 2,622
热门标签
关键字:

mmu