6410 SDRAM控制寄存器

24 篇文章 0 订阅

我们在项目中更换了DRAM,所以需要重新配置S3C6410的DRAM控制器,结果发现S3C6410中的DRAM控制器还是挺复杂的。

 


S3C6410支持两个DRAM片选,可以分别接最大256MB的内存,该处理器用的DRAM控制器是来自ARM的PrimeCell Dynamic Memory Controller(PL340)。只看S3C6410的Datasheet中的DRAM部分介绍是不够的,你还需要看PL340的技术参考文档,这个文档网上搜索一下就有了。想完全了解6410的DRAM控制器,必须两篇文档都看。我都看了,虽然没完全了解,但是比看6410的datasheet要强多了。

 

我用的是mobile DDR-SDRAM,所以在这里大概介绍一下寄存器及配置流程。先介绍一下寄存器:

 

1. DRAM Controller Status Register (Address: 0x7E001000)

DRAM状态寄存器,这是一个RO寄存器,用于读取DRAM的状态。

 

实际上,读到的有用信息就是Controller Status和Memory width。

 

2. DRAM Controller Command Register (Address: 0x7E001004)

DRAM命令寄存器,设置DRAM的工作状态。

 

最开始应该配置为0x4,是处于Configure状态。在配置完所有的DRAM之后,将该寄存器设置为0x0,处于运行状态。

 

3. Direct Command Register (Address: 0x7E001008)

DRAM命令寄存器,用于发送命令到DRAM和访问DRAM中的MRS和EMRS寄存器。

 

通过该寄存器初始化DRAM,先设置为NOP模式,然后设置为PrechargeAll进行充电,然后设置EMRS和MRS寄存器,一般是这么一个流程。具体的要参见你所使用的DRAM的datasheet。

 

4. Memory Configuration Register (Address: 0x7E00100C)

DRAM的配置寄存器,这个与需要参照你所使用的DRAMdatasheet

 


该寄存器肯定是要配的,看看DRAM的datasheet就知道了。

 

5. Refresh Period Register (Address: 0x7E001010)

DRAM的刷新频率寄存器,用于配置刷新频率的。
 

 根据datasheet,可知计算公式为:DMC_DDR_REFRESH_PRD    EQU    (((HCLK/1000*DDR_tREFRESH)+500000)/1000000)

其中,HCLK=133MHZ=133000000HZ,DDR_tREFRESH=7.8us=7800ns


6. CAS Latency Register (Address: 0x7E001014)

DRAM的CAS延时寄存器,一定要配,参考DRAM的datasheet。

 

 根据datasheet,可知计算公式为:(((HCLK/1000*DDR_tRAS)+500000)/1000000+1)

其中:HCLK=133MHZ=133000000HZ,DDR_tRAS=45ns


7. t_dqss/t_mrd/t-ras/t_rc/t_rcd/t_rfc/t_rp/t_rrd/t_wr/t_wtr/t_xp/t_xsr/t_esr Registers (Address: 0x7E001018---0x7E001048)

DRAM操作中所需时间和延时寄存器,这里不作过多介绍,具体可以参考PL340文档。

 

8. Memory Configuration 2 Register (Address: 0x7E00104C)

DRAM的配置寄存器2。

 
 


9. CHIP_N_CFG Register (Address: 0x7E001200/0x7E001204)

 


上面介绍了一些寄存器,还有一些寄存器由于没有用到,所以没有去了解。下面给一个DRAM初始化的例子:

WriteReg: 0x7e001004            0x00000004                 //设置DRAM控制器状态为Configure

WriteReg: 0x7e001010            0x0000040f             //设置DRAM的刷新周期

WriteReg: 0x7e001014            0x00000006                //设置CAS延时

WriteReg: 0x7e001018            0x00000001                 //设置t_DQSS

WriteReg: 0x7e00101c            0x00000002                 //设置t_MRD

WriteReg: 0x7e001020            0x00000006                  //设置t_RAS

WriteReg: 0x7e001024            0x0000000a                  //设置t_RC

WriteReg: 0x7e001028            0x0000000c                 //设置t_RCD

WriteReg: 0x7e00102c            0x0000018f              //设置t_RFC

WriteReg: 0x7e001030            0x0000000c                  //设置t_RP

WriteReg: 0x7e001034            0x00000002                   //设置t_RRD

WriteReg: 0x7e001038            0x00000002                 //设置t_WR

WriteReg: 0x7e00103c            0x00000002                 //设置t_WTR

WriteReg: 0x7e001040            0x00000002                  //设置t_XP

WriteReg: 0x7e001044            0x00000013                //设置t_XSR

WriteReg: 0x7e001048            0x00000013                //设置t_ESR

WriteReg: 0x7e00100c            0x00010012         //设置DRAM的Column, Row等属性

WriteReg: 0x7e00104c            0x00000b45           //设置DRAM的buswidth,type等属性

WriteReg: 0x7e001200            0x000150f8           //设置RBC以及片选属性

WriteReg: 0x7e001304            0x00000000                 //设置DQS延时

WriteReg: 0x7e001008            0x000c0000         //发送NOP命令到DRAM

WriteReg: 0x7e001008            0x00000000                 //发送Precharge命令到DRAM

WriteReg: 0x7e001008            0x00040000          //发送Autorefresh命令到DRAM

WriteReg: 0x7e001008            0x00040000         //发送Autorefresh命令到DRAM

WriteReg: 0x7e001008            0x000a0000          //设置DRAM的EMRS寄存器

WriteReg: 0x7e001008            0x00080032          //设置DRAM的MRS寄存器

WriteReg: 0x7e001004            0x00000000                  //设置DRAM控制器开始运行

 注:这个是128M的SDRAM配置,若是64M、256M的改一下 P1MEMCFG(0x7e00100C) 和 P1_chip_0_cfg(0x7e001200)。
其中256M更改:WriteReg: 0x7e00100c            0x0001001a  

                    WriteReg: 0x7e001200            0x000150f0          


关于DRAM控制器的配置要参见所使用的DRAM的Datasheet,了解DRAM的结构和初始化过程,才能正确配置。S3C6410的DRAM控制器比较复杂,有些寄存器也不是很理解,在ARM的PL340的文档中也没做太多解释。

我的建议就是能不换DRAM最好,换了也要尽量和S3C6410板上的DRAM相近。

 

转自:http://www.hzlitai.com.cn/article/ARM11/cphard/1776.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值