MTK_NVRAM等操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MTK 中nvram 的读写操作
定义NVRAM 数据有三种方式:
(一)、在nvram_editor_data_item.h、nvram_data_item.h、nvram_data_item.c三个文件中添加。
1、在nvram_editor_data_item.h文件中定义自己保存在nvram 中的结构体数据类型。
例如:typedef struct
{
Int a;
Char b;
}my_nvram_data_t;
2、在nvram_data_item.h 文件中的nvram_lid_core_enum 枚举中定义自己的nvram ID(建议在最后面添加,但必须添加到NVRAM_EF_LAST_LID_CORE 的前面)。再定义两个宏,一个宏是前面定义的结构体的字节大小,另一个是在nvram中保存的数据个数,如果在nvram 中只需要保存一个数据的话,就定义为1。
例如:typedef enum
{
……
……
My_nvram_data_lid, //自己定义的nvram ID
NVRAM_EF_LAST_LID_CORE
}nvram_lid_core_enum;
#define my_nvram_data_size sizeof( my_nvram_data_t )
#define my_nvram_data_total 1
3、在nvram_data_items.c文件中的lobical_data_item_table_core 结构体数组中添加自己的项。建议添加在最后,仿照前面的添加。
例如:Itable_entry_struct logical_data_item_table_core[] =
{
……
……
,{
My_nvram_data_lid , //前面定义的枚举ID
my_nvram_data_size , //前面定义的宏,结构体大小
my_nvram_data_total , //前面定义的宏,nvram中数据的个数
NVRAM_EF_ZERO_DEFAULT,
NVRAM_A TTR_A VERAGE,
NVRAM_CATEGORY_USER,
“ MT1D” ,// 根据前面的数据项递增
VER( My_nvram_data_lid ),
“ my nvram test\0” ,//数据描述,只做参考,无其他作用
NVRAM_RESERVED_VALUE
}
, { NVRAM_EF_RESERVED_LID}
}
4、my_nvram_data_t my_nvram_data = {0};
S16 error ;
//将my_nvram_data中的数据写到nvram中My_nvram_data_lid 标志处,error保存错误标志
WriteRecord(My_nvram_data_lid, 1, &my_nvram_data, sizeof(my_nvram_data_t ), & error);
//将nvram中My_nvram_data_lid 标志处的数据读到my_nvram_data中,error保存错误标志
ReadRecord(My_nvram_data_lid, 1, &my_nvram_data, sizeof(my_nvram_data_t ), & error);
二、在common_nvram_editor_data_item.h、nvram_user_defs.h、nvram_user_config.c 中定义
1、common_nvram_editor_data_item.h 此处定义nvram 中保存数据的结构体数据类型
2、nvram_user_defs.h 此处定义nvram ID 和结构体数据大小、数据总数
3、nvram_user_config.c 此处填充nvram 结构数据内容及defult值
(在MTK 下建议使用此方法修改nvram)
(mtk 中nvram 的读写操作(一,二)/epll_apple/blog/item/94b29c22083a14a84723e846.html)
三、在coustom_mmi_default_value.h、common_mmi_cache_config.c中定义
1、在custom_mmi_default_value.h 文件中有三个枚举类型BYTEDATA,
SHORTDATA和DOUBLEDATA。分别占1个字节,2个字节,8个字节。
根据自己的所要保存的数据大小在相应的枚举里定义自己的nvram ID。建议在最后面添加,但都必须添加在最后一项的前面。
例如:typedef enum
{
……
……
Nvram_my_shortdata_id,
NVRAM_LAST_SHORT_ELEMENT
}SHORTDATA;
2、在common_mmi_cache_config.c文件中存在三个结构体数组common_mmi_cache_byte[]、common_mmi_cache_short[],common_mmi_cache_double[]。在对应的数组里添加自己的数据项,设置nvram 的初始值。
例如:mmi_cache_short_entry common_mmi_cache_short[] =
{
……
……
SHORT_ENTRY(Nvram_my_shortdata_id, 0x00, 0x00) ,