S3C2410存储控制器学习

存储控制器简单的说来由13个存储相关的寄存器控制,这十三个寄存器的也是启动代码必须要设置初始值的寄存器。
借助于UPNET2410-S ,我来分析下其相关的作用。下面这段代码是摘自VIVI中的一部分。他们就是UPNET2410要设置的值。

/* initial values for DRAM */
/*#define vBWSCON        0x22111120*/
#define vBWSCON            0x22111110
#define vBANKCON0        0x00000700
#define vBANKCON1        0x00000700
#define vBANKCON2        0x00000700
#define vBANKCON3        0x00000700
#define vBANKCON4        0x00000700
#define vBANKCON5        0x00000700
#define vBANKCON6        0x00018005
#define vBANKCON7        0x00018005
#define vREFRESH        0x008e0459
#define vBANKSIZE        0xb2
#define vMRSRB6            0x30
#define vMRSRB7            0x30 

首先  BWSCON 这个寄存器叫做位宽和等待配置寄存器,英文名字根据我的猜测应该是BUS WIDTH and SLEEP CONFIGURE  ,他的作用很明显是配置存储空间的位宽和相应的等待时间。这里的等待时间应该指的是nWAIT信号,而位宽则是指各个BANK的位宽。这个寄存器还包含了一个功能,就是设置SDRAM的数据掩码引脚,当使用的SDRAM时候应该设置为0.

UPNET2410的板子的硬件配置,从上面设置的值看,SDRAM设置成32位,其他的是16位。

 BANK1-5的配置可以看S3C2410的用户手册进行设置,我想讲的是BANK6-7。

由于BANK6-7映射的SDRAM所以设置会稍微不同点,根据S3C2410手册和SDRAM(   HY57V561620B(L/S)T  )手册设置.下面是UPNET使用的SDRAM的一些特性,这些特性在设置寄存器的时候用的到。

• Auto refresh and self refresh
• 8192 refresh cycles / 64ms
• Programmable Burst Length and Burst Type
- 1, 2, 4, 8 or Full page for Sequential Burst
- 1, 2, 4 or 8 for Interleave Burst
• Programmable CAS Latency ; 2, 3 Clocks 

在BANKCON6-7中16:15位设置外接存储器的类型 。01->SDRAM 00->SRAM,Trcd  TIME for RAS to CAS DELAY,根据S3C2410用户手册上

RAS to CAS delay
00 = 2 clocks 01 = 3 clocks 10 = 4 clocks

设置其为01,3 clock.

1:0位为SCAN位,在UM(S3C2410 USER MANUAL 下面以此简称)上描述如下:

Column address number
00 = 8-bit 01 = 9-bit 10= 10-bit

查看SDRAM芯片文档,有如下 :

Row Address : RA0 ~ RA12, Column Address : CA0 ~ CA8

可知应该设置为01.

那么整个寄存器的值就是上面的0x00018005

REFRESH 寄存器则是设置SDRAM的刷新功能。 这里主要设置的就是一个刷新计数就是0:10位。下面是UM中的计算刷新计数的方法。

SDRAM refresh count value.
Refresh period = (211-refresh_count+1)/HCLK
Ex) If refresh period is 15.6 us and HCLK is 60 MHz,
the refresh count is as follows:
Refresh count = 211 + 1 - 60x15.6 = 1113 

那么根据上面的 8192 refresh cycles / 64ms 可知道刷新时间为64/8192=7.8125us。UPNET2410-S的时钟频率一般设置在200MHz,而HCLK一般是100MHz,所以这里得到的值应该是 211+1-100*7.8125 = 1268  = 0x4f4 所以应该设置为0x00ac00+0x4f4。

BANKSIZE寄存器:设置突然传输、SDRAM时钟信号,使能信号、BANK的大小。0xB2应该满足UPNET2410的硬件需求。

最容易使人忘记的MRSR寄存器, MODE REGISTER SET REGISTER  设置模式寄存器的寄存器。主要设置一个列周期延迟,根据芯片文档,可以设置为3 CLOCK .

 

 

 

转载于:https://www.cnblogs.com/cjjnjust/articles/1598536.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值