七.ARM裸机学习之SDRAM

it2022-06-26  89

版权声明:本文为博主原创文章,允许转载请注明。谢谢! <a class="copy-right-url" href=" https://blog.csdn.net/wangweijundeqq/article/details/78501129"> https://blog.csdn.net/wangweijundeqq/article/details/78501129</a> </div> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-3019150162.css"> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-3019150162.css"> <div class="htmledit_views" id="content_views"> 一.SDRAM引入 SDRAM:Syncronized Dynamic Ramdam Access Memory,同步动态随机存储器 DDR:DDR就是DDR SDRAM,是SDRAM的升级版。(DDR:double rate,双倍速度的SDRAM) DDR有好多代:DDR1 DDR2 DDR3 DDR4 LPDDR SDRAM的特性(容量大、价格低、掉电易失性、随机读写、总线式访问) SDRAM/DDR都属于动态内存(相对于静态内存SRAM),都需要先运行一段初始化代码来初始化才能使用,不像SRAM开机上电后就可以直接运行。 类似于SDRAM和SRAM的区别的,还有NorFlash和NandFlash(硬盘)这两个。 正是因为硬件本身特性有限制,所以才导致启动代码比较怪异、比较复杂。而我们研究裸机是为了研究uboot,在uboot中就充分利用了硬件的各种特性,处理了硬件复杂性。 二.210之SDRAM S5PV210共有2个内存端口(就好象有2个内存插槽)。再结合查阅数据手册中内存映射部分,可知: 两个内存端口分别叫DRAM0和DRAM1: 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位的(物理)内存。 三.数据手册中SDRAM相关部分 看数据手册《NT5TU64M16GG-DDR2-1G-G-R18-Consumer》第10页的block diagram。这个框图是128Bb×8结构的,这里的8指的是8bank,每bank128Mbit。 210的DDR端口信号中有BA0~BA2,接在内存芯片的BA0~BA2上,这些引脚就是用来选择bank的。 每个bank内部有128Mb,通过row address(14位) + column address(10位)的方式来综合寻址。 一共能寻址的范围是:2的14次方+2的10次方 = 2的24次方。对应16MB(128Mbit)内存。 四.汇编初始化SDRAM详解 暂时不做总结,没有理解透彻,后面补上。 2017/11/08 20:09

最新回复(0)