求助,有没有人做过对MTK智能机的nvram进行读写操作的
求助,有没有人做过对mtk智能机的nvram进行读写操作的
谢谢,顶上去~
MTK智能机的nvram比较神秘,等做过的朋友分享经验。
具体没有做过,但是FAQ03920是这样描述的
【Background】
89之后的平台,MTK提供了Product info feature,支持Normal Mode下使用NvRAM接口写入数据, factory reset不会擦除,也避免了Normal Mode备份引起的掉电风险。
ICS2.MP/ICS.MP部分版本可以通过打patch支持,需要申请patch:ALPS00329542(JB 和TDD ICS2 branch 除外)
【Customization】
###Steps###
1. 打开MTK_PRODUCT_INFO_SUPPORT
修改alps/mediatek/config/$project/ProjectConfig.mk: MTK_PRODUCT_INFO_SUPPORT=yes
详情可参考DCC上文档《Customization in NvRAM Product Info feature》Page 10
2. 新增NvRAM项
如需在AP端新增NvRAM项,可以参考DCC上文档《Customization in NVRAM》;如不需要增加NvRAM项,请直接跳至Step3。
注意事项_1:
a) 如平台使用的是【eMMC】,新LID对应struct的size必须是512 byte的倍数;
b) 如平台使用的是【NAND】,新LID对应struct的size必须是page size对齐(即4K或2K)。
3. 将新加LID配置到product info
将对应的LID写入CFG_file_info.c的g_new_nvram_lid[],填入正确的start_address和size;如不需要配置新加LID,请看注意事项_2。
注意事项_2:
a) 如平台使用的是【eMMC】,g_new_nvram_lid[]里面新LID的size必须要128K对齐;
b) 如平台使用的是【NAND】, g_new_nvram_lid[]里面新LID的size必须要blocksize对齐(4K pagesize对应的是256K,2K pagesize对应的是128K)。
c) g_new_nvram_lid[]里各LID总size不能超过partition table里pro_info的size。默认情况下,【eMMC】平台pro_info大小为3M,【NAND】平台pro_info大小为1M。
4. AP_CFG_REEB_PRODUCT_INFO_LID的配置
a) 如不需要配置AP_CFG_REEB_PRODUCT_INFO_LID在g_new_nvram_lid[]里面,可以直接移除,新加LID的start_address需要改成0。
b) 如保留AP_CFG_REEB_PRODUCT_INFO_LID在g_new_nvram_lid[]里面,则需要注意CFG_file_info.c的aBackupToBinRegion[]里面去掉AP_CFG_REEB_PRODUCT_INFO_LID。
5. Default value配置问题
如普通nvram项的配置,欲写入product info的nvram也需要在进行配置在g_akCFG_File[](CFG_file_info.c),并在对应的xx_default.h和xx_file.h申明和定义default value。
但是,此处与普通nvram项不同的地方在于,当前的design中,写入product info的nvram项,自定义的default value是不生效的。
首次开机获取到的值,完全取决于当前/dev/pro_info这个raw分区里面的值:默认情况下,NAND的是0xff,eMMC的是0x00。
###After Customization###
客制化之后,配置到g_new_nvram_lid[]的LID对应的NvRAM data不再以文件形式存在/data/nvram/,而是直接写到了/dev/pro_info,数据不会同时存在两个地方。
【Platform】
目前,89之后的平台均支持,89之前的打了patch也支持。