MTK NVRAM

nvram是程序用来搭建FAT文件系统的那一块,是flash后面分出的一块.

flash后面分出的一块”

在Build/CUSTOMER/scatCUSTOMER.txt中这样一行(Flash 64+32(Unit:Mbits),即8MB ROM,4MB RAM,(Unit:MBytes) ):

;SCHEME   : external 7MB flash memory and 4MB SRAM

(除去文件系统后ROM还有7MB空间,RAM为 4MB).

 

在NVRAM中存储的数据包括:

1)校准数据

2)用户数据,如Phone book, SMS, to-do list 等

3)协议层数据,IMEI,TCM等

4)MMI设置、control values,wallpaper(墙纸),theme(主题),profiles等

 

DF: Dedicated File 专用文件

EF: Elementary File 基本文件

MF: Master File 主文件

 

EF三种类型:

Transparent EF 以Hex Binary形式存储

Linear-Fix EF 如电话号码,短信

Cyclic EF 如通话记录

 

nvram/src/Nvram_data_items.c中的logical_data_item_table_core中定义了各项存储。

LID                          Logical Data Item Identifier

Size                         size of one record

Total_records        if = 1,it is transparent,otherwise linear-fixed

Attr                          attributes(Important/Writeprotect/Multiple/Confidential/

                                                   Multirec_Read/OTP/Difference)

Category               category(User/System/Composed/Factory/Multi_Default/Custpack/

                                                 Branch/Shadow/Shadow_MS)

 

Size和Total_records定义在custom/common/pluto_mmi/Nvram_common_defs.h

 

Nvram_drv_type_enum   Device type(FDM/EEPROM/MMC)

Fileprefix 文件前缀

File verno   Version number of the data item

Description  Human-reable description for data item

LIDclass     (average LID / important LID)

Record       Internally used by NVRAM

 

Transparent:the record size of this kind of data item is one byte.That is,data item consist of a sequences of bytes.

(Logical) Data Item:The basic management unit of NVRAM

 

向NVRAM中添加存储项

以存储Mobile ID为例。

①     custom/common/Pluto_mmi/Common_nvram_editor_data_item.h

定义结构体

typedef struct

{

    kal_uint8 marker[16];

} nvram_ef_mobile_id_struct;

定义LID版本号

#define NVRAM_EF_MOBILE_ID_LID_VERNO       "001"

LID与结构体关联

LID_BIT VER_LID(NVRAM_EF_MOBILE_ID_LID)

nvram_ef_mobile_id_struct *NVRAM_EF_MOBILE_ID_TOTAL

{

};

②     custom/common/Pluto_mmi/Nvram_common_defs.h

定义结构体对应的大小,总个数

#define NVRAM_EF_MOBILE_ID_SIZE         sizeof(nvram_ef_mobile_id_struct)

#define NVRAM_EF_MOBILE_ID_TOTAL        1

定义LID

在结构体nvram_lid_commapp_enum的NVRAM_EF_LAST_LID_COMMAPP之前添加

NVRAM_EF_MOBILE_ID_LID

③     custom/common/Pluto_mmi/Nvram_common_config.c

定义结构体存储的默认值

static nvram_ef_mobile_id_struct const NVRAM_EF_MOBILE_ID_DEFAULT[] =

{

       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}

};

在结构体logical_data_item_table_comm_app的{ NVRAM_EF_RESERVED_LID }之前添加

{

              NVRAM_EF_MOBILE_ID_LID,    //LID号

              NVRAM_EF_MOBILE_ID_SIZE,   //结构体大小

              NVRAM_EF_MOBILE_ID_TOTAL,  //总个数

              NVRAM_NORMAL((kal_uint8 const*)NVRAM_EF_MOBILE_ID_DEFAULT),  //默认值

              NVRAM_ATTR_AVERAGE,

              NVRAM_CATEGORY_USER,

              "MP9B",  //序号

              VER(NVRAM_EF_MOBILE_ID_LID),  //LID版本号

              "MOBILE ID/0", //该存储结构名称

              NVRAM_RESERVED_VALUE

       }

在该结构中添加的位置最好与声明的LID号在nvram_lid_commapp_enum中的结构对应。之前有次因为二者添加的位置不对应而导致Socket连接是ABM请求总是失败,无法连接。我想这样有可能是打乱了调用的某些东东,具体原因不详。

 

如果想在task初始化的时候初始化存储结构中的值可以在

Plutommi/mmi/framework/tasks/TasksSrc/MMITask.c中的InitNvramData函数添加对应的初始化函数。

你可能感兴趣的:(MTK)