sdram知识讲解_华清远见

合集下载

sdram知识讲解_华清远见

sdram知识讲解_华清远见
sdram 知识讲解 本篇文章为大家带来 sdram 知识讲解,sdram 如何裸奔,希望看完对大家的学习之路有所帮助。 一、sdram 的介绍 SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器,同 步是指 Memory 工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需 要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。 二、s3c2410 内部存储器
S3C2410 作为 32 位的 CPU,可以使用的地址范围理论上可以达到 4G。除了上述用于连接外设的 1GB 地址空间外,还有一部分是 cpu 内部寄存器的地址,剩下的地址空间没有使用。
四、SDRAM 的工作原理
SDRAM 的内部是一个存储阵列。阵列就如同表格一样,将数据"填"进去。在数据读写时和表格的检索 原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是 内存芯片寻址的基本原理。
注意:
把跳线帽拔了是从 NOR FLASH 启动,此时零地址在 NOR FLASH 上,S3C2410 片内的 4k SRAM 被映射到 高地址 0x40000000。
把跳线帽插上是 NAND FLASH 启动,此时 SRAM 被映射到零地址。此时,硬件上会自动把 NAND FLASH 前 4k 拷贝到 SRAM 中去。
如上图所示,左边对应不使用 NAND FLASH 作为启动设备,右边对应使用 NAND FLASH 作 FLASH,也就说它既支持从 NOR FALSH 启动,也支持从 NAND FLASH 启 动。 接线如下
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资0配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中体2资2配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下可关都能于可地管以缩路正小高常故中工障资作高料;中试对资卷于料连继试接电卷管保破口护坏处进范理行围高整,中核或资对者料定对试值某卷,些弯审异扁核常度与高固校中定对资盒图料位纸试置,卷.编保工写护况复层进杂防行设腐自备跨动与接处装地理置线,高弯尤中曲其资半要料径避试标免卷高错调等误试,高方要中案求资,技料编术试写5交、卷重底电保要。气护设管设装备线备置4高敷、调动中设电试作资技气高,料术课中并3试中、件资且卷包管中料拒试含路调试绝验线敷试卷动方槽设技作案、技术,以管术来及架避系等免统多不启项必动方要方式高案,中;为资对解料整决试套高卷启中突动语然过文停程电机中气。高课因中件此资中,料管电试壁力卷薄高电、中气接资设口料备不试进严卷行等保调问护试题装工,置作合调并理试且利技进用术行管,过线要关敷求运设电行技力高术保中。护资线装料缆置试敷做卷设到技原准术则确指:灵导在活。分。对线对于盒于调处差试,动过当保程不护中同装高电置中压高资回中料路资试交料卷叉试技时卷术,调问应试题采技,用术作金是为属指调隔发试板电人进机员行一,隔变需开压要处器在理组事;在前同发掌一生握线内图槽部纸内故资,障料强时、电,设回需备路要制须进造同行厂时外家切部出断电具习源高题高中电中资源资料,料试线试卷缆卷试敷切验设除报完从告毕而与,采相要用关进高技行中术检资资查料料和试,检卷并测主且处要了理保解。护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

SDRAM原理和时序

SDRAM原理和时序

SDRAM原理和时序SDRAM(Synchronous Dynamic Random Access Memory)是一种同步动态随机访问存储器,主要用于计算机系统中,以存储数据和指令。

本文将从原理和时序两个方面对SDRAM进行详细的解析和教程。

一、原理1.寻址:SDRAM采用地址总线将存储单元进行编号,通过地址总线可以访问存储器中特定的单元。

SDRAM的地址空间通常是2的幂次方大小,即N=2^k,其中k为地址总线的位数。

2.读写操作:SDRAM的读写操作是通过数据总线进行的。

写操作可以将数据写入特定的存储单元,而读操作可以将存储单元中的数据读取到CPU或其他外部设备。

3.预充电:SDRAM中的每个存储单元都是由一个电容和一个开关组成。

在进行读写操作之前,需要对存储单元进行预充电操作,以确保电荷的准确读取和写入。

4.刷新:SDRAM是一种动态存储器,存储单元中的电荷会逐渐漏失。

为了保持数据的有效性,SDRAM需要进行定期的刷新操作,即将所有存储单元的数据重新写入并恢复电荷。

二、时序1.读时序:SDRAM的读操作包括行选通、列选通和数据输出三个过程。

首先,通过地址总线选通特定的行(行选通),然后选通特定的列(列选通),最后将存储单元中的数据通过数据总线输出。

读操作的时序需要考虑地址选通和数据输出之间的延迟。

2.写时序:SDRAM的写操作包括行选通、列选通和数据输入三个过程。

首先,通过地址总线选通特定的行(行选通),然后选通特定的列(列选通),最后将数据通过数据总线输入到特定的存储单元中。

写操作的时序需要考虑地址选通和数据输入之间的延迟。

时序的设计和调整对于SDRAM的稳定性和性能非常重要。

不同的SDRAM芯片可能有不同的时序参数需要设置和优化。

三、教程以下是使用SDRAM的一般步骤:1.确认SDRAM的规格和时序参数,包括容量、位宽、频率等,并根据需要准备好相应的电路板和接口。

2.将SDRAM芯片焊接到电路板上,确保正确连接电源和信号线。

SDRAM原理介绍

SDRAM原理介绍

SDRAM原理介绍SDRAM(Synchronous Dynamic Random Access Memory)是一种同步动态随机存取存储器,广泛应用于计算机和其他电子设备中。

它是一种存储芯片,能够在时钟信号的同步下进行读取和写入操作。

SDRAM相对于传统的DRAM(动态随机存取存储器),具有更高的性能和速度。

SDRAM的工作原理是基于两个重要的概念:同步和预充电。

首先,SDRAM与系统时钟同步工作,使得存储和处理能发生在相同的时间单位内,从而充分利用系统的速度。

这种同步性质使得SDRAM能够在每个时钟周期内完成读取或写入操作。

其次,SDRAM采用了预充电的策略来提高读取速度。

在一个字节被读取之前,SDRAM将已经被访问的内部存储位预充电成高电平。

这样在读取数据时,预充电电压将缩短读出时间,提高存取的速度。

同时,预充电还可以提高写入速度,因为预充电后的内存位在写入数据时可以更快地接收并存储数据。

SDRAM有多种类型,最常见的是DDR(Double Data Rate)SDRAM和DDR2 SDRAM。

DDR SDRAM在每个时钟周期内完成两个传输操作,每个操作仅需一次时钟脉冲,从而提高了传输速度。

而DDR2 SDRAM在DDR的基础上进行了改进,提高了传输速度和带宽。

SDRAM的内部结构包括一个存储单元阵列和控制逻辑。

存储单元阵列由一个个存储位组成,每个存储位可以存储一个数据位。

通过行选择器和列选择器,控制逻辑可以选择并读取或写入特定的存储位。

控制逻辑还有其他功能,如提供时钟信号,实现读取和写入操作的同步等。

在SDRAM的读取过程中,首先需要通过地址线送入目标内存位的地址。

然后通过控制逻辑选择行选择器和列选择器,将内存位的数据输出到读取缓冲区。

最后,将数据输出到CPU或其他外部设备。

写入过程与读取过程相似,但是需要将数据输入到写入缓冲区,并将数据写入到目标内存位。

总结起来,SDRAM是一种同步动态随机存取存储器,具有同步和预充电的工作原理。

SDRAM-高手进阶,终极内存技术指南-完整进阶版

SDRAM-高手进阶,终极内存技术指南-完整进阶版

高手进阶,终极内存技术指南作为电脑中必不可少的三大件之一(其余的两个是主板与CPU),内存是决定系统性能的关键设备之一,它就像一个临时的仓库,负责数据的中转、暂存……不过,虽然内存对系统性能的至关重要,但长期以来,DIYer并不重视内存,只是将它看作是一种买主板和CPU时顺带买的“附件”,那时最多也就注意一下内存的速度。

这种现象截止于1998年440BX主板上市后,PC66/100的内存标准开始进入普通DIYer的视野,因为这与选购有着直接的联系。

一时间,有关内存时序参数的介绍文章大量出现(其中最为著名的恐怕就是CL参数)。

自那以后,DIYer才发现,原来内存也有这么多的学问。

接下来,始于 2000年底/2001年初的VIA芯片组4路交错(4-Way Interleave)内存控制和部分芯片组有关内存容量限制的研究,则是深入了解内存的一个新开端。

本刊在2001年第2期上也进行了VIA内存交错控制与内存与模组结构的详细介绍,并最终率先正确地解释了这一类型交错(内存交错有多种类型)的原理与容量限制的原因。

从那时起,很多关于内存方面的深入性文章接踵而至,如果说那时因此而掀起了一股内存热并不夸张。

大量的内存文章让更多的用户了解了内存,以及更深一层的知识,这对于DIY当然是一件好事情。

然而,令人遗憾的是这些所谓的内存高深技术文章有不少都是错的(包括后来的DDR与RDRAM内存的介绍),有的甚至是很低级的错误。

在这近两年的时间里,国内媒体上优秀的内存技术文章可谓是寥若晨星,有些媒体还编译国外DIY网站的大篇内存文章,但可惜的是,外国网站也不见得都是对的(这一点,国内很多作者与媒体似乎都忽视了)。

就这样,虽然打开了一个新的知识领域,可“普及”的效果并不那么好,很多媒体的铁杆读者高兴地被带入内存深层世界,但也因此被引向了新的误区。

不过,从这期间(2001年初至今)各媒体读者对这类文章的反映来看,喜欢内存技术的玩家大有人在且越来越多,这是各媒体“培养”的成果。

《SDRAM接口学习》课件

《SDRAM接口学习》课件

常见的SDRAM接口类型
DDDR2 SDRAM
第二代双倍速率同步动态随机访问存储器。
DDR3 SDRAM
第三代双倍速率同步动态随机访问存储器。
SDRAM接口的应用举例
1
云游戏
SDRAM技术能够更快速地为玩家提供更好的云游戏体验。
2
智能家居
SDRAM的低功耗特性使智能家居产品运行更为顺畅。
AGP与SDRAM接口时序图
将SDRAM接口与AGP接口进行对比,有利于更好地了 解SDRAM接口。
SDRAM接口的电气规范
电压规范
SDRAM存储器的工作电压与主板提供的电压应该匹 配,一般为3.3V。
电气特性
SDRAM存储器在运行过程中需要经历不同的电平 (如高电平、低电平),这就需要按照一定规范进 行设计保证正常运行。
SDRAM接口学习
本课件介绍SDRAM接口的基本原理,时序图解析,电气规范,以及应用举例。
SDRAM接口简介
1 定义
SDRAM (Synchronous Dynamic Random Access Memory)同步动态随机访 问存储器,是一种计算机 存储技术。
2 特点
与DRAM相比,SDRAM具 有更高的访问速度、更低 的功耗、更高的容量和更 低的价格。
3
工业控制
SDRAM可以被用于广泛的工业控制领域,例如自动化、机器人、纺织、电力等。
总结和展望
SDRAM接口技术的不断改进和创新不仅推动了计算机存储技术的发展,也推动着许多行业的进步与发展。
3 用途
普遍用于计算机的主存和 图形处理器(GPU)等领域。
SDRAM接口的基本原理
信号名称 CLK CS RAS CAS WE DQ

SDRAM工作原理

SDRAM工作原理
1.SDRAM工作原理: 原理:行选与列选 信号使存储电容与外界 的传输电路导通,从而 实现放电(读取)与充 电(写入)。
图1:DRAM存储原理示意图
2.SDRAM结构: a: SDRAM为随机存储,可以自由指 定地址进行读写;
b: 芯片一般以4个L-bank (Logic bank) 组成,可用(BA0,BA1寻址);
c: L-bank为相应个行R和列C的矩阵;
3. SDRAM芯片容量
=MxW (M:存储单元总数;W:每个存储单元的容量,即芯片位宽)
存储单元总数M=行数(R)x 列数(C)x L-bank 的数量
不同厂家的行数和列 数设定并不一样
3.SDRAM芯片结构:
三.SRAM基本操作与内部工作时序
1.芯片初始化 SDRAM逻辑控制单元中有模式寄存器(MR),开机需Biblioteka 其进行初始化操作。谢谢大家
2.行有效 在CS#, L-bank定址的同时 RAS#处于有效状态,An地 址线发送具体的行地址。
3.列读写 a: 行地址确定后,对列地址寻址;
b: A0-A11作为行列地址分时复用,配合CAS#输出列地址;
c: 由WE#来控制读写(0时为写,1时为读) d: RAS to CAS Delay (tRCD) :发送读写命令时必须与行有效命令有一个间隔。 单位为时钟周期。
4.数据输出/读 a: CL(CAS Latency) CAS潜伏期:从CAS与读取命令发出到第一笔数据输出的这 段时间。单位:时钟周期。 b: CAS响应时间快于RAS:一个位宽为n bit 的芯片,行地址要选通n x c(列数为 c)个存储体,而列地址只需选通n个存储体。 c: CL的产生原因: 1)存储体中晶体管的反应时间使数据和CAS在同一上升沿触发,至少延后一个 时钟周期; 2)tAC (Access time from clock)时钟触发后的访问时间:(由于存储电容小,故 信号需经S-AMP放大来保证被识别(事前还要进行电压比较来进行逻辑电平判断) 从数据I/O总线上有数据输出之前的一个时钟上升沿开始,数据已传向S-AMP,数 据已经被触发,经过一定的驱动时间最终向数据I/O总线传输(小于一个时钟周 期)。

sdram原理(一)

sdram原理(一)

sdram原理(一)SDRAM原理什么是SDRAM?SDRAM是随机存取存储器(Synchronous Dynamic Random Access Memory)的缩写,是一种常见的计算机内存。

它是一种同步存储器,具有高速读写的特性,广泛用于个人电脑、服务器、网络设备等计算机系统中。

SDRAM的工作原理SDRAM的原理相对复杂,下面将从浅入深地解释SDRAM的工作原理。

时钟信号和同步SDRAM的工作是通过时钟信号进行同步的。

在SDRAM中,时钟信号控制数据的读写和传输。

读写操作必须与时钟信号的上升沿或下降沿对齐,以确保数据传输的正确性。

存储单元和存储电容SDRAM的存储单元是由一对MOSFET(金属-氧化物-半导体场效应晶体管)和一个电容器组成。

MOSFET用于控制数据的读写操作,而电容器则用于存储数据。

存储电荷和刷新SDRAM中的电容器存储的是电荷,而不是电压。

电荷会随时间逐渐泄漏,因此需要定期刷新以保持数据的有效性。

刷新操作通过向每个存储单元施加一个恒定电压来完成。

行地址和列地址SDRAM的存储区域被划分为多个行和多个列。

行地址用于选择行,列地址用于选择列。

通过控制行地址和列地址,可以实现对特定数据的读写操作。

预充电和读取在进行读取操作之前,需要对存储单元进行预充电操作。

预充电操作将电容器的电压调整到正确的工作电压,以便进行下一次的读写操作。

CAS(列地址选择)延迟CAS延迟是SDRAM中的一个重要概念。

它表示在进行读取操作时,需要等待的时间,以确保数据的正确传输。

CAS延迟的数值决定了SDRAM的读取速度和性能。

总结SDRAM作为一种常见的计算机内存,具有高速读写和大容量的优势。

它的工作原理涉及时钟信号、存储单元、存储电容、刷新、行地址和列地址、预充电、CAS延迟等多个方面。

了解SDRAM的工作原理有助于我们更好地理解计算机系统中内存的工作方式和性能表现。

SDRAM工作原理及S3C2410 SDRAM控制器配置方法

SDRAM工作原理及S3C2410 SDRAM控制器配置方法

作者:刘洪涛,华清远见嵌入式学院讲师。

SDRAM的工作原理、控制时序、及相关控制器的配置方法一直是嵌入式系统学习、开发过程中的一个难点。

掌握SDRAM的知识对硬件设计、编写系统启动代码、提高系统存取效率、电源管理都有一定的意义。

本文想通过:1.SDRAM的工作原理。

2.HY57V561620 SDRAM介绍。

3.S3C2410和HY57V561620的接线方法。

4.S3C2410 SDRAM控制器的配置方法。

5.SDRAM控制时序分析这5个方面来帮助初学者了解SDRAM。

文章分为2篇,第1篇讲解前3个知识点,第2篇讲解后2个。

一、SDRAM的工作原理SDRAM之所以成为DRARM就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是DRAM 最重要的操作。

那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。

这样刷新速度就是:行数量/64ms。

我们在看内存规格时,经常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就代表这个芯片中每个Bank的行数。

刷新命令一次对一行有效,发送间隔也是随总行数而变化,4096行时为15.625μs(微秒,1/1000毫秒),8192行时就为7.8125μs。

HY57V561620为8192 refresh cycles / 64ms。

SDRAM是多Bank结构,例如在一个具有两个Bank的SDRAM的模组中,其中一个Bank在进行预充电期间,另一个Bank却马上可以被读取,这样当进行一次读取后,又马上去读取已经预充电Bank的数据时,就无需等待而是可以直接读取了,这也就大大提高了存储器的访问速度。

为了实现这个功能,SDRAM需要增加对多个Bank的管理,实现控制其中的Bank进行预充电。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

sdram知识讲解本篇文章为大家带来sdram知识讲解,sdram如何裸奔,希望看完对大家的学习之路有所帮助。

一、sdram的介绍SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器,同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。

二、s3c2410内部存储器上面的图是我个人对存储器的理解。

我们知道,市面上内存的类型很多,那一款cpu是如何来识别如此多的RAM呢?这一切都是内存控制器来做的,我们就需要对内存控制器进行配置。

当然内存控制器支持的 RAM类型也是有限的。

其实cpu在取数据的时候,只是执行一条指令,例如:ldr r0,[r2];关于数据怎么来,cpu并不关心。

整个数据的读取和写入全部由内存控制器完成。

三、s3c2410的地址空间s3c2410的"存储控制器"提供了访问外部设备所需的信号,它有如下特性:A.支持小字节、大字节序(通过软件选择)B.每个BANK的地址空间为128M,总共1GB(8BANKS)C.可编程控制的总线位宽(8/16/32-bit),不过BANK0只能选择两种位宽(16/32-bit)D.总共8个BANK,BANK0-BANK5可以支持外接ROM,SRAM等,BANK6-BANK7 除可以支持ROM、SRAM外,还支持SDRAM等E.BANK0-BANK6共7个BANK的起始地址是固定的F.BANK7的起始地址可编程选择G.BANK6、BANK7的地址空间大小是可编程控制的H.每个BANK的访问周期均可编程控制I.可以通过外部的"wait"信号延长总线的访问周期 <J.在外接SDRAM时,支持自刷新(self-refresh)和省电模式(power down mode)S3C2410对外引出的27根地址线ADDR0-ADDR26的访问范围只有128MB,那么如何达到上面所说的1GB 的访问空间呢?CPU对外还引出了8根片选信号nGCS0-nGCS7,对应于BANK0-BANK7,当访问BANKx的地址空间时,nGCSx引脚输出低电平用来选中外接的设备。

这样,每个nGCSx对应128MB地址空间,8个nGCSx信号总共就对应了1GB的地址空间。

8个BANK如下图所示:如上图所示,左边对应不使用NAND FLASH作为启动设备,右边对应使用NAND FLASH作为启动设备在fs2410上,BANK0接了NOR FLASH,也就说它既支持从NOR FALSH启动,也支持从NAND FLASH 启动。

接线如下注意:把跳线帽拔了是从NOR FLASH启动,此时零地址在NOR FLASH上,S3C2410片内的4k SRAM被映射到高地址0x40000000。

把跳线帽插上是NAND FLASH启动,此时SRAM被映射到零地址。

此时,硬件上会自动把NAND FLASH前4k拷贝到SRAM中去。

S3C2410作为32位的CPU,可以使用的地址范围理论上可以达到4G。

除了上述用于连接外设的1GB地址空间外,还有一部分是cpu内部寄存器的地址,剩下的地址空间没有使用。

四、SDRAM的工作原理SDRAM的内部是一个存储阵列。

阵列就如同表格一样,将数据"填"进去。

在数据读写时和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。

先来看看fs2410上面内存的接线原理图内存的芯片是:K4S561632D-TC75关键特性如下:1.4M x 16bit x 4BANK = 32 M2.64ms refresh period (8K Cycle)(一个bank刷新完所需时间64ms,总共8 k = 8192个行,每一行刷新的间隔时间为64ms / 8192 = 7.8125us)3.MAX 主频133MHz(CL=3)注意:CL,就是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS潜伏期)。

这里只是简单罗列了一些重要特性,其他特性读者可以查看其datasheet。

引脚功能:下面我们再来看看sdram 是如何寻址1.通过ADDR24,ADDR25,确定bank地址2.通过RA0~RA12,确定行地址(8192个行)3.通过CA0~CA8,确定列地址(512个列)选定bank后,通过行地址和列地址就可以定位在那个单元格,在结合原理图我们知道,fs2310接了两个sdram,地址线复用,数据线分开。

这样一个4字节的数据,前两个字节存放在第一个sdram,后两个字节存放在第二个sdram。

注意:先发bank地址,在发行地址,在发列地址此时你也许有一个疑问,如果按照上面的描述,对于一个给定的地址进行读写都是4byte,但是有我们知道,有些时候我们读取或写入只是某一个字节。

对于1byte的读写是通过LDQM、UDQM。

分别称为低字节屏蔽、高字节屏蔽。

在来看看sdram的时序图Trp(Row precharge time):行预充电时间(min : 20 ns)Trcd(/RAS to /CAS delay):行无效到列有效的时间(min : 20 ns)呵呵,要想得到这样的时序,我们只需要配置内存控制器就可以了。

我们接的是nGCS627、26都是对于SRAM 的,我们是SDRAM使用默认的就可以.[25:24] 10,有人也许会问,我们的sdram 不是16bit的吗?不要忘记了我们接了2块sdram,用了32根数据线。

我们的sdram,[16:15] 使用11Trcd的值 datasheet给出的最少是20ns,默认是10 = 4 clocks 对于 100MHZ,也就是40ns,个人觉得此处可以使用默认值SCAN 10=9bit刷新控制器配置如下:REFEN : 1TREFMD : 0Trp : 00Trc : [datasheet: min 65ns]这里我们选择10 = 6clocksRefresh Counter我在板子上设置HCLK = 101.4MHZ,Refresh count = 2^11 + 1 - 101.4 x 7.8125 = 1256这里我们主要关注BK76MAP,其他的使用默认值BANK6/7对应的地址空间与BANK0-5不同。

BANK0~5的地址空间大小都是固定的128MB,地址范围是(x * 128M)到(x +1 )*128M -1,x表示0到5。

BANK6/7的大小是可以边的,以保持这两个空间的地址连续,即BANK7的起始地址会随他们的大小变化。

<fs2410BANK6接的是2块32M sdram,大小为64M,BANK7没用,所以[2:0] 000=64MB/64MB这里我们只需要设置CL就可以,其他都是fixed(固定),不需要设置。

CL : 011 = 3clocks.SMRDATA:.word (2 << 24) + (1 << 26) @BWSCON.word 0x0700 @BANKCON0.word 0x700 @BANKCON1.word 0x700 @BANKCON2.word 0x700 @BANKCON3.word 0x700 @BANKCON4.word 0x700 @BANKCON5.word (3 << 15) + (1 << 0) @BANKCON6.word 0x18001 @BANKCON7.word (1 << 23) + (2 << 18) + ( 1256 << 0) @REFRESH.word (1 << 7) + (1 << 0) @BANKSIZE.word (3 << 4) @MRSRB6.word (3 << 4) @MRSRB7案例:从 nand 启动,然后将 sram的代码拷贝到sdram,然后跳到sdram中去执行代码start.S.extern main.text.global _start_start:#define pWTCON 0x53000000#define CLKDIVN 0x4c000014#define MPLLCON 0x4c000004#define MEMBASE 0x48000000bl disable_watchdogbl init_sys_clockbl init_sdrmbl copy_sram_to_sdramldr pc,=on_sdram @pc指针指向内存执行代码on_sdram:@此时内存已经初始化好,设置栈指针ldr sp,=0x33000000bl mainmainloop:b mainloopdisable_watchdog:@关看门狗,不然cpu会不断重启ldr r0,=pWTCONmov r1,#0str r1,[r0]mov pc,lr init_sys_clock:@目前为止,cpu工作在12MHZ频率下@提升cpu工作频率FCLK:HCLK:PCLK=1:2:4ldr r0,=CLKDIVNmov r1,#3str r1,[r0] @ifHDIVN=1,must asynchronous buf mode mrc p15,0,r0,c1,c0,0orr r0,r0,#0xc0000000mcr p15,0,r0,c1,c0,0@设置MPLL,使cpu工作在202.80MHZldr r0,=MPLLCONldr r1,=0x000a1031str r1,[r0]mov pc,lrcopy_sram_to_sdram:@将sram的4k数据全部复制到sdram中去@sram的起始地址为0x00000000,sdram中的起始地址为0x30000000 mov r1,#0ldr r2,=0x30000000mov r3,#4096 @4 * 10241:ldr r4,[r1],#4str r4,[r2],#4cmp r1,r3bne 1bmov pc,lrinit_sdrm:@初始化sdramldr r0,=MEMBASE @13个寄存器的首地址adrl r1,SMRDATA @13个寄存器值存放的地址mov r2,#52 @13 * 4 = 52 add r2,r2,r11:ldr r3,[r1],#4str r3,[r0],#4cmp r1,r2bne 1b /*every thing is fine now*/mov pc,lr @ .ltorg @声明一个数据缓冲池的开始SMRDATA:.word (2 << 24) + (1 << 26) @BWSCON.word 0x0700 @BANKCON0.word 0x700 @BANKCON1.word 0x700 @BANKCON2.word 0x700 @BANKCON3.word 0x700 @BANKCON4.word 0x700 @BANKCON5.word (3 << 15) + (1 << 0) @BANKCON6.word 0x18001 @BANKCON7.word (1 << 23) + (2 << 18) + (1256 << 0) @REFRESH .word (1 << 7) + (1 << 0) @BANKSIZE.word (3 << 4) @MRSRB6.word (3 << 4) @MRSRB7led.c#include "s3c2410.h"//初始化int led_init(){//GPFCON -> [8:15]清零GPFCON &= ~(0xff << 8);//GPF4 GPF5 GPF6 GPF7设为输出模式GPFCON |= 0x55 << 8;//输出高低平,关闭四路LED灯GPFDAT |= 0xf << 4;return 0;}//关闭LEDint led_off(){GPFDAT |= 0xf << 4; return 0;}//延时函数int delay_time(int time){int i,j; //让两个for循环作为延时for(i = 0;i < time;i ++)for(j = 0;j < time;j ++);return 0;}//流水灯int run_water_led(int count) {int i = 0; while(count --){led_off();delay_time(1000);for(i = 4;i < 8;i ++){GPFDAT &= ~(0x1 << i);delay_time(1000);}}return 0;}int main(){int i;led_init(); run_water_led(5);led_off();return 0;}Makefile:led.bin:start.S led.carm-none-linux-gnueabi-gcc -c -g start.S -o start.o&nbnbsp; arm-none-linux-gnueabi-gcc -c -g led.c -o led.o# arm-none-linux-gnueabi-ld -Ttext 0x00000000 start.o led.o -o led_elfarm-none-linux-gnueabi-ld -Ttext 0x30000000 start.o led.o -o led_elfarm-none-linux-gnueabi-objcopy -O binary -S led_elf led.bincp led.bin /tftpbootclean:rm -rf *.o led_elf led.bin以上就是sdram如何裸奔,由华清远见为大家带来的sdram知识讲解。

相关文档
最新文档