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 中运行 ...
随机推荐
- [CLR via C#]18. Attribute
attribute可以说是Microsoft .NET Framework提出的最具创意的技术之一了.利用attribute,可以声明性的为自己的代码构造添加注解,从而实现一些特殊的功能.attrib ...
- edittext 监听内容变化
给EditText追加ChangedListener可以监听EditText内容变化的监听 如图是效果图 类似于过滤的一种实现 1 布局也就是一个EditText,当EditText内容发生变化时 ...
- treap树---营业额统计
台州学院 2924 描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况.Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额 ...
- [PHP] java读取PHP接口数据
和安卓是一个道理,读取json数据 PHP文件: <?php class Test{ //日志路径 const LOG_PATH="E:\phpServer\Apache\logs\\ ...
- Gulp-前端进阶A-2
1.js压缩 注意在根目录的package.json文件里在成功安装uglify后要有 "gulp-uglify": "^1.5.4" 才行 var gulp ...
- 文件无刷新上传(swfUpload与uploadify)
文件无刷新上传并获取保存到服务器端的路径 遇到上传文件的问题,结合之前用到过的swfUpload,又找了一个无刷新上传文件的jquery插件uploadify,写篇博客记录一下分别介绍这两个插件的实现 ...
- GetStartedWithWin10Develop
GetStartedWithWin10Develop 首先要确保已经配置好win10开发环境,开始第一个win10开发的HelloWorld 1.首先创建你的win10项目(示例的项目名称为 Hell ...
- jquery对javascript事件的封装一览
描述 jquery javascript 鼠标点击某个对象 click() onclick 鼠标双击某个对象 dblclick() ondblclick 元素获得焦点 focus() onfocus ...
- CSS类选择器和ID选择器
CSS类选择器和ID选择器皆允许以一种独立于文档元素的方式来指定样式,同时二者皆区分大小写. 区别如下: 第一:在同一个页面内,不允许有相同名字的id对象出现,但是允许相同名字的class 第二:当页 ...
- MapGIS转Shp文件的单位问题
在MapGIS浏览查看一下数据,各种不习惯:用mapgis自带的转shp功能,属性表会出错:利用名为map2shp的试用版软件可将mapgis格式的数据较为良好转成shp格式.但经常会遇到一个单位问题 ...