SDRAM——X210的SDRAM的初始化

以下内容源于朱友鹏嵌入式课程的学习与整理,如有侵权请告知删除。

参考博客:s5pv210——初始化SDRAM - biaohc - 博客园

这里说的SDRAM,简单点理解就是内存。

一、SDRAM的简介

1、SDRAM的含义

SDRAM是Syncronized Dynamic Ramdam Access Memory的缩写,中文意思是“同步动态随机存储器”。我们常说的DDR,严格来说应该叫DDR SDRAM,它是SDRAM的升级版。

2、SDRAM的特点

(1)容量大、价格低、掉电易失性、随机读写、总线式访问(SDRAM通过地址总线和数据总线接口与SoC通信)。

(2)SDRAM 属于动态内存,需要初始化才能使用;而静态内存 SRAM开机上电后就可以直接运行,不需要初始化。P.s.NorFlash和NandFlash类似于SRAM和SDRAM的区别。

3、SDRAM的数据手册

SDRAM在系统中属于SoC外接设备,即外部外设。随着半导体技术发展,很多东西都逐渐集成到SoC内部,但仍在外部的有Flash、SDRAM、网卡芯片、音频编码模块等等。现在有一些高集成度的芯片也试图把这几个集成进去,做成真正的单芯片解决方案。

SDRAM很标准化,做SDRAM的厂商并不多,比较著名的公司有三星与金士顿。

三星官方的数据手册(指用户手册)没有芯片相关的参数设置信息,都是芯片选型与外观封装方面的信息。其中选型是给产品经理来看的,封装和电压等信息是给硬件工程师看的。我们软件工程师最关注的是工作参数信息,但是数据手册没有。

开发板原理图上使用的SDRAM是K4T1G164QQ。其中K表示三星产品,4表示是DRAM,T表示产品号码,1G表示容量(这里是指1Gb,也就是128MB。X210开发板一共用了4片相同的内存,所以总容量是512MB),16表示单芯片是16位宽的,4表示是4bank。

二、S5PV210的SDRAM介绍

1、原理图中SDRAM的相关部分

(1)X210核心板原理图

由X210核心板原理图可知,S5PV210共有2个内存端口,即DRAM0(对应原理图的内存port1)和DRAM1(对应原理图的内存port2)。

(2)X210开发板的内存地址范围

X210开发板最多支持1.5GB的内存。

DRAM0的内存地址范围:0x20000000~0x3FFFFFFF(512MB),对应引脚是Xm1xxxx。

DRAM1的内存地址范围:0x40000000~0x7FFFFFFF(1GB),对应引脚是Xm2xxxx。

实际开发板不需要这么大,比如X210开发板只有512MB内存,在DRAM0端口分布256MB,在DRAM1端口分布256MB。即X210开发板内存的合法地址是0x20000000~0x2FFFFFFF、0x40000000~0x4FFFFFFF。当DDR初始化完成之后,这些地址都可以使用;如果不慎使用不合法地址比0x30004000,则死路一条。

这些地址是可以重新设置的,见博客移植三星官方的uboot到x210开发板的第4部分。

(3)每个DDR端口都由3类总线构成

每个DDR端口都由3类总线构成,即地址总线、控制总线、数据总线。

地址总线是指Xmn_ADDR0~XMnADDR13这14根地址总线。

数据总线是指Xmn_DATA0~XMnDATA31这32根数据线,这说明我们用的是32位的内存。

(4)4片内存芯片

从原理图可以看出整个SDRAM,由4片16位内存芯片组成,每片内存芯片128MB,其中有两片内存芯片并联成32位内存,共256MB内存连接在DMC0,另两个内存芯片也并联成32位内存,共256MB连接在DMC1。

2、数据手册中SDRAM相关部分

下图来自数据手册《NT5TU64M16GG-DDR2-1G-G-R18-Consumer》第10页。

 这个框图是128Mb×8结构的,8指的是8bank,每bank128Mbit(16MB),则共128MB。

每个bank内部通过row address(14位)*  column address(10位)的方式来综合寻址,则寻址的范围是:2的14次方*2的10次方 = 2的24次方,对应16MB(128Mbit)内存。

210的DDR端口信号中有BA0~BA2,接在内存芯片的BA0~BA2上,这些引脚就是用来选择bank的。 

三、汇编初始化SDRAM代码详解

1、SDRAM初始化代码

SDRAM的初始化工作,是由汇编函数sdram_asm_init完成的,它在sdram_init.S文件。

该文件是参考九鼎官方的uboot与九鼎裸机教程中对DDR的初始化内容写的。

注意汇编函数的最后,需要使用返回指令“ mov pc, lr ”。

2、27步初始化DDR

DDR的初始化,与SoC中的DDR控制器有关,也与具体的DDR芯片有关,也与开发板设计时DDR的连接方式有关。

X210开发板的内存连接方式是在DRAM0上连接256MB,在DRAM1上连接了256MB,因此初始化DRAM时分为2部分,第一部分初始化DRAM0,第二部分初始化DRAM1。

S5PV210的DDR初始化步骤,在用户数据手册第599页,可见初始化DDR共需27个步骤。

3、设置IO端口驱动强度

DDR芯片和S5PV210芯片是通过一些引脚连接的。DDR芯片工作时需要一定的驱动信号,这个驱动信号需要一定的电平水平才能抗干扰,所以需要设置这些引脚的驱动能力,使DDR正常工作。DRAM控制器对应的引脚设置为驱动强度2X。

4、DRAM port 时钟设置

代码的第128行到154行,对应27步中的第2到第4步。

主要是开启DLL(目的是为了倍频,因为内存的读取时钟由SoC提供,但频率太低,而内存的读写是很快的),然后等待锁存。

5、DMC0_MEMCONTROL

burst length=4,1chip,……对应值是0x00202400。

6、DMC0_MEMCONFIG_0 \ DMC0_MEMCONFIG_1

它们分别是DRAM0通道中memory chip0、memory chip1的参数设置寄存器。

三星设置DRAM0通道,允许接2片256MB的内存,分别叫memory chip0和memory chip1,分别用这两个寄存器来设置它的参数。按照三星的设计,chip0的地址应该是0x20000000到0x2FFFFFFF,然后chip1的地址应该是0x30000000~0x3FFFFFFF。但是X210开发板实际在DRAM0端口只接了256MB的内存,所以只用了chip0,没有使用chip1。按照这个推论,DMC0_MEMCONFIG_0有用,而DMC0_MEMCONFIG_1无用,所以可以直接给它默认值。

7、DMC_DIRECTCMD

这个寄存器是一个命令寄存器,210通过向这个寄存器写值来向DDR芯片发送命令,这些命令应该都是用来配置DDR芯片工作参数。

总结

DDR配置比较复杂与细致,需要按照DDR控制器的时序要求来做,其中很多参数要结合DDR芯片本身的参数来定,还有些参数是时序参数,要去详细计算。我们对DDR初始化的态度就是学会这种思路和方法,结合文档和代码能看懂,会算一些常见的参数即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单独一台机器测试Open×××加密隧道的问题和解决

其实这篇文章和Open的关系倒不是很大,只是通过Open测试时暴露出的问题。这篇文章里面倒是包含了很多IP路由以及conntrack的细节内容。 有时候,为了节省机器,我希望在一台设备上模拟多个设备,当然,使用网络命名空…

SCRT中只换行不回车的问题(阶梯)

转载源:SecureCRT中只换行不回车的问题 - 知乎 在SecureCRT中有时会遇到由于Windows的换行和Unix的换行控制字符不同的问题(\r\n-\n),导致显示如下图所示的“阶梯”,又不想到源码中一个个改控制字符,此时可…

开发板——X210开发板的软开关(供电置锁)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 本章节在裸机课程的SD卡启动部分。 本文讲述如何设置开发板,使得一按下电源键程序运行后即可松手不会断电,即供电置锁。 二、软开关的简介 电路设计一般使用拨码开…

国产Linux软件

为什么80%的码农都做不了架构师?>>> 本页面收集支持deepin/Linux的国产软件,对于每款软件以“日出东方-发行时间较短;正当壮年-时间较长且稳定;每况愈下-你们懂的”评价 软件版本时间评价有道词典 Linux版1.02015-03…

QGLViewer 编译安装步骤

由于工作学习的需要,要用opengl绘制显示些模型动画,原来用的是Qt做UI,直接调用的是QGLWidget类,但这个只是提供了基本的框架,很多交互操作还需添加代码完成,自己偷懒也觉得繁琐,就借用了开源的工…

LED——S5PV210的LED的理论与操作

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、LED物理特性介绍 LED本身有2个接线点,一个是LED的正极,一个是LED的负极。 LED的功能就是亮或者不亮,只需要给LED的正极加电压即可点亮LED,去掉电压…

“.公司”域名注册总量TOP15:新网问鼎 万网居亚

IDC评述网(idcps.com)01月16日报道:根据ntldstats.com发布的最新数据显示,截止至01月15日17:00,在“.公司”域名注册总量大战中,新网打败众多国内外域名服务商,成为新晋霸主,其“.公…

Prepare for Mac App Store Submission--为提交到Mac 应用商店做准备

返回 Mac App Store Prepare for Mac App Store Submission 提交到Mac 应用商店之前的准备 Most of your time is spent on coding tasks, but to develop for the Mac App Store, you need to perform a number of administrative tasks, using Xcode and other tools. You’l…

ARM通识——关于ARM的一些认识

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 注意,由于文章的撰写时间过早,很多内容没有更新,这里仅当一个通识了解。 1、ARM发展的里程碑 ARM的前身为艾康电脑(Acorn),于…

使用RMAN备份数据库

1.1使用控制文件备份全库 1.1.1配置备份路径 1.1.2 RMAN备份全库 1.2使用catalog数据库备份全库 1.2.1配置到远程数据库的TNS 1.2.2创建表空间及设置用户 1.2.3进入目录数据库并注册 1.2.4 CATALOG方式备份全库 转载于:https://www.cnblogs.com/myrunning/p/4231057.html

「北京」京东 JD.COM 招聘中/高级前端工程师

职位描述: 1、计算机或相关专业专科以上学历,2年以上网站前端开发经验,电子商务相关从业经验优先;2、精通各种Web前端技术,对符合web标准的网站重构有丰富经验,有成功作品;3、理解并掌握JavaScr…

前端上传组件Plupload使用指南

我之前写过一篇文章《文件上传利器SWFUpload使用指南》,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SWFUpload显然就有点过时了,毕竟html5原生的就给我们提供了文件…

HTML5简易在线画图工具

HTML5简易在线画图工具 原文:HTML5简易在线画图工具继上次学习了HTML5的路径画圆做了动态时钟、异次元空间的反转做了运动的太阳系,这两天将画线、画圆、填充等知识点结合起来做了一个简易的在线画图工具: 查看DEMO:HTML5简易在线画图工具 功…

【excel技巧读书笔记001】清除打开过的文件记录

我们在工作的时候经常打开工作薄,这些工作薄都会在最近使用的工作薄列表看到,如果不希望别人看到自己打开过的记录,可以将最近使用的工作薄列表清空。具体步骤如下:1.【文件】-【选项】-【高级】-【显示】显示此数目的最近使用文档…

快速开发系统之前台页面 ---- NO1----登录页面

2019独角兽企业重金招聘Python工程师标准>>> 快速开发系统之前台页面 ---- NO1----登录页面 <% page language"java" contentType"text/html; charsetutf-8"pageEncoding"utf-8"%> <!DOCTYPE html> <html lang"z…

HP服务器F10 Function Disabled,无法使用F10安装操作系统

HP惠普服务器正确安装操作系统的方法是使用F10引导安装&#xff0c;可以自动安装操作系统&#xff0c;与硬件结合的更好&#xff0c;而且安装完成后&#xff0c;如果是windows操作系统&#xff0c;可以有HP管理页。某次&#xff0c;在使用F10引导安装操作系统的时候&#xff0c…

apt-get for ubuntu 工具简介

先介绍几个和apt-get相关的目录: /var/lib/dpkg/available 文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包. /var/cache/apt/archives 目录是在用 apt-get install 安装软件时&#xff0c…

【VMCloud云平台】SCAP(一)规划

完成了System Center中的悍将SCO基础篇后&#xff0c;咱们来聊聊SCAP&#xff0c;很多人说SCAP是一个简单的组件&#xff0c;何必单独拿出来聊呢&#xff1f;我倒是认为不然&#xff0c;作为System Center中为数不多的主打Portal类型的组件&#xff08;除开组件的Web Console就…

android学习日记12--布局管理器

1、概述  布局管理器的用途&#xff1a;  a、可以更好的管理组件;  b、通过使用布局管理器&#xff0c;Android应用程序可以做到平台无关性 布局管理器都是ViewGroup的子类&#xff0c;所有可充当容器的父类都是ViewGroup&#xff0c;而ViewGroup也是View的子类 下面分别…

PXE装机+kickstart无人值守安装

搭建PXE远程安装服务器&#xff0c;本例集成了TFTP服务、DHCP服务&#xff0c;能够向客户机发送PXE引导程序&#xff0c;内核&#xff0c;启动菜单等。1.准备RHEL6安装源&#xff0c;网络安装源一般通过HTTP&#xff0c;FTP协议发布&#xff0c;另外页支撑NFS协议。采用FTP协议…