0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

S3C2440存储控制器的地址空间与MMU分析介绍

电子设计 来源:郭婷 作者:电子设计 2018-12-30 07:43 次阅读

一、S3C2440存储控制器

如果大家写过S3C2440的ARM裸机程序都应该知道通常SDRAM的起始地址是0X30000000,但是大家有没有想过为什么呢?下面我将给大家做一个简要的介绍。

查S3C2440的手册可知S3C2440可寻址1G的地址范围,但是S3C2440的地址线只有27根,理论上只能寻址2的27次方等于128M的地址范围。于是S3C2440通过一个叫BANK的东东解决了这个问题。S3C2440引出了8根BANK线(对应nGCS0~ nGCS7),通过这个8根线来选通和关闭不同的存储器,这样S3C2440最多就可以连接8个128M的存储器,只要在某一时刻只选通一个BANK就可以实现1G的寻址空间每个BANK有个地址,对该BANK地址的访问实际上就是选通该BANK,于是ARM核只要发出一个地址,然后S3C2440的储存控制器只要把该地址解释成两部分:一部分是BANK地址一部分是连接到该BANK存储器内部的地址就可以访问了。

而作为32位的CPU,可以使用的地址范围理论上可以达到2的32次方等于4G,除去上述的1G地址空间,还有一部分是CPU内部寄存器的地址,剩下的地址空间没有使用。

下面我们来看到S3C2440存储器的地址空间分布图

S3C2440存储控制器的地址空间与MMU分析介绍

左边的是表示CPU从NOR FLASH启动时的地址空间图,右边是CPU从NAND FLASH启动时的地址空间图。从图中可以看出SDRAM接在BANK6上面,地址为0X30000000,这就解释了开始最开始的那个问题。问题又来了为什么CPU从NAND和NOR启动时地址空间不同?这是因为NOR是线性结构,跟普通的内存差不多,它接在BANK0上。而NAND则是另外一种结构,S3C2440有专用的NAND控制器和地址线来连接,它不能接在BANK0上。CPU启动时必定从0地址开始执行程序,而从NAND启动时,0地址没有存储器,那CPU怎么办呢?于是就出现了一种叫“起步石”(stepping stone)的东东,它是S3C2440内部的一块4K的存储器,当从NAND启动时,0地址线会连接到起步石上面,同时CPU会通过内部的硬件将NAND FLASH开始的4K数据复制到起步石里面。起步石里面的程序一般设计为对SDRAM进行初始化,然后将NAND里面的部分程序复制到SDARM,然后跳到SDRAM开始执行程序。所以当做U-BOOT移植使其支持从NAND的启动时,需要对NAND的前4K程序做处理。

下面我们再来看看S3C440存储控制器一般所接外设的访问地址和部分寄存器的访问地址

S3C2440存储控制器的地址空间与MMU分析介绍

S3C2440存储控制器的地址空间与MMU分析介绍

二、S3C2440MMU

1.MMU的作用

我们再第一部分讨论的全部都是物理地址,注意不要与这部分要将的虚拟地址给混淆起来。

内存管理单元(Memory ManagerUnit)简称MMU。它负责将虚拟地址转换成物理地址,然后传给上部分介绍的存储管理器进行寻址。

现代的多用户多进程操作系统通过MMU使各个用户进程都有自己的独立的地址空间:地址映射功能功能使的个进程拥有“看起来”一样的地址空间,而内存访问权限的检查可以保护每个进程所用的内存不会被其他进程破坏。

我来打个蹩脚的例子。甲同学(进程甲)去一个图书管理员那儿去借名为“内存”的一本书,说他7点钟要用。图书管理员给甲同学一个牌子上面写着哪个层楼房哪个房间有这本书,不过这块牌子只能7点钟去取书,且只能借三个小时(权限),而乙同学同样要借这本书不过是12点,图书馆同样给乙同学一块牌子,不同的时这块牌子只能12点钟去取书也只能借三个小时。结果是甲乙同学都借到了这本书,他们都感觉拥有了这本书,在他们拥有这本书的期间不会被其他同学打扰。实际上这里的同学就代表进程,图书管理员代表是内核,牌子代表的是虚拟地址,书代表实际的内存,而MMU完成的工作就是拿到同学的牌子帮同学找到书的过程。

虚拟地址最终要转成物理地址才能读写实际的数据,这通过将虚拟地址空间、物理地址空间划分为一个同样大小的一块块小空间,然后为着两类小空间建立映射空间,有可能多块虚拟地址映射到同一块物理地址空间,或者有些虚拟地址空间映射具体物理地址空间上去。启动MMU后,CPU对外发出虚拟地址,然后MMU将虚拟地址转成物理地址再进行访问。

2.虚拟地址空间到物理空间的转换过程

在ARM CPU中使用页表的方式进行转换。linux内核一般使用两级页表的方式。页表是个什么东东,他就像我们的书上的目录,有主目录,次目录。当我们要找一个知识点的时候先找到主目录,然后再找到次目录再找到相应的知识点。每一个进程都会在内存里面创建一个目录,目录的存放地址保存起来。当需要访问目录时,就会将目录放到CPU的一个专用寄存器里面,然后MMU读取这个寄存器里面的值就会帮我们找到我们要访问的物理地址。

页表是怎样建立的呢?

实际上它就是在内存的一个地址内存放了第一级目录的内存地址,然后在第一个级的目录的内存内又存放了实际的物理地址。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16206

    浏览量

    177427
  • 存储器
    +关注

    关注

    38

    文章

    7453

    浏览量

    163608
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10826

    浏览量

    211160
收藏 人收藏

    评论

    相关推荐

    S3C2440存储控制器的相关寄存

    S3C2440存储控制器(memory controller)的寄存器使用
    发表于 09-24 14:25

    S3C2440启动地址和各种存储器类型

    和各种存储器类型一、存储器类型思维导图如图所示:二、探究S3C2440启动地址1.为什么nand启动地址是4096?指令:ldr sp, =
    发表于 02-15 07:30

    S3C2440存储控制器如何处理不同位宽的外设呢

    存储控制器介绍下面是S3C2440存储控制器介绍
    发表于 05-07 10:13

    s3c2440 pdf datasheet

    s3c2440 pd
    发表于 07-10 23:45 571次下载

    S3C2440应用电路图

    S3C2440应用电路图
    发表于 09-14 10:34 149次下载
    <b class='flag-5'>S3C2440</b>应用电路图

    S3C2440中文手册

    ARM9微处理S3C2440中文手册
    发表于 07-30 11:25 271次下载

    基于Linux和s3C2440的GPC控制器设计

    基于Linux和s3C2440的GPC控制器设计 近年来,基于Internet的网络化控制系统已成为国内外测控领域研究的热点,在石油勘探开发、钢铁化工等领域有着广阔的应用前景。而
    发表于 01-20 11:09 1327次阅读
    基于Linux和<b class='flag-5'>s3C2440</b>的GPC<b class='flag-5'>控制器</b>设计

    s3c2440 mmc和camera的linux驱动

    本站提供的s3c2440 mmc和camera的linux驱动资料,详细讲诉了s3c2440 mmc和camera的linux驱动的步骤,希望对你的学习有所帮助。
    发表于 05-25 15:53 54次下载
    <b class='flag-5'>s3c2440</b> mmc和camera的linux驱动

    基于S3C2440的U-Boot开机logo的设计

    在对U-Boot进行深入分析的基础上,同时对S3C2440的LCD控制器原理以及INNOLUX 7寸LCD的成像原理进行分析,最后结合系统软硬件特性实现基于U-Boot的开机logo。
    发表于 12-06 15:14 96次下载
    基于<b class='flag-5'>S3C2440</b>的U-Boot开机logo的设计

    s3c2440全套中文手册

    s3c2440全套中文手册
    发表于 03-19 11:24 62次下载

    裸机学习s3c2440

    裸机学习s3c2440
    发表于 10-13 14:23 29次下载
    裸机学习<b class='flag-5'>s3c2440</b>

    s3c2440用户资料手册

    s3c2440用户资料手册
    发表于 10-16 09:10 27次下载
    <b class='flag-5'>s3c2440</b>用户资料手册

    S3C2440,S3C2450和S3C6410的区别

    2450、S3C6410芯片。这些平台又与S3C2440处理有哪些区别优势。S3C2440:l         主频400MHz;l         SDRam内存
    发表于 04-02 14:36 742次阅读

    存储器类型与S3C2440启动地址

    和各种存储器类型一、存储器类型思维导图如图所示:二、探究S3C2440启动地址1.为什么nand启动地址是4096?指令:ldr sp, =
    发表于 12-14 19:08 4次下载
    <b class='flag-5'>存储器</b>类型与<b class='flag-5'>S3C2440</b>启动<b class='flag-5'>地址</b>

    S3C2440如何设置系统时钟

    S3C2440如何设置系统时钟 S3C2440是一款嵌入式处理,属于SAMSUNG公司的ARM9系列。系统时钟是嵌入式系统中非常重要的一个参数,它决定了系统的计算速度和精度,是系统稳定性的关键因素
    的头像 发表于 09-02 15:12 943次阅读