利用到的手册如下:
FS4412_CoreBoard_V2.pdf
FS4412-DevBoard-V5.pdf

SEC_Exynos4412_Users Manual_Ver.1.00.00.pdf
简述
exynos4412存储分下面几块:
iROM:启动镜像区,存放三星预置的程序,也叫bl0
iRAM :内部内存区,加载通过OM选择后的启动程序,常日加载bl1、bl2
SMC:静态内存区,Static Read Only Memory Controller ,常日用于映射外部总线上设备,如网卡等,该区域被分为4个bank,每个16M(对应硬件手册xm0开头的)
SFR:分外功能寄存器区,常日用于映射SOC内部设备,如GPIO等
DMC:动态内存区,便是我们常日意义上的内存。
ps:动态内存(由于动态内存本身不供电,须要不断供电刷新,保存数据,以是叫动态内存)(对应硬件手册xm1和xm2开头的)
硬件事理(SMC)
Exynos4412中有1个独立的SMC,分为4个bank
没有行地址和列地址,全体芯片可用内存大小:2^8bit=256/16=16Byte
外部设备片选时,只能选0或者1.
硬件事理(DMC)
Exynos4412中有两个独立的DRAM掌握器,分别叫DMC0和DMC1,可以接2组不同的DDR内存。DMC0和DMC1分别支持大1.5GB的DRAM,它们都支持DDR2/DDR3和LPDDR2等,512 Mb, 1 Gb, 2 Gb, 4 Gb and 8 Gbit的内存设备,支持16/32bit的位宽。DRAM0 对应的地址是0x4000_0000~0xAFFF_FFF共1.5GB,DRAM1 对应的地址是0xA000_000~0x0000_0000共1.5GB。
4412的1GB的DRAM是由4片大小为256M16的DDR3芯片组合而成(查看芯片型号可以得到)
芯片型号:K4B4G1646B-HYXX
第一位: K表示内存
第二位:4表示falsh类型 DRAM
第三位:B表示DDR3
第4~5位. Density(注:实际单位该当是bit,而不是Byte),我们的是4Gbit=4G/16(数据位)=256MByte
第6~7位. organization:数据线引脚个数,我们的是16
剖析完成,开拓板上共有4片这样的内存芯片,总容量便是256M4=1G
这四片DDR 芯片被分成了两两一组,组成32位数据,四片都是挂接到DMC0处
总图如下:
分解图如下(只列了一半):
从上两图可以看出,这四片DDR 芯片被分成了两两一组,组成32位数据,四片都是挂接到DMC0处,如下:
· 左边一片16位,右边16位,组成32位数据
· 全部芯片片选挂到CS0:
· bank线数:
3路线(BA0-BA2),有2^3组合,也便是一个芯片上,bank有8个
· 地址线
地址线数:15(A0-A14)
ps:一个芯片内存大支持:2^(bank线数+地址线)=2^33=8Gbit/16=512MByte
· 行列地址线
nRAS,nCAS:复用地址线行和列选择,同一时候只能有一种地址线利用(不是行便是列),我们的板子上芯片有256M(2^28),28-3(bank)-15(行地址)=10(列地址)
· 寻址流程
这个操作顺序是,先片选,CS拉低,然后,当RAS拉低时,表示传过的是行地址,是A0-A14,15位;当CAS拉低时,表示传过来的是列地址,是A0-A9,列地址多的几位是预留的用来扩展内存,一个芯片内存多可以扩展到512M。
内存划分多个bank缘故原由
由于DDR是不自备充电电路的,以是,每隔一段韶光,内存掌握器就会刷新一次电路,也便是要充一次电,如果只有一个Bank,那么结果便是在某一时候,要么都充电,要么都不充电。
像上面这样分成了8个Bank,当我对000充电的时候,我还可以在010或是剩下的别的Bank中读取数据,这样就减小了等待的韶光,不用说当电路刷新时,不能读取数据了。
exynos板子上,每个bank大小= 256M/8=32M(1个芯片上有2^3个bank)
内存打算方法
SDRAM容量打算
打算可寻址单元的数量(32位)
地址线数(管脚数):11(A0-A10)
bank线数:2(BA0-BA1) 可以组合出2^2个 bank
大行线数=211(例如地址线的编号,11个管脚线,组合有211种)
大列线数=211(例如地址线的编号,11个管脚线,组合有211种)
一个bank中总单元数=211x 211
芯片中总单元数=(bank个数)×(一个bank中总单元数)
= 22 x 211 x 211
= 224
备注:
由于行线与列线上传输的数据是经由编码(组合办法)的,而不是直接的行号和列号,
也便是说每个bank里有213 个行和 29 个列,并非只有13行和9列。
以是要寻址的单元在第(2行线数据 )行,第( 2列线数据)列。
例如bank0,行线数据是0 0000 0010 0000,列线数据是0 0000 1000,
意思是要获取行32,列8的单元的数据,而不是行5,列3的数据。
如果行线数据是 0 0010 1101 0110,列线数据是0 0011 1010,意思是获取行726,列58的单元的数据。
例如一个32MB的SDRAM芯片中有4个Logic-bank(逻辑bank),位宽16bit(即每个单元是16bits),地址线13条,大行线数13,大列线数9。打算得:
一个bank的单元数= 213 x 29= 4194304(即4M)。
芯片总单元数=4Banks × 4M units = 16M units 。
芯片总位数=16M units × 16bits/per_unit = 256M bits 。
芯片总字节数=256M bits/8 = 32M Bytes 。
内存初始化流程
在三星供应的数据手册《SEC_Exynos4412_Users Manual_Ver.1.00.00》的第1046页供应给了一段关于LPDDR2-S4的初始化步骤,LPDDR2表示低功耗DDR2,DDR3的初始化过程应和这个一样,我们就按这个过程来初始化DDR3
嵌入式物联网须要学的东西真的非常多,千万不要学错了路线和内容,导致人为要不上去!
分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!
扫码进群领资料