现在的位置: 首页 > 综合 > 正文

mtk 中 nvram 的读写操作

2013年09月19日 ⁄ 综合 ⁄ 共 3479字 ⁄ 字号 评论关闭

(一)、在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_ATTR_AVERAGE,

                                   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)

 

 

三、在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) ,

                     {0xFF, 0xFF, 0xFF, “”, “”,””}

              };

 

3、 short int myNvramData;

       S16 error;

//写 nvram

WriteValue(Nvram_my_shortdata_id , &myNvramData , DS_SHORT , &error) ;

//读 nvram

ReadValue(Nvram_my_shortdata_id , &myNvramData , DS_SHORT,  &error) ;

 

(注意:在模拟器下,修改了 nvram 最后是在 DOS 下用 new 命令全部重新编译一次)

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Epll_apple/archive/2010/04/02/5443918.aspx

抱歉!评论已关闭.