iTop-4412 裸机程序(十)- 引入DRAM


DRAM初始化

《Exynos4412 的启动过程详解(三)》 一文中我们介绍了 BL2 的启动过程。如下图:
在这里插入图片描述在 BL2 启动过程中在设置系统时钟后,初始化了 DRAM。初始化 DRAM 后续读取固件或者操作系统到 DRAM,后续就跳转到 DRAM 后执行。

初始化 DRAM 的意义

前面的裸机程序实验我们是将程序从 TF 卡拷贝到 SRAM(iRAM) 中,而这次实验在初始化 DRAM 后我们就可以将程序拷贝到 DRAM 中。这其实就是模拟了 uboot 干的事情。

DRAM 数据手册分析

结合数据手册可知,内存的物理地址为(0x40000000~0xFFFFFFFF, 3GB),实际上这部分地址不需要都使用到,比如我手上这块就是 2GB 的内存。
在这里插入图片描述

iTop-4412 原理图 DRAM 部分分析

在这里插入图片描述Exynons4412 有两个 DRAM 通道:DRAM0 和 DRAM1。这两个通道独立,互不干扰。每个内存通道有三种总线(地址总线、控制总线、数据总线)和供电引脚。以 DRAM0 为例:
地址总线:Xm1Addr0 ~ Xm1Addr15、Xm1Bank0 ~ Xm1Bank2
控制总线:Xm1CASn、Xm1RASn、Xm1CLK、Xm1WEn、Xm1DQM0 ~ Xm1DQM3、Xm1DQSn0~Xm1DQSn3、Xm1ODT、Xm1ZQ、Xm1CKE0
数据总线:Xm1Data0 ~ Xm1Data1

总线和 DRAM 芯片连接

我手上的iTop-4412使用的是2GB SCP 封装,上面有 4 颗 K4B4G1646B 的内存芯片。以 DRAM0相连的内存芯片为例。原理图如下:
在这里插入图片描述
上图特别需要注意的是地址总线只使用了Xm1Addr ~ Xm1Addr14共15根地址总线,而数据总线各自分散了 16 根到两颗内存芯片上。由 《K4B4G1646B芯片手册》(提取码:h0nu)可知 2GB内存需要 4 颗 512MB (512Mb x 8bank)的内存芯片。

每颗需要使用 15 根地址总线作为行地址,11根地址作为列地址、3根bank地址总线作为片选地址。所以该内存的寻址范围就是(215(Row Addr) * 211(Column Addr) * 23 (Bank)= 512Mb * 8 = 512MB)
在这里插入图片描述由于单颗内存芯片有16 根数据总线,所以可以通过两颗内存芯片相并联的方式与 DRAM0通道相连,就可以达到 32 根数据总线的效果。

2021年10月3日

Kilento

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值