Chinaunix首页 | 论坛 | 博客
  • 博客访问: 149175
  • 博文数量: 25
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 321
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-26 14:51
文章分类

全部博文(25)

文章存档

2010年(19)

2009年(6)

我的朋友

分类:

2010-05-05 17:01:00

定义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_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
阅读(3200) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~