《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——2.2 DDR2 SDRAM芯片

简介:

本节书摘来异步社区《嵌入式Linux软硬件开发详解——基于S5PV210处理器》一书中的第2章,第2.2节,作者:刘龙,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 DDR2 SDRAM芯片

嵌入式Linux软硬件开发详解——基于S5PV210处理器
SDRAM全称为同步动态随机存储器(Synchronous Dynamic Random Access Memory)。由于SDRAM集成度高,单片存储容量大,并且读写速度快,在设计嵌入式系统时,经常用其作为主存储器(或称为内存)。SDRAM发展至今,经历了SDRAM、DDR、DDR2、DDR3等几代产品,DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器,较SDRAM速度更快。在SDRAM或DDR RAM定义中,同步是指其时钟频率与CPU前端总线的系统时钟频率相同,并且内部命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据的读写。

Smart210开发板使用的是DDR2 SDRAM,型号为K4T1G084QQ,单芯片容量设计为16MBit×8BANK×8I/Os,共128MByte,板载一共4片,总计512MB。注意,芯片内部的8Bank不是指该芯片需要占用S5PV210芯片的8个存储块,而是指SDRAM芯片内部把128MB容量分成了8块存储区,每块存储区的容量为16Mx8bit。

2.2.1 DDR2 SDRAM工作原理

如图2-4所示,SDRAM内部是一个存储阵列,我们可以把它想象成一个表格,和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元。这个表格的整体则称为BANK。DDR2 SDRAM具有8个BANK。对SDRAM的访问,我们应该先找到读写地址,才能对其进行访问。找到地址的流程为首先指定BANK,然后指定行地址,最后指定列地址。

1034fd3f9a778709f84346efe95f2faf1dbaed3a

K4T1G084QQ采用的是FBGA球形封装,不同于普通的贴片封装。K4T1G084QQ的引脚分布及封装示意图如图2-5、图2-6所示。

97026bf538e7eaa39cce6036c095530ae5b58843

K4T1G084QQ引脚功能如表2-2所示。

5e3ee113be06e3f5e6b3bc8c9fbd3119e7b1b5a8 531e08cf783ca3c25a198556b56c52e7df24bfbd

上述引脚中,比较特殊的是ODT引脚。ODT(On-Die Termination)的含义为内建核心终结电阻器。所谓的终结,就是让电路的终端将信号吸收掉,而不会在电路上面形成反射,对后面的信号造成影响。在DDR时代,控制与数据信号的终结在主板上面完成,每块DDR主板在内存槽的旁边都会有一个终结电压部分的设计,它主要由一排终结电阻构成。随着SDRAM技术的发展,ODT技术将终结电阻移植到了芯片内部。主板上面不再有终结电路,而且DDR2可以根据自己的特点内建合适的终结电阻,这样可以保证最佳的信号波形。ODT技术允许CPU通过配置DDR2 SDRAM的内部寄存器以及控制ODT信号,来实现对匹配电阻的值及其开关状态的控制,从而实现读、写操作时最佳的信号完整性。在Smart210开发板上面,DDR2 RAM芯片的ODT引脚与S5PV210的ODT1引脚连接,信号由S5PV210来控制。

2.2.2 DDR2 SDRAM硬件设计

DDR2 SDRAM与S5PV210的地址线、数据线及控制引脚连接方式如图2-7所示。Smart210开发板一共有4片K4T1G084QQ,4片DRAM的连接方式不同:第1片的8位数据引脚连接至CPU的Xm1DATA0~Xm1DATA7;第2片的8位数据引脚连接至CPU的Xm1DATA8~Xm1DATA15;第3片的8位数据引脚连接至CPU的Xm1DATA16~Xm1DATA23;第4片的8位数据引脚连接至CPU的Xm1DATA24~Xm1DATA31。可以看出,4片DDR2 RAM采用的是并接到一起组成32位数据总线的方式。

Smart210开发板具有4片K4T1G084QQ,共计512MB。在CPU的内部寻址空间中,字节BYTE(8位)是表示存储容量的唯一单位,而在DDR2 RAM中存储单位为位Bit(1位),K4T1G084QQ的存储容量为1GBit,折合成BYTE为128MB。Smart210开发板设计中K4T1G084QQ采用8位的数据输出方式,所以4片DDR2 SDRAM的数据引脚并接(4×8Bit=32Bit),正好组成S5PV210处理器的32位数据总线宽度。

K4T1G084QQ的地址总线A0~A13连接到S5PV210的Xm1ADDR0~Xm1ADDR13引脚,共14根地址总线,采用的是8位的数据输出方式,因此地址总线给出的地址范围为214×8Bit=16MB,K4T1G084QQ的BA0、BA1和BA2引脚为内部8个Bank的选择引脚(23=8),连接到S5PV210的Xm1BA0、Xm1BA1和Xm1CSn1/BA2引脚。S5PV210控制对K4T1G084QQ内部Bank的选择使用。3条Bank选择引脚和14根地址总线共完成23×214×8Bit=128MB内存空间的访问。

4片DDR2 SDRAM的片选信号nCS引脚连接的皆为S5PV210的Xm1CSn0引脚,即S5PV210的DRAM0控制引脚,从表2-1可以看出,DDR2 SDRAM的地址应该是从0x20000000开始的连续512MB地址空间。

1fc072b5169e0dbedd72f1211e9114962115830b

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
3月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
232 2
|
4天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
22 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
1月前
|
存储 Linux 开发工具
如何进行Linux内核开发【ChatGPT】
如何进行Linux内核开发【ChatGPT】
|
2月前
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
37 6
|
2月前
|
消息中间件 算法 Unix
Linux设备驱动开发详解1
Linux设备驱动开发详解
41 5
|
2月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
2月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
|
3月前
|
Web App开发 缓存 Linux
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
《FFmpeg开发实战》书中第10章提及轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适合生产环境。推荐使用SRS或ZLMediaKit,其中SRS是国产开源实时视频服务器,支持多种流媒体协议。本文简述在华为欧拉系统上编译安装SRS和FFmpeg的步骤,包括安装依赖、下载源码、配置、编译以及启动SRS服务。此外,还展示了如何通过FFmpeg进行RTMP推流,并使用VLC播放器测试拉流。更多FFmpeg开发内容可参考相关书籍。
93 2
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
|
2月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
141 0
|
3月前
|
Linux
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《FFmpeg开发实战》书中介绍了直播的RTSP和RTMP协议,以及新协议SRT和RIST。SRT是安全可靠传输协议,RIST是可靠的互联网流传输协议,两者于2017年发布。腾讯视频云采用SRT改善推流卡顿。以下是Linux环境下为FFmpeg集成libsrt和librist的步骤:下载安装源码,配置、编译和安装。要启用这些库,需重新配置FFmpeg,添加相关选项,然后编译和安装。成功后,通过`ffmpeg -version`检查版本信息以确认启用SRT和RIST支持。详细过程可参考书中相应章节。
76 1
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist