关于6573集成MCP nandflash的方法,driver_allinone 和Memory Customer Document pdf的说明里面漏了很多细节.在此补上.
1.首先确认flash型号.如sumsung的KA100O015E_BJTT.
2.查看MTK_MVG_Release的MemoryDeviceList_MT7673.xls,看一看这颗flash是否经过mtk验证.如果有,则把这一行数据copy出来.如果没有,则要提交给mtk来调试.
3.在mediatek\build\tools\emigen\MT6573\MemoryDeviceList_MT6573.xls中添加一行第2步中copy出来的数据.
4.修改\mediatek\custom\ckt73_gb\preloader\inc\custom_MemoryDevice.h
//#define BOARD_ID ZTEMT73V2
//NAND_ID for MT29C4G96MAZAPCJA_5IT is 0x2CBC
//NAND_ID for KA100O015E_BJTT is 0xECBC
5.这时你可以执行./mk ./mk -t projectname emigen 去生成对应的emi参数文件:
mediatek\custom\ckt73_gb\preloader\inc\custom_emi.h
mediatek\custom\ckt73_gb\preloader\custom_emi.c
6.修改\mediatek\build\tools\emigen\MT6573\nandgen.pl
6573平台与6516平台修改nand参数的方式不同. 6573用nandgen.pl生成nand参数文件\mediatek\custom\ckt73_gb\common\nand_device_list.h
修改nandgen.pl:
$advance_option = 0;
# if ($PROJECT_FIELD[$iter] eq $PROJECT)
{
print "$PAGE_SIZE $PAGESIZE_FIELD[$iter]\n" ;
#if (($PAGE_SIZE eq "4K" && $PAGESIZE_FIELD[$iter] eq 4096) || ($PAGE_SIZE eq "2K" && $PAGESIZE_FIELD[$iter] eq 2048))
if(1)
{
...
}
把上面if条件改为1. 不去判断pagesize.
7.修改ProjectConfig.mk .
有两项CUSTOM_DRAM_SIZE和MTK_NAND_PAGE_SIZE
查看MemoryDeviceList_MT7673.xls中此flash对应TotalSize大小,如512M,则CUSTOM_DRAM_SIZE 为 512M*8 =4G
查看MemoryDeviceList_MT7673.xls中此flash对应的PageSize大小.如4096,则MTK_NAND_PAGE_SIZE 为 4K.
8.修改partition_table.xls
查看MemoryDeviceList_MT7673.xls中此flash对应的BlockSize大小.partition_table中连续partiton的大小都要为BlockSize的整数倍.
修改Size (KB)这一项,其它start addr和end addr都会自动修改.
注意要修改对应的pagesize的页面,如pagesize是4K,则修改mt6573 no 4k这一页.
修改完成后使用./mk ptgen可以产生新的scatfile和parttion table参数文件.
其它:
1.上述中使用emigen和nandgen命令,在new时都会自动执行.
2.关于nandgen这个命令,可以在makeMtk中加入nandgen到actions说明内,就可以用./mk 得到nandgen的说明: @actions = qw(
new n bm_new remake r bm_remake clean c listproject listp
drvgen codegen nandgen emigen custgen javaoptgen ptgen
check-modem update-modem sign-image sign-modem check-dep
dump-memusage dump-comp-bld-info gen-relkey
);
3.如果要换的nandflash不是MCP,则第3,4步有不同之处,具体看driver_allinone pdf或者Memory Customer Document pdf.