JZ2440的SDRAM配置

原创 2018年04月17日 17:43:15

内存控制器


CPU把地址命令发送给内存控制器

然后内存控制器再根据 CPU 发过来的地址

1. 判断这个地址在什么范围 (发出nGCS6 片选信号6SDRAM

2. 根据类型(SDRAM)拆分地址

a. BANK地址

b. 行地(RAS) Row Address

c. 列地址(CAS) Column address

?? 怎么拆分地址?

行地址几条RAS

列地址几条 CAS

: 这些要设置内存控制器的相关寄存器

3.读数据


2440 内存控制器的设置   因为这个只接了 nGCS6 所以 只去配置nGCS6






    ********************          寄存器的配置  BWSCON            ****************

Jz2440选择的是2个芯片拼接起来组成32位的数据总线

BWSCON-----BW6----- 10 (32-bit)

BWSCON-----WS6----- 0 (WAIT disable) 用不到

BWSCON-----ST6----- 0 (Not using UB/LB)

一般我们会把 BANK7设置成BANK6一样 虽然我们没有用到BANK7

:BWSCON = 0x22000000

 

     ***********************          BANKCONn        ********************

      BANKCON0--BANKCON5这些寄存器我们现在都不关心  因为没有用到  采取默认值就好 0x0700

            因为我们要操作 SDRAM 对应的是BANKCON6管  所以去配置 BANKCON6





    BANKCON6 -- MT -- 11(Sync.DRAM)                只有选择SDRAM的时候地址才会被拆分成 Row地址 Colu地址            如果不是的话  地址就会一次性发完出去

    如果你设置成 SDRAM的话 你就只需要设置 Trcd   SCAN  (4-bit)

    怎么看列地址应该设置成多少位 ---- 去看芯片手册

HY57V561620C(L)T(P)

4 Banks x 4M x 16Bit Synchronous DRAM

比较常用的内存芯片手册      

然后去 搜索 columu       发现  Column Address :CA0--CA8   9位(9--bie)



然后去搜索 Trcd   



如果我们的 2440 HCLK = 100HMZ             默认是12MHZ

                            T = 10 ns

   说以我们 选择2个时钟周期就可以了   


    BANKCON6 = 0x00018001

     BANKCON6 -- MT -- 11(Sync.DRAM)  

     BANKCON6 -- Tred -- 00

     BANKCON6 -- SCAN -- 01  

    

*********************                REFRESH 刷新寄存器        ********************




REFRESH(32位,用于设定SDRAM的刷新):


23:是否开启SDRAM刷新,自然选1开启
22:SDRAM刷新模式,选0
21~20:取00或者10,RAS的change时间
19~18:行时间,取11
17~11:0


10~0:就是刷新频率了~~


Refresh period  看SDRAM的芯片手册      ---  



计算公式,R_CNT=2^11+1-SDRAM时钟频率(Mhz)*SDRAM刷新周期(uS)

HY那个手册上写到:8192个刷新周期用64ms,因此刷新周期=64000/8192=7.8125
时钟频率有好多种啊,先实验为100Mhz的吧。。

因此计算出来就是1267.75,四舍五入1268->0x04f4

因此这个REFRESH取值是 0x008c04f4,简单计算方法就是0x008c0000 + 04f4


*****************        BANKSIZE        *************


BANKSIZE(32为寄存器):

支持核突发,使用SCKE,仅在SDRAM期间发出SCLK,地址空间64Mb
因此BANKSIZE为 0x000000B1

MRSRB6~7(SDRAM模式设置)

3个时钟周期,0x3



 



SDRAM和重定位relocate-1.5.ARM裸机第五部分

-
  • 1970年01月01日 08:00

S3C2440存储管理器详解

存储管理器概念,通俗而言就是可以通过它来访问外部存储设备的一种东西s3c2440地址空间分布 s3c2440对外引出了27根地址线ADDR0-ADDR26,访问空间为128MB,还对外引出了8根片选...
  • qq_31505483
  • qq_31505483
  • 2017-01-17 19:28:27
  • 529

02-JZ2440裸机学习之存储管理器

为什么存在存储器管理器: CPU不会管太多,CPU只会发出指令从某个地址读数据: 存储器管理器根据地址 知道是什么东西,然后发出片选等信号 问题: 想访问一个芯片 需要哪些条件 (1)   ...
  • fengyuwuzu0519
  • fengyuwuzu0519
  • 2017-03-25 20:21:34
  • 783

S3C2440内存初始化

共三部分:①2440地址空间 ②内存与芯片硬件连接 ③存储控制器寄存器
  • u011012049
  • u011012049
  • 2015-08-26 10:48:47
  • 708

mini2440硬件篇之SDRAM

不管是PC还是嵌入式系统,都离不开内存,现在的PC和手机平板,大都使用上G的DDR内存。在嵌入式资源小的设备,还是使用SDRAM内存居多。SDRAM的物理结构 SDRAM由多个块组成,每个块类似个矩...
  • HYQ458941968
  • HYQ458941968
  • 2015-04-25 10:34:00
  • 886

深入理解sdram之寄存器配置

背景 此篇文章根据前篇文章 深入理解sdram之基本特性的理解讲解每个寄存器的含义以及配置方法 BWSCON BWSCON中每4位控制位控制一个BANK,最高位对应BANK7,接下来的4位对应...
  • mxgsgtc
  • mxgsgtc
  • 2017-05-08 14:50:41
  • 937

JZ2440存储管理器学习

为什么存在存储器管理器: 答:CPU不会管太多,CPU只会发出指令从某个地址读数据,此时存储器管理器会根据地址判断是什么设备,并负责数据操作,把CPU想操作的数据反馈给CPU S3C2440的地址空间...
  • czg13548930186
  • czg13548930186
  • 2017-07-09 11:22:37
  • 497

存储控制器

嵌入式Linux学习笔记(三)-存储控制器 一、使用存储控制器访问外设的原理1、S3C2440的地址空间S3C2440对外引出27根地址线ADDR0-ADDR26,访问范围只有128MB,CPU对外还...
  • mirkerson
  • mirkerson
  • 2010-11-10 12:07:00
  • 3292

2440初始化存储器原理(接上一篇)

JLInk 调试加载的执行初始化存储器脚本(2440) Setmem 0x53000000 0x00000000 32 Setmem 0x4A000008 0xFFFFFFFF 32 Setme...
  • shareCode
  • shareCode
  • 2012-10-03 22:10:00
  • 1745

存储控制器和SDRAM 实验

S3C2440 存储控制器(memory controller)提供了访问外部设备所需的信号,这是一种通过总线形式来访问扩展的外设。 S3C2440  的存储器控制器有以下的特性: ...
  • u011641885
  • u011641885
  • 2015-08-24 22:45:29
  • 767
收藏助手
不良信息举报
您举报文章:JZ2440的SDRAM配置
举报原因:
原因补充:

(最多只允许输入30个字)