mini2440的SDRAM分析
首先是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 = 22 * 23 * 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分析的更多相关文章
- Mini2440 DM9000 驱动分析(一)
Mini2440 DM9000 驱动分析(一) 硬件特性 Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系: PW_RST 连接到复位按键,复位按键按下,低电平 ...
- mini2440触摸屏驱动分析
mini2440驱动分析系列之 ---------------------------------------Mini2440触摸屏程序分析 By JeefJiang July,8th,2009 这是 ...
- am335x uboot启动流程分析
基本指令含义 .globl _start .globl指示告诉汇编器,_start这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号 b,bl b是不带返回的跳转 bl带返回的跳 ...
- S3C2440 裸机程序之音频
mini2440之Main分析 2012-03-17 20:51:29 分类: 嵌入式 /****************************************************** ...
- Linux网络设备驱动架構學習(二)
Linux网络设备驱动架構學習(二) 接下來會從以下幾個方面介紹網絡設備驅動的編寫流程: 1.網絡設備的註冊與註銷 2.網絡設備的初始化 3.網絡設備的打開與釋放 4.網絡數據發送流程 5.網絡數據接 ...
- mini2440 Nor Flash工作原理分析
我的mini2440上是只接了一块Nor Flash,型号是S29AL016M90TAI02,这是一块2M Byte,16位宽度的Nor Flash,用于引导扇区的闪存.原理图里面关键的引脚是: 地址 ...
- 【转】S3C2440与SDRAM NorFlash NandFlash连线分析
一.SDRAM(HY57V561620F)连线分析 1. S3C2440 有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx 的地址 ...
- ARM裸板开发:04_MMU 链接地址与运行地址不一致时,(SDRAM)初始化程序地址无关码问题的分析
ARM裸板开发过程,程序的链接地址设置为为0x30000000,而前期的启动代码以及相关硬件的初始化代码需要在内部iRAM(steppingstone,起始地址0x0)的4K中运行.链接地址与运行地址 ...
- mini2440 裸机程序下载到 sdram 不能运行。
今天在 写了个简单的 led 的汇编程序,下载到 mini2440 的 nand flash 里面可以正常运行,但是下载到 sdram 里面不能运行. 后来发现有几个注意点, 要在 sdram 中运行 ...
随机推荐
- Java知识点总结(不定时更新)
1.基于分代的垃圾收集算法 设计思路:把对象按照寿命长短来分组,分为年轻代和年老代,新创建的对象被分在年轻代,如果对象经过几次回收后仍然存活,那么再把这个对象划分到年老代.年老代的收集频率不像年轻代那 ...
- 与众不同 windows phone (45) - 8.0 语音: TTS, 语音识别, 语音命令
[源码下载] 与众不同 windows phone (45) - 8.0 语音: TTS, 语音识别, 语音命令 作者:webabcd 介绍与众不同 windows phone 8.0 之 语音 TT ...
- csharp: Procedure with DAO(Data Access Object) and DAL(Data Access Layer)
sql script code: CREATE TABLE DuCardType ( CardTypeId INT IDENTITY(1,1) PRIMARY KEY, CardTypeName NV ...
- SpreadJS 中应用 KnockoutJS 技术
SpreadJS 支持 Knockout (KO)技术, KnockoutJS 是一个使用 MVVM 模式的 JavaScript 库,允许双向数据绑定,使数据和UI界面进行实时的交互更新.关于KO的 ...
- Codeforces Round #346 (Div. 2)---E. New Reform--- 并查集(或连通图)
Codeforces Round #346 (Div. 2)---E. New Reform E. New Reform time limit per test 1 second memory lim ...
- java多线程(一)——线程安全的单例模式
概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例.饿汉式单例.登记式单例三种. 单例模式有一下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3. ...
- ASP.NET WebAPI 13 Filter
Filter(筛选器)是基于AOP(面向方面编程)的设计,它的作用是Actionr的执行注入额外的逻辑,以达到横切注入的目的. IFilter 在WebAPI中所以的Filter都实现了IFilter ...
- uml入门之14图与图之间的关系
1.先奉上整理的14图. 2.其次奉上整理的图之间的6种关系
- MUI - 将tap模拟成原生click体验
mui提供了tap事件替换了html5的click事件,解决了300ms延时的问题.不过相比原生app的click体验还是有些许差距的.关于300ms延时的问题,这篇帖子分析的比较完善,其中提到了穿透 ...
- Emmet插件比较实用常用的写法
看了一些关于Emmet插件写法的文档,港真,怎么可以写这么长啊.其实知道几个大概要点加上实践基本就能上手写了啊 杂话 我前面有一篇[今天发现新大陆:haml和Emmet ],其实一开始的想法是写给自己 ...