ARM SDRAM

news2024/11/17 15:54:08

前言

涉及到的文档:
S5PV210_UM_REV1.1 
x210cv3.pdf 
K4T1G164QE.pdf 

一、SDRAM 引入

1、简介

SDRAM:Syncronized Dynamic Ramdam Access Memory,同步动态随机存储器;
DDR:DDR 就是 DDR SDRAM,是 SDRAM 的升级版。(DDR:double rate,双倍速度的SDRAM;
DDR 有好多代:DDR1 DDR2 DDR3 DDR4 LPDDR;

----------------------------------------------------------------------------------------------------------------------------------------------------
DDR=Double Data Rate 双倍速率,DDR SDRAM =双倍速率同步动态随机存储器,人们习惯称为 DDR,其中,
SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。而 DDR 
SDRAM 是 Double Data Rate SDRAM 的缩写,是双倍速率同步动态随机存储器的意思。DDR 内存是在
SDRAM 内存基础上发展而来的,仍然沿用 SDRAM 生产体系,因此对于内存厂商而言,只需对制造普通
SDRAM 的设备稍加改进,即可实现DDR内存的生产,可有效的降低成本。

2、SDRAM 的特性

SDRAM 的特性: 容量大、价格低、掉电易失性、随机读写、总线式访问;

SDRAM/DDR 都属于动态内存(相对于静态内存 SRAM),都需要先运行一段初始化代码来初始化才能使用,
不像 SRAM 开机上电后就可以直接运行。

类似于 SDRAM 和 SRAM 的区别的,还有 NorFlash 和 NandFlash(硬盘)这两个。

正是因为硬件本身特性有限制,所以才导致启动代码比较怪异、比较复杂。而我们研究裸机是为了研究 uboot,在 uboot 中就充分利用了硬件的各种特性,处理了硬件复杂性。


3、SDRAM 数据手册带读

SDRAM 在系统中属于 SoC 外接设备(外部外设。以前说过随着半导体技术发展,很多东西都逐渐集成到 SoC 内部去了。现在还长期在外部的一般有:Flash、SDRAM/DDR、网卡芯片如DM9000、音频Codec。现在有一些高集成度的芯片也试图把这几个集成进去,做成真正的单芯片解决方案。)

SDRAM 通过地址总线和数据总线接口(总线接口)与 SoC 通信。如下图所示:

在这里插入图片描述

S5PV210_UM_REV1.1 文档	

开发板原理图上使用的是 K4T1G164QQ,但是实际开发板上贴的不是这个,是另一款。但是这两款是完全兼容的,进行软件编程分析的时候完全可以参考 K4T1G164QQ 的文档。如下图所示:

在这里插入图片描述

在这里插入图片描述

x210cv3.pdf  与  S5PV210_UM_REV1.1 文档	

全球做 SDRAM 的厂商不多,二线厂家做的产品参数都是向一线厂家(三星、KingSton)看齐,目的是兼容一线厂家的设计,然后让在意成本的厂商选择它的内存芯片替代一线厂家的内存芯片。SDRAM 的这个市场特征就导致这个东西比较标准化,大部分时候细节参数官方(芯片原厂家)都会给你一个参考值。


4、K4T1G164QE 的解释

在这里插入图片描述

K4T1G164QE.pdf 文档

K 表示三星产品,4 表示是 DRAM,T 表示产品号码,1G 表示容量(1Gb,等于 128MB,我们开发板 X210 上一共用了 4 片相同的内存,所以总容量是128×4=512MB)16 表示单芯片是 16 位宽的,4 表示是 8bank.

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


二、SDRAM初始化

1、原理图中 SDRAM 相关部分

S5PV210 共有 2 个内存端口(就好象有 2 个内存插槽)。再结合查阅数据手册中内存映射部分,可知:两个内存端口分别叫 DRAM0 和 DRAM1:

在这里插入图片描述
S5PV210_UM_REV1.1.pdf

在这里插入图片描述
x210cv3.pdf

DRAM0:内存地址范围:0x20000000~0x3FFFFFFF(512MB),对应引脚是Xm1xxxx
DRAM1: 内存地址范围:0x40000000~0x7FFFFFFF(1024MB),对应引脚是Xm2xxxx

结论:

  1. 整个210最多支持内存为 1.5GB,如果给 210 更多的内存, CPU 就无法识别。
  2. 210 最多支持 1.5GB 内存,但是实际开发板不一定要这么多,譬如我们 X210 开发板就只有512MB 内存,连接方法是在 DRAM0 端口分布 256MB,在 DRAM1 端口分布了 256MB。
  3. 由 2 可知,X210 开发板上内存合法地址是:0x20000000~0x2FFFFFFF(256MB) + 0x40000000~0x4FFFFFFF(256MB)。当板子上 DDR 初始化完成之后,这些地址都是可以使用的;如果使用了其他地址譬如 0x30004000, 就是死路一条。

原理图中每个 DDR 端口都由 3 类总线构成:地址总线(Xmn_ADDR0~XMnADDR13共 14 根地址总线) + 控制总线(中间部分,自己看原理图) + 数据总线(Xmn_DATA0~XMnDATA31 共 32 根数据线)。
分析:从数据总线的位数可以看出,我们用的是32位的(物理)内存。

在这里插入图片描述
x210cv3.pdf


在这里插入图片描述

在这里插入图片描述
x210cv3.pdf

原理图中画出 4 片内存芯片的一页,可以看出:X210 开发板共使用了 4 片内存(每片1Gbit=128MB,共512MB),每片内存的数据总线都是 16 位的(单芯片是 16 位内存)。如何由16 位内存得到 32 位内存呢?可以使用并联方法。在原理图上横向的 2 颗内存芯片就是并联连接的。并联时地址总线接法一样,但是数据总线要加起来。这样连接相当于在逻辑上可以把这2颗内存芯片看成是一个(这一个芯片是 32 位的,接在Xm1端口上)。


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

看数据手册《NT5TU64M16GG-DDR2-1G-G-R18-Consumer》第 10 页的 block diagram。这个框图是128Bb×8 结构的,这里的 8 指的是 8bank,每 bank 128Mbit。

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

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


源自朱有鹏老师.

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

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

相关文章

[论文分享] DnD: A Cross-Architecture Deep Neural Network Decompiler

DnD: A Cross-Architecture Deep Neural Network Decompiler [USENIX 2022] Ruoyu Wu Purdue University Taegyu Kim The Pennsylvania State University Dave (Jing) Tian Purdue University Antonio Bianchi Purdue University Dongyan Xu Purdue University 深度神经网络(…

web前端期末大作业:婚纱网页主题网站设计——唯一旅拍婚纱公司网站HTML+CSS+JavaScript

👨‍🎓静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计👩‍🎓,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

代码随想录训练营day59, 下一个更大元素II, 接雨水

下一个更大元素II 给定一个循环数组, 输出每个元素的下一个更大元素, 没有则-1 所以在遍历的过程中, 模拟走了两遍nums class Solution {public int[] nextGreaterElements(int[] nums) {int len nums.length;//先进行边界判断if(nums null || len < 1){return new int…

Python制作读者下载器,实现随时随地免费看

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 一个看书党一年有多少money投入小说行业呢~ 碰上一本好看的书&#xff0c;你能购买上多少章呢~ 其中的投入&#xff0c;无法想象&#xff0c;尤其是兴致上来了&#xff0c;不得投上个礼物给作者…

redis之作为缓存使用

写在前面 Redis因为其自身高性能的数据读取能力&#xff0c;因此会经常被应用到缓存的场景中&#xff0c;本文就一起看下Redis当做缓存使用时的特点&#xff0c;问题&#xff0c;以及需要注意的点。 1&#xff1a;缓存的架构模式 从架构模式上来看缓存系统可以分为旁路缓存&…

Kotlin 基础学习笔记第八章——高阶函数:Lambda作为形参和返回值

一、声明高阶函数 高阶函数定义&#xff1a;高阶函数就是以另一个函数作为参数或者返回值的函数。 在kotlin中&#xff0c;函数可以用lambda或者函数引用来表示。因此&#xff0c;任何以lambda或者函数引用作为参数的函数&#xff0c;或者返回值为lamda或函数应用的函数&#x…

基于遗传算法优化的lssvm回归预测-附代码

基于遗传算法优化的lssvm回归预测 - 附代码 文章目录基于遗传算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于遗传算法优化的LSSVM4.测试结果5.Matlab代码摘要&#xff1a;为了提高最小二乘支持向量机&#xff08;lssvm&#xff09;的回归预测准确率&#xff0c;对…

使用openshift 进行云平台连接

使用openshift 进行云平台连接 OpenShift CLI on Windows openshift 文档地址 OpenShift CLI on Mac 通过Homebrew方式安装 brew install openshift-cli安装完成&#xff0c;进行验证 oc version服务连接 oc login 服务地址根据提示输入用户名和密码&#xff0c;即可连接…

某讯滑块验证码反汇编分析-第一章

某讯滑块验证码反汇编分析-第一章js分析初步分析vmp结构js分析 在滑动完成后&#xff0c;会请求【cap_union_new_verify】接口&#xff0c;其中有5个比较长的参数&#xff0c;看起来可能会有加密的&#xff0c;分别如下。 参数名来源uasesscollecteksvData 那现在js看看这些参…

让车机「下雨」,路特斯的智能座舱跑偏了吗?

HIEV消息&#xff08;文/张祥威&#xff09;“我们今天用双8155&#xff0c;都觉得&#xff08;算力&#xff09;还不够。”杨平说。 这位路特斯的智能座舱研发负责人&#xff0c;目前带领着一支两百多人的团队&#xff0c;为Eletre这款车操刀座舱智能化。 双8155&#xff0c;指…

Gitee应用(1):快速搭建Git环境在不同电脑同步文件

一、前言 环境&#xff1a;Windows 11 64位 &#xff1b;vscode&#xff1a;1.73.1 当你要操作在两台不同的电脑上操作&#xff0c;或许经常会遇到一个问题&#xff0c;就是怎么同步同一个或几个文件&#xff0c;以方便你在不同的电脑上进行同个文件内容的创作。 在申请了公司电…

【Java难点攻克】「NIO和内存映射性能提升系列」彻底透析NIO底层的内存映射机制原理与Direct Memory的关系

NIO与内存映射文件 Java类库中的NIO包相对于IO包来说有一个新功能就是 【内存映射文件】&#xff0c;在业务层面的日常开发过程中并不是经常会使用&#xff0c;但是一旦在处理大文件时是比较理想的提高效率的手段&#xff0c;之前已经在基于API和开发实战角度介绍了相关的大文…

Java Math类

JavaMath类\huge{Java \space Math类}Java Math类 Math类 包含执行基本数字运算的方法&#xff0c;Math类没有提供公开的构造器。 MathMathMath类本质就是一个工具类&#xff0c;提供许多方法用于其他类调用&#xff0c;但是无法创建子类对象。 常用方法 ①. abs()取绝对值…

CANoe测试的两种方式Test Module 和 Test Unit对比,你常用哪种呢?

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

前端接口联调时传的参数是array数组形式处理

情景&#xff1a;使用van-uolaoder组件上传多个图片后调用保存按钮&#xff0c;这时由于存在多张图片&#xff0c;调用接口时前端传的参数就是数组形式。&#xff08;前端传的数组要先转为字符串&#xff09; 处理方法是&#xff1a; 1. 先确定后端使用什么注解&#xff0c;如…

Gerb视图支持新表单和旧表单

Gerb视图支持新表单和旧表单 GerbView生产高级软件Companions&#xff0c;但也易于替换、打印和查看HPGL、HPGL/2、Excellon和国际象棋文件。该程序支持RS274D和RS274X。您可以使用此软件将旧格式和标准RS274D转换为具有默认信息的新类型RS274X。Gerbview将致力于展示和绘制您的…

计算机毕业设计django基于python租房系统-房屋租赁系统

项目介绍 在各学校的教学过程中,租房系统是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及。采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的租房系统的平台,这样可以有效地解决租房系统混乱的局面。 本文…

(P3)python类的特殊方法 init、getitem、len、call

python 类的特殊方法 参考资料 python解释器遇到特殊句法时&#xff0c;会去调用特殊方法&#xff0c;这些特殊方法以双下划线开头。 1、__init __ () 该方法在对象创建时被解释器自动调用。 2、__getitem __ () getitem 获取实例对象的具体内容 p[key] 3、__len __() len …

牛客挑战赛65 D.233求min(二维偏序 树状数组/cdq分治)

题目 给出长度为n(n<1e5)的序列a1,a2,...,an​和b1,b2,...,bn(-1e3<ai,bi<1e3)&#xff0c; 请你找出1≤l≤r≤n&#xff0c;使得min(alal1...ar, blbl1...br)最大&#xff0c;并输出这个值 思路来源 官方题解 LYC_music submission 题解 两种做法&#xff0c; …

Python模块和包的介绍(模块含义、用模块好处、模块分类、包和模块的创建)

&#x1f308; 个人主页&#xff1a;王子玉博客 &#x1f506; 免费专栏&#xff1a;Python基础教程、python常用模块 ❤️ 分享网站&#xff1a; 《Python自学网》&#x1f449;&#x1f449;基础入门到逐步深入 | 适合新手入门到精通 | web开发、爬虫、自动化运维、自动化…