首先是2440的存储控制器:

  暂时不管是从nand启动还是nor启动,因为我现在只关注内存,从上图可以看到由2440的Memory Controller可以寻址的范围是0x0000,0000---0x4000,0000,总共是1G,这1G又分为8个bank,bank0-bank7,每个bank为128M, 8*128M=1G。其中bank0-bank5这6个bank是只能接SROM,那么什么是SROM,2440数据手册的221页说明了,SROM是ROM或者SRAM。

  

通用存储设备:

  内存存储设备的存储方式:ROM,RAM

    ROM(Read-Only Memory):只读存储器,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,资料并且不会因为电源关闭而消失。如:PC里面的BIOS。

    RAM(Random Access Memory) :随机访问存储器,存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。可以理解为,当你给定一个随机有效的访问地址,RAM会返回其存储内容(随机寻址),它访问速度与地址的无关。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间内随机访问使用的程序。计算机系统里内存地址是一个四字节对齐的地址(32位机),CPU的取指,执行,存储都是通过地址进行的,因此它可以用来做内存。

  RAM按照硬件设计的不同,随机存储器又分为DRAM(Dynamic RAM)动态随机存储器和SRAM(Static RAM) 静态随机存储器。

    DRAM它的基本原件是小电容,电容可以在两个极板上短时间内保留电荷,可以通过两极之间有无电压差代表计算机里的0和1,由于电容的物理特性,要定期的为其充电,否则数据会丢失。对电容的充电过程叫做刷新,但是制作工艺较简单,体积小,便于集成化,经常做为计算机里内存制作原件。比如:PC的内存,SDRAM, DDR, DDR2, DDR3等,缺点:由于要定期刷新存储介质,存取速度较慢。

    SRAM它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。因此其存取速度快,但是体积较大,功耗大,成本高,常用作存储容量不高,但存取速度快的场合,比如CPU的L1 cache,L2cache(一级,二级缓存) ,寄存器。

  由于价格和存储量的限制,mini2440上作为内存的就是DRAM,从上图看得出,只有bank6,bank7才能接DRAM,那么我猜想控制bank6,7的Memory Controller对应的寄存器肯定有一个控制刷新的部分,其他几个不具备,因为不需要。再看看mini2440上的内存芯片怎么和2440接线的,它使用了2块16位宽的SDRAM:

  

  从上图来看,芯片包括了最基本的地址线,数据线,对比2块芯片,发现它们相同的地址线是连在一起的,都是A0-A12,共13根地址线,而数据线一块是连接2440的LDATA0---LDATA15,一个是LDATA16-LDATA31,再看看2440的引脚:

  可以看出,2440的数据线是DATA0-DATA31,可以接收的数据宽度是32位,而它的地址线是ADDR0--ADDR26,一共是27根,那么2^27就是128M,正好是内存控制器一个bank的大小。再联系SDRAM和2440的接线方式,发现数据线32根分别由2块芯片对接,2块芯片分别用16根,而地址线只用了13根,2^13=8K,那怎么可能做到寻址128M呢?何况SDRAM上居然是从LADDR2开始接线的。那么就得看看SRAM的手册,看看它是怎么被寻址的。

  

  mini2440上SDRAM型号是H57V2562GTR,是一个256Mb的16位位宽的DRAM,注意这里是256Mb,是小b,所有总共是256/8=32MB。看看SDRAM内部的结构功能框图:

这款DRAM内部的存储单元首先是由4个称作BANK的单元组成,然后每个BANK单元上是由一个存储矩阵组成,通过XY轴定位到最小寻址粒度的一个单元,也就是一个16bit的存储单元。然后把这个16bit的单元里面的数据放到数据输出口上。打个比方,假设一块DRAM是一个Excel文件,那么它的bank就是Excel的一个sheet,由横坐标(ABCDEF.......)和纵坐标(12345....)定位一个最基本的单元格,这个单元格就是DRAM的基本存储单元,这款DRAM是16位宽的,所有基本存储单元就是16bit。在看看左下角的Address Buffers,A0-13,地址线,BA1-BA0,bank选择线,首先通过片选信号CS选中这块芯片,然后由BA[0,1]选中bank,再在A0-A12上发出行地址,然后发出列地址,这样一个最小寻址粒度的存储单元就定位下来了,怎么知道地址线上的是行地址还是列地址呢?通过 RAS和CAS这2根信号线。那现在再计算一下128MB怎么来的,行13,列13,bank 2,这样2^13*2^13*2^2 = 2^28 然后是16位宽再乘2,就是2^29MB,521MB,怎么一块就超过了2440的寻址范围,肯定是哪搞错了,再细看DRAM的介绍:

原来只有行地址用了13位,列地址只用了9位,那么通过计算一共是2^(13+9+2+1)=32MB,和芯片的规格一致,那么这样解释就合理了。2440怎么使用这2块SDRAM的呢?首先要确定几个条件,2440芯片本身实际的寻址能力是4G,存储控制器的寻址范围是0x00000000-0x40000000,一共是1G,这1G又分成了8个BANK,每个BANK 128MB,公式表达就是:ADDR = 2*  2 *  227

但是这样寻址这块SDRAM得到的数据是16bit,于是用2块拼接起来,一个来存储低16位,一个存储高16位。假设地址0x30000000,寻址它怎么得到这个存储单元的内容呢?首先它是属于1G这个范围内,然后又是处于bank6,BANK0,行0,列0.

由此可见仅仅需要30位就可以定位一个access cell,这也就是为什么2440地址线只接了A2开始的13位到SDRAm上,由于2440的存储控制器每次只能以4byte对齐访问,一个int的4个byte分别存储在2个芯片上,然后4byte的数据读到存储控制器,地址还未用到的最低2位在存储控制器里面决定是用哪个byte。这就是一个byte的寻址过程。

  2440SDRAM可以使用16位宽的2片拼接,或者8位的4片拼接,32位的1片。显然如果是2片时,这2片的大小必须要一样大的,否则多出来的就会只能存16bit,其他的位会丢失掉,4片也是同样的。

  H57V2562GTR,SDRAM管脚说明

外接管脚名

内接管脚名

全称

描述

A2~A14

A0~A12

Address

地址线

D0 ~D31

DQ0~DQ31

Data Input/Output

数据线

A24,A25

BA0,BA1

Bank Address

L-BANK片选信号

DQM0~DQM3

LDQM, UDQM

Data Input/Output Mask

高,低字节数据掩码信号

SCKE

SCKE

Clock Enable

输入时钟有效信号

SCLK

SCLK

Clock

输入时钟

nSCS0

nSCS

General Chip Select

片选信号(它与nGCS6是同一管脚的两个功能)

nSRAS

nSRAS

Row Address Strobe

行地址选通信号

nSCAS

nSCAS

Column Address Strobe

列地址选通信号

nWE

newnWE

Write Enable

写入有效信号

看2片SDRAM和2440的接线可以看出来,它们只有数据脚和LDQM UDQM引脚不同,这2个引脚来决定数据引脚上高8位和低8位的有效性,由于2440内存控制器只能发出4byte对齐的数据给SDRAM(data线的连接固定了),那么我如果只想存储或者读取一个byte,怎么办?由这2个引脚来控制,它来决定16位宽的高低8位的有效性,确保不想改的byte内容不变。

参考自:

http://blog.csdn.net/mr_raptor/article/details/6555786

mini2440的SDRAM分析的更多相关文章

  1. Mini2440 DM9000 驱动分析(一)

    Mini2440 DM9000 驱动分析(一) 硬件特性 Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系: PW_RST 连接到复位按键,复位按键按下,低电平 ...

  2. mini2440触摸屏驱动分析

    mini2440驱动分析系列之 ---------------------------------------Mini2440触摸屏程序分析 By JeefJiang July,8th,2009 这是 ...

  3. am335x uboot启动流程分析

    基本指令含义 .globl _start .globl指示告诉汇编器,_start这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号 b,bl b是不带返回的跳转  bl带返回的跳 ...

  4. S3C2440 裸机程序之音频

     mini2440之Main分析 2012-03-17 20:51:29 分类: 嵌入式 /****************************************************** ...

  5. Linux网络设备驱动架構學習(二)

    Linux网络设备驱动架構學習(二) 接下來會從以下幾個方面介紹網絡設備驅動的編寫流程: 1.網絡設備的註冊與註銷 2.網絡設備的初始化 3.網絡設備的打開與釋放 4.網絡數據發送流程 5.網絡數據接 ...

  6. mini2440 Nor Flash工作原理分析

    我的mini2440上是只接了一块Nor Flash,型号是S29AL016M90TAI02,这是一块2M Byte,16位宽度的Nor Flash,用于引导扇区的闪存.原理图里面关键的引脚是: 地址 ...

  7. 【转】S3C2440与SDRAM NorFlash NandFlash连线分析

    一.SDRAM(HY57V561620F)连线分析 1.  S3C2440 有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx 的地址 ...

  8. ARM裸板开发:04_MMU 链接地址与运行地址不一致时,(SDRAM)初始化程序地址无关码问题的分析

    ARM裸板开发过程,程序的链接地址设置为为0x30000000,而前期的启动代码以及相关硬件的初始化代码需要在内部iRAM(steppingstone,起始地址0x0)的4K中运行.链接地址与运行地址 ...

  9. mini2440 裸机程序下载到 sdram 不能运行。

    今天在 写了个简单的 led 的汇编程序,下载到 mini2440 的 nand flash 里面可以正常运行,但是下载到 sdram 里面不能运行. 后来发现有几个注意点, 要在 sdram 中运行 ...

随机推荐

  1. Mac上好用软件集锦

    1. 代码编辑器 TextMate 开源免费 2. 图像处理工具  Seahorse 开源免费 3. 远程Windows桌面连接工具 CoRD 开源免费 4. 办公软件 LibreOffice 开源免 ...

  2. [moka同学笔记]百度编辑器Ueditor自动换行,添加<p>的问题(摘录)

     原文:http://www.cnblogs.com/kissdodog/p/5419919.html 百度编辑器Ueditor其实蛮好用的,后来使用了一段时间发现,每次打开后又保存,发现都会往内容的 ...

  3. 中国快递包裹总量的预测-基于SARIMA模型

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  4. 设计模式总结篇系列:观察者模式(Observer)

    观察者模式中通常有两个基本的概念主题:观察者和被观察者.当被观察者状态发生改变时,需要通知相应的观察者,当然,每个被观察者所对应的观察者可能不知一个,他们之间是1:n的关系.用专业一点的术语对观察者模 ...

  5. ILNumerics项目的应用之线性方程

          ILNumerics是一个开源的数值项目,一种NET框架的高性能数学库,它简化了各种数学算法的使用,优化到了C和FORTRAN的速度.现在它提供了一个支持"任何CPU" ...

  6. linux多线程-互斥&条件变量与同步

    多线程代码问题描述 我们都知道,进程是操作系统对运行程序资源分配的基本单位,而线程是程序逻辑,调用的基本单位.在多线程的程序中,多个线程共享临界区资源,那么就会有问题: 比如 #include < ...

  7. 在Hadoop平台跑python脚本

    1.开发IDE,我使用的是PyCharm. 2.运行原理       使用python写MapReduce的“诀窍”是利用Hadoop流的API,通过STDIN(标准输入).STDOUT(标准输出)在 ...

  8. ServiceLocator是反模式

    关于ServiceLocator模式 http://www.cnblogs.com/hwade/archive/2011/01/30/CommonServiceLocator.html 为什么是Ant ...

  9. ResponsiveSlides.js 幻灯片实例演示

    在线实例 默认效果 导航和分页 缩略图 描述说明 回调函数 <div class="wrap">     <ul class="rslides" ...

  10. ASP.NET Url重写

    新建一个类,并实现IHttpModule接口 实现接口,在Init方法中处理请求,在请求方法中实现具体的Url重写操作 补充Url重写方法,通过 Request的Path对象获取请求文件路径,并根据请 ...