摘要:
針對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