MTK之Flash篇三----NVRAM

注:本人博文整理至CSDN以方便查阅,源博文位于EDN


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函数添加对应的初始化函数。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值