摘要:
针对MTK DDR参数的配置主要配置
vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/AC8227L/
MemoryDeviceList_AC8227L.xls表格中的各个参数,注意针对ATC/MTK平台DDR参数配置,不同主芯片平台CONA寄存器的各个位定义不一样,请参考ARM主CPU寄存器说明文档,没有话要向供应商要这个寄存器各个位的说明书。
本文档主要针对MT8227L主芯片Android8.0系统的DDR配置
1、CONA寄存器的配置:
1.1 17位配置
第17位是指单rank还是双rank,如DDR芯片手册的:
256M型号的为单rank,17位为0,512M型号的为双rank,17位为1
1.2 15:14位和13:12位针对rank行地址配置
15:14位和13:12位针对RANK的行地址配置:
这个对应DDR芯片手册中的:
原则14:15位按照寄存器的说明应该设置成:
256M型号的只有1个rank,行地址15位:
14:15位RANK2的配置就任意(因为没有),我们将其配置成15位行地址为11(3)
13:12位RANK1配置的行地址为15位,我们配置行地址为11(3)
512M型号的有2个RANK,行地址为15位:
14:15位RANK2的配置的行地址为15位,我们将其配置成15位行地址为11(3)
13:12位RANK1配置的行地址为15位,我们配置行地址为11(3)
1.3 8和9位的配置
8和9bit 指的是bank 的位数,一般情况下bank都是8,所以这里应该是3bit。根据目前的经验,还没有遇到有4bank的情况,8、 9 位通常都是设1。
指DDR芯片手册上的:
1.4 7:6位和5:4位rank列地址的配置
对应DDR芯片手册中:
256M型号的只有1个rank,列地址10位:
7:6位RANK2的配置就任意(因为没有),我们将其配置成10位列地址为10(2)
5:4位RANK1配置的列地址为10位,我们配置列地址为10(2)
512M型号的有2个RANK,列地址为10位:
7:6位RANK2的配置的列地址为10位,我们将其配置成10位列地址为10(2)
5:4位RANK1配置的列地址为10位,我们配置列地址为10(2)
3:2位:没有特殊条件一下一般我们取11
1位:取1(使用32位数据总线)
27位:没有特殊情况下我们取0
最后CONA寄存器的值是:0x0000F3AE(为什么打开Rank2上的地址呢,主要是就算配置了,后面容量大小只有1个Rank时,寻址不会出现错误的,所以为了兼容Rank2,直接打开即可)
2、MODE_REG5寄存器的配置
MODE_REG5寄存器的值是DDR芯片的制造商ID号(Manufacturer ID),按照DDR芯片手册是:
刚好是0x000000FF
3、DDR参数列表的Type部分
Type部分请参考DDR芯片手册中的
即可Type类型为: LPDDR3
4、DDR参数列表中的Density (Mb)
Density (Mb)请参考DDR芯片手册中的
即256M32的Density (Mb)值是8192
512M32的Density (Mb)值是8192 + 8192
5、DDR参数列表中的Vendor
Vendor参数请参考DDR芯片手册:
即Vendor的值填写成BIWIN
6、DDR参数列表中的Part Number
Part Number型号请参考DDR芯片手册中:
如果使用BW52L256M32D1PF,那么Part Number列中填写BW52L256M32D1PF
如果使用BW52L512M32D2PF,那么Part Number列中填写BW52L512M32D2PF
7、DDR参数列表中的Board ID
Board ID参数填写当前BSP使用的demo板的型号,对照表格中其它配置即可。
这里取Board ID = AC8227L_EVB
最后按照以上步骤的结果可以得知道,我们配置的时候大概看一下表格中已经有的型号参数可以得知,表格中已经配置好的有很多了,如果我们使用的型号不再列表中,那么看一下我们的DDR型号芯片手册中的参数,对照DDR参数列表表格中的已经存在的型号的Density (Mb)和type跟我们使用的DDR型号芯片手册中相同的,拷贝一个在表格中插入一行,然后一般情况下Vendor、Part Number和MODE_REG5(制造商ID)即可,其他一般情况下是OK的。
如我们使用型号是BW52L256M32D1PF,从BW52L256M32D1PF参数可以知道,我们拷贝表格中的Hynix的H9CKNNN8GTMP型号并插入一行,将其vendor修改成BWIN,将Part Number修改成:BW52L256M32D1PF,然后再这行基础上进行即可。
8、配置DDR的客制化设置
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/$Project/inc/
custom_MemoryDevice.h
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/8227LGO_demo/inc/
custom_MemoryDevice.h
将文件中的
//#define CS_PART_NUMBER[0] NK42L128M32DI-LF
#define CS_PART_NUMBER[0] BW52L256M32D1PF
BW52L256M32D1PF为我们的新项目使用的DDR型号,即DDR参数列表中的Part Number列中包含的型号。
如果系统使用的是DDR+EMMC的套片,那么DDR可以兼容4颗,如果不是不能兼容,当兼容4颗的时候,请按照以下配置
#define CS_PART_NUMBER[0] xxxxxxxxxxxxxx0
#define CS_PART_NUMBER[1] xxxxxxxxxxxxxx1
#define CS_PART_NUMBER[2] xxxxxxxxxxxxxx2
#define CS_PART_NUMBER[3] xxxxxxxxxxxxxx3