Tiny210(S5PV210) U-BOOT(六)----DDR内存配置

2023-05-16

上次讲完了Nand Flash的低级初始化,然后Nand Flash的操作主要是在board_init_f_nand(),中,涉及到将代码从Nand Flash中copy到DDR中,这个放到后面实际移植的过程中再结合源码流程来分析,正常来说,DDR应该是放在Nand Flash前面开始讲,因为DDR相对于Nand Flash来说,更加复杂一些,所以,将DDR拖后来讲,OK,接着开始讲DDR。

Tiny210 U-BOOT(六)----DDR内存配置
1.S5PV210内存芯片简介
最左边的四片就是内存芯片,是DDR2-800,这表示数据传输频率为800MHz,外部时钟频率200MHz,内部时钟频率为100MHz;因为内部一次传输的数据就可供外部接口传输4次,虽然以DDR方式传输,但数据传输频率的基准——外部时钟频率仍要是内部时钟的两倍才行。

我的板子上显示芯片型号为K4T1G084QF,打开三星的DDR2芯片命名规则文档(这个文档上网去搜索):
1~3. 比较简单,表示是DDR2内存;
4~5. Density,表示容量为1Gbit = 1Gbit/8 = 128MByte

6~7. Bit Organization,表示数据有多少bit,这里是08,则表示数据为8bit,四片拼起来,数据线就是32位。


8. # of Internal Banks,表示多少Bank,这里是4,表示为8个Banks
9. Interface, VDD, VDDQ,这里解释一下这两个电压的意思
VDD:北桥芯片供电电压或者存储芯片的输入缓冲和核心逻辑的供电电压。
VDDQ:存储芯片的输出缓冲供电电压。
Q : SSTL_18, 1.8V, 1.8V,根据芯片手册得出这两个电压为1.8V
10. Generation
F : F-die,这是什么意思???
芯片上型号K4T1G084QF,再往上看,会看到有四个BCF7的字母,接着看代表什么意思
12. Package
B : FBGA (Lead-Free & Halogen-Free, Flip Chip),表示这FBGA封装,FBGA是Fine-Pitch Ball Grid Array(意译为“细间距球栅阵列”)的缩写
13. Temp, Power
C : Commercial Temp.(0°C ~ 85°C), Normal Power,表示工作的温度范围和供电
14~15. Speed (Wafer/Chip Biz/BGD: 00)
F7 : DDR2-800 (400MHz@CL=6, tRCD=6, tRP=6),表示为DDR2-800的内存
分析完成,开发板上共有4片这样的内存芯片,总容量就是128M*4=512M

2.分析硬件原理图
2.1 从芯片角度
地址线:
A0-A13 14根
BA0,BA1,BA2
3根BA线表示这个芯片被分成了2^3=8个Bank,每个Bank则为128M/8=16M

这里出现一个问题,为什么128M里面还要划分出8个Bank?
前面在Nand Flash的时候,我曾经分析过,由于DDR是不自备充电电路的,所以,每隔一段时间,内存控制器就会刷新一次电路,也就是要充一次电,如果只有一个Bank,那么结果就是在某一时刻,要么都充电,要么都不充电。

像上面这样分成了8个Bank,当我对000充电的时候,我还可以在010或是剩下的别的Bank中读取数据,这样就减小了等待的时间,不用说当电路刷新时,不能读取数据了。
数据线:DQ0-DQ7*4 = 8bit * 4chips = 32bit

控制线:nCS,nRAS,nCAS
nCS:片选信号,当这个芯片被片选后,这个芯片就使能了,如果这芯片地址线上有地址,那么基本上数据线上就要出数据了。
地址线是A0-A13,是14根线,2^14=16K (128M = 2^27),所以地址线上地址要发两次,一次发行地址,一次发列地址,这就是行列地址复用--nRAS,nCAS这两根线的作用。
14 + 14 = 28根 + BA0/BA1/BA2 = 2^31=2G,最大支持2G的内存
128M = 2^27,27 - 3 = 24,行地址14根,所以,发过来的列地址是24-14=10
所以说,这个操作顺序是,先片选,CS拉低,然后,当RAS拉低时,表示传过的是行地址,是A0-A13,14位;当CAS拉低时,表示传过来的是列地址,是A0-A9,那列地址多的几位怎么办呢?很简单,用来扩展内存,谁说一片内存芯片就只能128M了?

2.2 从处理器角度
地址线 Xm1ADDR0-Xm1ADDR13
Xm1BA0, Xm1BA1, Xm1CSn1/BA2
数据线 Xm1DATA0-Xm1DATA31
控制线 Xm1CSn0, Xm1RASn, Xm1CASn  
对于地址线前面的Xm1,可以参看核心板的原理图中内存的总图,整个内存分为三块,Memory Port0/Memory Port1/Memory Port2,Memory Port1/Memory Port2分别对应于芯片手册P29页中Memory Map中的DRAM0/DRAM1,可以分别接两组不同的DDR内存

而Memory Port0接的是SRAM,他的地址线是0~15,没有行地址,列地址,没有复用,所以他的容量就是2^16=64K

2.3DDR芯片手册
前面在查看芯片的型号命名规则时最后两位,我们的板子上是F7
14~15. Speed (Wafer/Chip Biz/BGD: 00)
F7 : DDR2-800 (400MHz@CL=6, tRCD=6, tRP=6),表示为DDR2-800的内存

打开K4T1G084QF.pdf的DDR芯片手册,P4的Key Features,由此我们得知,我们要看的是DDR2-800 6-6-6

这里又多出和几个我们不认识的东西----CL,tRCD,tRP,看字面意思,大概来猜应该是一些时间,从芯片手册的命名规则上特意用一个字母代号来标识这三个东西,这肯定是非常重要的影响内存性能的某些时间参数。这里,有必要把DDR的工作原理重新梳理一下,这样,才能理解这些参数的意义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tiny210(S5PV210) U-BOOT(六)----DDR内存配置 的相关文章

随机推荐

  • 【经验】无线传输——空中速率

    1 简述 空中速率表示无线 xff08 在空气中的 xff09 通讯速率 xff0c 也叫空中波特率 信道速率 xff0c 单位bps xff08 秒传输的比特数 xff09 2 速率高低 空中速率高 xff0c 则数据传输速度快 xff0
  • 解决Win7的一个毛病——睡眠失效(只关闭显示器,不关主机)

    1 按下windows徽标键 xff0c 输入regedit xff0c 进入注册表 xff1b 2 进入注册表的HKEY LOCAL MACHINE SYSTEM CurrentControlSet Control Session Man
  • 【视频】海康摄像头、NVR网络协议简介

    目录 郭老二博文之 图像视频汇总 1 软硬件整体架构 2 涉及的网络协议 3 协议简介 3 1 海康私有协议 设备发现SADP 进行设备的发现 激活 修改网络参数 忘记密码等 SDK 4200 系统平台的接入前端设备 协议不对外开放 但对外
  • 十分钟读懂游戏研发、发行、渠道那些事儿

    国庆在家写了7天东西 xff0c 实在是累得够呛 我重新梳理了一下以前做过的事儿 xff0c 正好把去年年初发到腾讯GAD的文章拿过来做个修改补充 xff0c 算是再做个总结吧 这篇文章主要是介绍游戏行业的上下游产业链有哪些玩家 xff0c
  • pomelo源码解析--新建项目(cli工具: pomelo)

    pomelo怎么新建项目 官方文档 1 安装pomelo 2 新建项目HelloWorld 我简单整理了下创建新项目关键步骤 xff1a 安装pomelo 方式一 xff1a npm install pomelo g 方式二 xff1a g
  • pomelo源码解析--启动项目(pomelo start)

    我们知道启动pomelo服务器是命令pomelo start xff0c 那执行pomelo start到底都做了些什么 xff1f 服务器之间是怎么连接的 xff1f 客户端是怎么给服务器发消息的 xff1f 下面我们通过源码一步步来展开
  • 博客迁移 https://cxx001.gitee.io

    博客新地址 xff1a https cxx001 gitee io
  • OpenGL--粒子系统

    理论基础 1 xff0c 粒子系统的基本思想是用许多形状简单且赋予生命的微小粒子作为基本元素来表示物体 一般由点或很小的多边形通过纹理贴图表示 xff0c 侧重于物体的总体形态和特征的动态变化 把物体定义为许多不规则 xff0c 随机分布的
  • Cocos2dx-- 聊天系统之富文本(RichText)与字体对齐

    前言 游戏开发中我们一般都会有聊天系统 xff0c 我们可以同时或单独发文字 xff0c 图片 xff0c 表情 xff0c 超链接等信息的文本即称为富文本 如下图所示 xff1a 我使用的是cocos 3 4引擎版本里的RichText富
  • OpenGL--天空盒

    理论基础 1 xff0c 目前虚拟场景中天空建模常用的方法有天空顶 SkyDome 半球形 和天空盒 SkyBox 长方体 两种方法 其本质都是摄像机处在一个盒子中间 xff0c 这个盒子通过纹理贴图形成的虚拟世界场景 其中天空盒绘制技术非
  • OpenGL--使用Shader

    创建Shader 关于在OpenGL中怎么创建Shader这个在很早我博客中就有过详细介绍了 这里全当复习 xff0c 温故而知新 xff5e 在OpenGL中 xff0c 存在Program和Shader两个概念 xff0c Progra
  • 轻松学习CAN总线系列---3.CAN数据遵循的格式

    CAN帧 帧类型数据帧远程帧寻址CRC和应答位填充 帧类型 数据帧 xff08 Data frame xff09 为传输用户数据 xff0c ISO 11898 1定义了数据帧 数据帧可以传输的最大有效负载为八个字节 xff0c 即数据场
  • 无法解析的外部符号 "public: virtual struct CRuntimeClass

    无法解析的外部符号 34 public virtual struct CRuntimeClass thiscall CMessageBox GetRuntimeClass void const 34 以下原因是会引起上述错误的 xff1a
  • Qt控件美化 用好CSS/QSS可视化工具

    一 CSS概念 级联样式表 CSS 包含应用于网页中的元素的样式规则 CSS 样式定义元素的显示方式以及元素在页中的放置位置 可以创建一个通用规则 xff0c 只要 Web 浏览器遇到一个元素实例 xff0c 或遇到一个分配给某个特定样式类
  • c/c++中的struct和class的区别

    主要有两种情况 xff1a 1 C语言中的struct和c 43 43 中的class区别 2 c 43 43 中的struct和c 43 43 中的class的区别 下面分别介绍 xff1a 1 C语言中的struct和c 43 43 中
  • Linux应用层对串口的使用操作

    在Linux中串口作为字符设备 xff0c 设备节点在 dev 目录下 xff0c 使用普通的open xff0c close xff0c write和read等系统调用即可使用 这其中会涉及到一些串口的基本属性的设置 xff0c 如 波特
  • 给定两个字符串str1和str2,查找str2在str1中出现的位置

    给定string str1和string str2 xff0c 编写一个库函数 xff0c 返回str2在str1中的位置 如 xff1a str1为 34 ABCDLANCEXYZ 34 xff0c str2为 34 LANCE 34 x
  • 中国交通标志检测数据集

    版权声明 xff1a 本文为转发问 xff0c 原文见博客 https blog csdn net dong ma article details 84339007 中国交通标志检测数据集 xff08 CCTSDB xff09 来源于 A
  • CentOS 修改ls目录的颜色

    修改ls目录的颜色 linux系统默认目录颜色是蓝色的 xff0c 在黑背景下看不清楚 xff0c 可以通过以下2种方法修改ls查看的颜色 bash profile文件在用的根目录下 xff0c ls al可以看到 方法一 xff1a 1
  • Tiny210(S5PV210) U-BOOT(六)----DDR内存配置

    上次讲完了Nand Flash的低级初始化 xff0c 然后Nand Flash的操作主要是在board init f nand xff0c 中 xff0c 涉及到将代码从Nand Flash中copy到DDR中 xff0c 这个放到后面实