Mtk Android 之NvRAM customer

转载:http://blog.csdn.net/cbk861110/article/details/26851817

1.nvram lib id定义:

alps\mediatek\custom\prj\cgen\inc\Custom_NvRam_LID.h


typedef enum
{
    AP_CFG_RDCL_FILE_AUDIO_LID=AP_CFG_CUSTOM_BEGIN_LID, //AP_CFG_CUSTOM_BEGIN_LID: this lid must not be changed, it is reserved for system.

    AP_CFG_REEB_PRODUCT_INFO_LID,

    AP_CFG_CUSTOM_FILE_MAX_LID,
} CUSTOM_CFG_FILE_LID;

#define AP_CFG_REEB_PRODUCT_INFO_LID_VERNO      "000"

2.nvram lib id的数据结构和版本号声明
\alps\mediatek\custom\prj\cgen\inc\Custom_NvRam_data_item.h

LID_BIT VER_LID(AP_CFG_REEB_PRODUCT_INFO_LID)
PRODUCT_INFO *CFG_FILE_PRODUCT_INFO_TOTAL
{
};

3.4.nvram lib内容加入nvram数组中
\alps\mediatek\custom\prj\cgen\inc\CFG_file_info_custom.h
    const TCFG_FILE g_akCFG_File_Custom[]=
    {
        {
            "/data/nvram/APCFG/APRDEB/PRODUCT_INFO",       VER(AP_CFG_REEB_PRODUCT_INFO_LID),         CFG_FILE_PRODUCT_INFO_SIZE,
            CFG_FILE_PRODUCT_INFO_TOTAL,                   SIGNLE_DEFUALT_REC, (char *)&stPRODUCT_INFOConfigDefault,DataReset, NULL
        },
    };


4.nvram lib 数据结构定义
alps\mediatek\custom\prj\cgen\inc\CFG_file_info_custom.h


// the record structure define of PRODUCT_INFO nvram file
typedef struct
{
    unsigned char imei[8];
    unsigned char svn;
    unsigned char pad;
} nvram_ef_imei_imeisv_struct;


typedef struct{
unsigned char barcode[64];
nvram_ef_imei_imeisv_struct IMEI[4];
unsigned char reserved[1024-40-64];
}PRODUCT_INFO;


//the record size and number of PRODUCT_INFO nvram file
#define CFG_FILE_PRODUCT_INFO_SIZE    sizeof(PRODUCT_INFO)
#define CFG_FILE_PRODUCT_INFO_TOTAL   1


5.nvram lib 默认值定义
alps\mediatek\custom\prj\cgen\cfgdefault\CFG_PRODUCT_INFO_Default.h


PRODUCT_INFO stPRODUCT_INFOConfigDefault =
{
    /* barcode */
    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
    /* IMEI*/
    {{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},0x0,0x0,
     {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},0x0,0x0,
     {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},0x0,0x0,
     {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},0x0,0x0},
    /* reserved */


}


6.nvram lib id需要备份到BinRegion:
\alps\mediatek\custom\prj\cgen\CFG_file_info.c


FileName aBackupToBinRegion[]=
{

#ifndef MTK_PRODUCT_INFO_SUPPORT
{"PRODUCT_INFO",AP_CFG_REEB_PRODUCT_INFO_LID},
#endif

};

7.native(c)层读写:
[FAQ04545]【NvRAM】Native层读写nvram
     1,NVM_GetFileDesc(file_lid, &rec_size, &rec_num,true);//读打开
     2,read
     3,NVM_CloseFileDesc
     4,NVM_GetFileDesc(file_lid, &rec_size, &rec_num,false);//写打开
     5,write
     6,NVM_CloseFileDesc

8.java层读写:
参照[FAQ04542]【NvRAM】apk中中读写nvram

IBinder binder = ServiceManager.getService("NvRAMAgent");
NvRAMAgent agent = NvRAMAgent.Stub.asInterface(binder);

buffer = agent.readFile(AP_CFG_CUSTOM_FILE_LID_ID);
agent.writeFile(AP_CFG_CUSTOM_FILE_LID_ID,buffer);

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值