S5PV210芯片的DRAM控制器介绍、初始化DDR的流程分析

1、DRAM的地址空间

在这里插入图片描述

(1)从地址映射图可以知道,S5PV210有两个DRAM端口。 DRAM0的内存地址范围:0x20000000~0x3FFFFFFF(512MB);DRAM1:的内存地址范围:0x40000000~0x7FFFFFFF(1024MB);
(2)S5PV210实际最多能接1.5G的内存。32位的CPU理论上能接4G的内存,但是ARM结构的机器是统一编址,寄存器会占掉一部分地址空间,所以实际是达不到4G的内存;

2、DRAM端口的引脚

在这里插入图片描述

DRAM端口的引脚:32根数据线(Xm1_DATAn) + 14根地址线(Xm1_ADDRn) + 3根片选信号线(Xm1_BAn) + 控制信号线。

3、DRAM控制器

DRAM是比较复杂的器件,初始化DRAM需要根据数据手册里的时序说明来写代码,没有对DRAM有深入的了解是没法写出合适的代码。但是DRAM的接口统一,于是在复杂CPU里集成了DRAM控制器,编程人员只需要操作寄存器就可以发出相应的时序,而不用去管时序是如何产生的。DRAM控制器简化了使用Soc开发人员的工作,我们只需要知道DRAM的大致过程和关键的参数就可以去初始化DRAM。

4、DRAM初始化

4.1、数据手册里初始化步骤

在这里插入图片描述

DRAM控制器支持多个版本的DRAM的,比如S5PV210支持LPDDR、LPDDR2、DDR2。不同版本的DRAM初始化步骤是不一样的,上面就是初始化DDR2的部分初始化步骤。初始化DDR2的代码就是按照上面的步骤进行的,但是上面的步骤很粗略,很多细节没有列举出来,但是可以辅助我们阅读DDR2的初始化代码;

4.2、实际代码初始化流程分析

代码来源:uboot中对DRAM的初始化代码,下面只是从逻辑上梳理了初始化过程,要结合代码才能真正理解整个初始化过程;
(1)设置GPIO引脚的驱动强度;
(2)设置DRAM控制器的DLL,给DRAM控制器提供稳定的时钟信号;
(3)关掉DRAM的自动重刷新;
(4)配置DRAM的相关参数:行地址、列地址、自动重刷新间隔、DRAM的有效地址空间、Memory Burst Length、数据线宽度、DRAM类型等关键参数;
(5)根据数据手册里的初始化步骤,依次给DRAM发命令进行初始化。发命令的实质就是按照时序去初始化DDR2,只不过时序由DRAM控制器产生,我们不再操心。
(6)最终DDR2初始化成功,后面的程序都重定位到DDR2中执行;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值