1、2440地址空间

先去找PCB原理图,看CPU引出的内存地址线和数据线的宽度。

说明内存的其实地址是0x30000000为起始地址。

初始化内存其实是去初始化存储器控制器,只有初始化好这个存储器控制器之后才能访问相应的芯片。

2、内存芯片的硬件连接

3、存储控制器

打开芯片手册,找到存储器控制器章节,

该寄存器分成了8个组,用于设置总线宽度和等待状态的寄存器,有8个组可控制8个BANK。

因为BANK7和BANK6用于接SDRAM的,因为原理图没有使用UB/LB,所以ST7位选择为0,WS7等待状态设置为0,DW7用于设置总线宽度,选择10为32位。BANK6的值与BANK的设置一样。

其他BANK不用保持默认值即可。

用于控制内存的寄存器,MT位用于控制内存使用的什么类型,我们用的SDRAM,值位11,

Trcd表示行列型号之间转换的延时,到底延时是多少,可以看上面的时序图

到具体使用的SDRAM里面去查看列地址数量,打开该芯片手册搜索column

为9位所以SCAN应该为01,

刷新寄存器

TREFMD刷新模式选择:选择自动刷新所以取值0,

Trp:准备充电的时间,从时序可以看出

2个时钟选择00;

Tsrc:行刷新时间,一般是7个时钟,选择11,

Refresh Counter:隔多长时间进行刷新一次,用这里来设置,

BURST_EN突发模式,使用起来,是指访问内存时一次性可以使用批量的数据;

SCKE_EN是否使能节点模式,使能起来

SCLK_EN选择推荐模式选择1;

BK76MAP:用于控制设置BANK6和7的大小的。应该选择001为64M

他们的取值是一样的。

CAL域:

选择011,

到这里内存控制器里面所有值已经列出来了。

手把手写代码:

对存储器控制器初始化之后,便可以使用我们的内存了。

Part8-不用内存怎么行_2440内存初始化lesson2的更多相关文章

  1. Part8-不用内存怎么行_6410内存初始化lesson3

    1.6410地址空间 外设区:从0x70000000-0x7FFFFFFF有256MB 主存储区:从0x00000000-0x6FFFFFFF有1972MB 对于主存储区: 静态存储区可以接我们的NO ...

  2. 启动期间的内存管理之build_zonelists初始化备用内存域列表zonelists--Linux内存管理(十三)

    1. 今日内容(第二阶段(二)–初始化备用内存域列表zonelists) 我们之前讲了在memblock完成之后, 内存初始化开始进入第二阶段, 第二阶段是一个漫长的过程, 它执行了一系列复杂的操作, ...

  3. linux内存源码分析 - 伙伴系统(初始化和申请页框)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 之前的文章已经介绍了伙伴系统,这篇我们主要看看源码中是如何初始化伙伴系统.从伙伴系统中分配页框,返回页框于伙伴系 ...

  4. 内存分析_.Net内存原理介绍

    内存原理介绍 1.       .Net应用程序中的内存 1.1.Net内存类型 Windows使用一个系统:虚拟寻址系统.这个系统的作用是将程序可用的内存地址映射到硬件内存中的实际地址上.其实际结果 ...

  5. Windows内存管理和linux内存管理

    windows内存管理 windows 内存管理方式主要分为:页式管理,段式管理,段页式管理. 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页:页式管理把内存空间按照页的大小划分成片或 ...

  6. (转)从内存管 理、内存泄漏、内存回收探讨C++内存管理

    http://www.cr173.com/html/18898_all.html 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟 ...

  7. 5. c++ 内存管理 C/C++ 内存机制

    参考自:http://blog.csdn.net/wpf_ml/article/details/7759911 1. 内存,Cache,寄存器内存:通常计算机将数据存放在物理内存,cache及寄存器中 ...

  8. java 内存管理 —— 《Hotspot内存管理白皮书》

    说明   要学习Java或者任意一门技术,我觉得最好的是从官网的资料开始学习.官网所给出的资料总是最权威最知道来龙去脉的.而Java中间,垃圾回收与内存管理是Java中非常重要的一部分.<Hot ...

  9. linux内存源码分析 - 内存回收(整体流程)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 当linux系统内存压力就大时,就会对系统的每个压力大的zone进程内存回收,内存回收主要是针对匿名页和文 ...

随机推荐

  1. zju 校队选拔 被虐记

    选拔已经开始了三天才想起来写游记 QAQ.. 7.12 弱弱的Sky_miner来到了ZJU,过程中被热成狗... 然后见到了无数大二大三的大佬们,过程中被热成狗... 后来听靖哥哥说集训的注意事项, ...

  2. 更新pip

    python -m pip install pip --upgrade pip要保持最新的,才可以去下载最新的其他的第三方包

  3. c#联网判断

    引用命名空间:sing System.Net.NetworkInformation; var address = "www.baidu.com"; Ping ping = null ...

  4. 基于ThinkPHP的开发笔记3-登录功能(转)

    1.前台登录用的form ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <for ...

  5. win10笔记本用Fiddler对手机App抓包

    移动客户端项目有时需要针对手机app进行抓包,这时一般有两种办法:直接下个手机抓包工具的app,在手机上抓:pc机上装上抓包工具,pc和手机连接同一个无线,在pc机上抓.第一种比较简单,但抓包工具自然 ...

  6. Android 控件之Spinner

    Spinner用来显示列表项,类似于一组单选框RadioButton.下面瞥一下它的效果. 源码下载 一.概述 Spinner是一个每次只能选择所有项的一个项的控件.它的项来自于与之相关联的适配器中. ...

  7. DM8127 更改调试串口为UART2

    1.uboot修改 1)修改宏定义 /*include/config/ti8148_evm.h*/ #define CONFIG_SYS_NS16550_COM2 0x48024000 #define ...

  8. unittest框架,调用函数类 和 调用函数外的 方法

  9. WIN10运行软件,窗口不显示(移动到屏幕外无法复原)的解决办法 Lebal:bug10解决方案

    双显示器切换回单显示器的时候,可能会遇到窗口移动到屏幕外不显示的情况 像这样虽然有缩略图但是点击无反应,并且平铺窗口也不管用,这个时候单击该窗口,Alt+space 执行最小化以及最大化操作即可复原

  10. python学习(八) 异常

    8.1 什么是异常 8.2 按自己的方式出错 如何引发异常,以及创建自己的异常类型. 8.2.1 raise语句 >>> raise Exception Traceback (mos ...