内存字面意思就是内部存储器,我们知道所有的计算机程序都是执行在内存中的。如果没有内存计算机就不能执行任何程序。好多书上都有描述程序是在外存(例如硬盘等)中存放的要执行的时候CPU将程序拷贝的内存中去执行。内存其实也是一种存储设备不过他有几个特点:掉电丢失数据、可以随机存储与CPU直间是总线访问(速度要比时序访问要快)。还有一个重要的特征是我们通常说的SDRAM/DDR之类的内存是需要初始化后才能使用的这就导致了如果是裸机情况下操作系统其实也一样在启动之前都要有一段的初始化内存的代码才可以正常的运行。要初始化他那就要首先要有一些了解。
1、内部结构和需要了解的一些重点:内存的内部是很精密的我们来看下面内部结构原理图:
关于内存的学习_第1张图片
先从左边开始看的话:上面的CKE、CK。。。。RAS等就是给内存发命令的那些时序什么的这个先不管(因为现在的SOC内部都有RAM控制器来处理这些),下面的A0~A13是14跟地址线这个是用来寻址的,而BA0~BA2正好是三位对应的是后边的bank0~bank7这8个bank就跟硬盘的磁片一样内存里边也是分bank的而每个bank里的数据是靠寻找是靠ROW-Address和Column-Address来确定的可以看到图中是横坐标(就这么叫吧)14纵坐标是11那他能寻址的范围就是2的14次方加2的11次方。
这些都是要在内存的初始化代码中使用到的内容。
2、初始化步骤和代码:
一般每个SOC的DRAM控制器章节中都有初始化步骤的说明,另外最好是移植原厂提供的初始化代码因为内存这个东西只是运行的基础,运行起来后就不必深究了知道这些应该就可以了