•DRAM:它的基本原件是小电容,电容可以在两个极板上保留电荷,但是需要定期的充电(刷新),否则数据会丢失。缺点:由于要定期刷新存储介质,存取速度较慢。

•SRAM:它是一种具有静止存取功能的内存,不需要定期刷新电路就能保存它内部存储的数据。其优点:存取速度快; 但是缺点是:功耗大,成本高。常用作存储容量不高,但存取速度快的场合,比如steppingstone.

在嵌入式硬件体系中,除了CPU内部的”垫脚石”采用SRAM外,板载内存一般会采用DRAM,而DRAM又可以分为SDRAM,DDR,DDR2等。

SDRAM(Synchronous Dynamic Random AccessMemory):同步动态随机存储器.

同步: 内存工作需要有同步时钟,内部的命令的发送与数据的传输都以该时钟为基准。

动态:存储阵列需要不断的刷新来保证数据不丢失。

随机:是指数据不是线性依次存储,而是自由指定地址进行数据读写。

备注:2440开发板上使用的内存通常是SDRAM

DDR (Double Data Rate SDRAM),即“双倍速率同步动态随机存储器”。与早期的SDRAM相比,DDR 除了可以在时钟脉冲的上升沿传输数据,还可以在下降沿传输信号,这意味着在相同的工作频率下,DDR 的理论传输速率为SDRAM的两倍。DDR2 则在DDR 的基础上再次进行了改进,使得数据传输速率在DDR 的基础上再次翻倍。
备注:6410开发板通常采用DDR内存    210开发板通常采用DDR2内存

2440内存初始化:

  1:地址空间:
(1)地址线:2440对外提供27条地址线,只能访问128MB的外设空间。
(2)片选信号:8个片选信号,扩大可访问的外设空间到1GB。
(3)外设空间:有2440的datasheet知道他将1GB分成8部分,即8块,通过不同的片选信号来访问不同的块空间。其中内存从band6开始(0x30000000),有可能占用band7。
(4)存储器控制器:所谓对内存初始化,实质上是对CPU的存储器控制器进行初始化,由他对给出的地址进行分析转换得到片选信号和行列地址。而CPU和内部寄存器之间的访问则是通过CPU内部的32位总线进行的。

2:内存芯片连接
由于每个单元格的容量是16bit,即内存芯片的数据宽度是16bit,而CPU的数据宽度是32bit,为了避免浪费,就用两块内存芯片并联,使得每一次cpu对内存访问的时候可以一次性取出32bit的数据。分为高16bit和低16bit。当然不可避免的要涉及到片选信号,L_BANK选择信号,行列地址信号。

3存储器控制器寄存器
设置13个寄存器,要查阅2440的datasheet以及内存的datasheet,然后看时序图,找出寄存器的某些位控制的参数所需要设置的值。最后要学会在汇编里用循环的方式来给寄存器赋值。

4.  理论上2440可以寻址4GB,总体上分为内部空间和外设空间。外设空间又分为8个bank,每个bank为128MB

6410内存初始化:    

  6410也可以寻址4GB空间,但是6410把地址空间划分为三个部分,一个是保留区(高2GB),一个是外设区(256MB)--主要放置寄存器,一个是主存储区(1972MB)。
主存储区又分为五个部分

(1)boot镜像区:不匹配任意硬件外设,负责把相应的外设映射到该处。CPU上电后从这里取指运行。
(2)内部存储区:分两个部分:IROM和ISRAM,虽然理论上各有64MB,但是IROM实际有效的只有32KB,ISRAM有效的只有8KB
(3)静态存储区:类似于2440的外设区,分成6个bank,可以接NORFLASH,onenand等外设。
(4)保留区:256MB,不用
(5)动态存储区:就是用来连接内存的,所以6410的内存起始地址是0x50000000

7.6410的内存初始化要按顺序进行,2440不需要顺序。还要注意设置数据线和地址线的选择。以及检查是否已将ready信号写入寄存器。

具体初始化步骤参考手册

ok6410内存初始化的更多相关文章

  1. 【嵌入式开发】裸机引导操作系统和ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )

    [嵌入式开发]ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )     一. 内存 ...

  2. Smart210学习记录-------内存初始化

    买了Smart210的板子,开始学习中,,,,, 今天看了重定位DRAM ,然而内存需要初始化,早上信心满满的我到现在崩溃的我....也不知遭受了什么样的蹂躏 ,,还是记下一点学到的知识吧.. 数据手 ...

  3. Linux内存初始化

    start_kernel -> setup_arch 在这个函数中我们主要看这几个函数. machine_specific_memory_setup max_low_pfn = setup_me ...

  4. C语言数组内存初始化

    内存初始化当然有必然,但是不用memset,直接这样写就可以了:char* szRemoteFile = new char[MAX_LENGTH](); http://blog.csdn.net/pa ...

  5. X-007 FriendlyARM tiny4412 u-boot移植之内存初始化

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  6. 三星S5-PV210内存初始化

    一.S5PV210时钟系统 时钟:一定频率的电信号.   时钟系统:基于CMOS工艺的高性能处理器时钟系统,集成PLL可以从内部触发,比从外部触发更快且更准确,能有效地避免一些与信号完整性相关的问题. ...

  7. Linux内存初始化【转】

    转自:http://www.cnblogs.com/super-king/p/3291120.html start_kernel -> setup_arch 在这个函数中我们主要看这几个函数. ...

  8. Linux内存初始化(四) 创建系统内存地址映射

    一.前言 经过内存初始化代码分析(一)和内存初始化代码分析(二)的过渡,我们终于来到了内存初始化的核心部分:paging_init.当然本文不能全部解析完该函数(那需要的篇幅太长了),我们只关注创建系 ...

  9. Linux内存初始化(三) 内存布局

    一.前言 同样的,本文是内存初始化文章的一份补充文档,希望能够通过这样的一份文档,细致的展示在初始化阶段,Linux 4.4.6内核如何从device tree中提取信息,完成内存布局的任务.具体的c ...

随机推荐

  1. python-appium手机自动化测试(仅需安装包)前期准备(pydev-eclipse编辑器)

    1.jdk安装与环境变量配置教程http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 我本机安装的是1.6.043 2.sdk下 ...

  2. Google Protocol Buffer 的编码方式

    Google Protocol Buffer 使用到了两种编码方式:Varints 和 zigzag. 一 Varints 编码 每个 byte 只用 7bit 表示数字,最高位 bit作为标志位,如 ...

  3. webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server

    一.webpack基础 1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息.(也可以不生成package.json文件,但是package.json是很 ...

  4. 使用AS3.0代码实现给图片添加滤镜的模糊与斜角效果

    滤镜可应用于任何显示对象(即,从 DisplayObject 类继承的对象), 例如 MovieClip.SimpleButton.TextField 和 Video 对象,以及 BitmapData ...

  5. 云计算三种服务模式SaaS、PaaS和IaaS及其之间关系(顺带CaaS、MaaS)

    云计算架构图 很明显,这五者之间主要的区别在于第一个单词,而aaS都是as-a-service(即服务)的意思,这五个模式都是近年来兴起的,且这五者都是云计算的落地产品,所以我们先来了解一下云计算是什 ...

  6. 安装office2013时弹出microsoft setup bootstrapper已停止工作,接着就不能安装了

    只是说一下自己的解决方法: 我的原因是注册表没有删除改进. 1.输入regedit 2.找到HKEY_LOCAL_MACHINE\software\microsoft\windows\CurrentV ...

  7. aspxgridView,Repeater增加自动序号列

    第一种方式,直接在Aspx页面GridView模板列中.这种的缺点是到第二页分页时又重新开始了. <asp:TemplateField HeaderText="序号" Ins ...

  8. dll延迟加载

    用于隐式链接选项, 这样设置后在exe调用dll的函数才会加载dll,调用DLL_PROCESS_ATTACH.否则隐式链接直接会在exe启动时加载dll

  9. jquery获取对象

    1.JQuery的核心的一些方法 $("Element").length; ‘元素的个数,是个属性 $("Element").size(); ’也是元素的个数, ...

  10. rem是如何实现自适应中的?

    使用rem 然后根据媒体查询实现自适应.跟使用JS来自适应也是同个道理,不过是js更精确一点.使用媒体查询: html { font-size: 62.5% } @media only screen ...