mtk 中 nvram 的读写操作

定义NVRAM 数据有三种方式:

 

(一)、在nvram_editor_data_item.hnvram_data_item.hnvram_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中的数据写到nvramMy_nvram_data_lid 标志处,error保存错误标志

WriteRecord(My_nvram_data_lid,  1,  &my_nvram_data,  sizeof(my_nvram_data_t ),  & error);

 

//nvramMy_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.hnvram_user_defs.hnvram_user_config.c中定义

1common_nvram_editor_data_item.h         此处定义nvram 中保存数据的结构体数据类型

2nvram_user_defs.h                                    此处定义nvram ID 和结构体数据大小、数据总数

3nvram_user_config.c                                此处填充nvram 结构数据内容及defult

MTK 下建议使用此方法修改 nvram

 

 

三、在coustom_mmi_default_value.hcommon_mmi_cache_config.c中定义

1、在custom_mmi_default_value.h  文件中有三个枚举类型BYTEDATASHORTDATADOUBLEDATA。分别占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 命令全部重新编译一次)

在Android框架,NVRAM(非易失性随机存储器)被用于存储系统相关的配置和参数,如无线通信模块的MAC地址、IMEI号码等。NVRAM的读写在Android设备的系统级别发挥重要作用。 首先,NVRAM读取功能在Android框架由系统服务提供,通过封装底层的硬件接口和驱动程序来实现。Android的系统服务负责与硬件之间的通信,从NVRAM读取所需的参数。在读取过程,通过定义和使用适当的API,应用程序或系统组件可以请求读取特定的NVRAM值,以进行相关的操作和功能。 其次,NVRAM的写入功能也是由系统服务提供的。当应用程序或系统组件需要修改某个NVRAM参数时,可以通过调用相应的API来实现。系统服务将接收到的修改请求转发给硬件接口和驱动程序,然后将新值写入NVRAM。这样,NVRAM对应的参数将被更新,以满足新的需求。 在Android框架,NVRAM读写功能的正确实现对于系统的正常运行非常重要。它确保各种系统组件可以正确访问配置和参数信息,并确保设备在启动时能够正确初始化。同时,NVRAM的读写操作需要受到适当的权限控制,只有具备足够权限的应用程序或系统组件才能进行相关的操作。 综上所述,Android框架的NVRAM读写功能通过系统服务提供,并且在系统级别发挥重要作用。这种功能确保了系统配置和参数的正确访问和修改,从而保障设备的正常运行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值