专注Java领域技术
我们一直在努力

MTK MODEM(1)— MTK平台NV基本功能与操作

原文始发于:MTK MODEM(1)— MTK平台NV基本功能与操作

MTK平台NV基本功能与操作 
一、NVRAM基本概念 
NV就是Non Volatile缩写,就是非易失性存储性,通俗来说,就是即使系统掉电后,存储在该存储器的数据也不会丢失。 
为什么要备份恢复,NV值是需要通过校准和终测才能使手机硬件达到最佳工作状态,特别是其中的RF相关的NV项,经过校准及终测后,每台手机的这些NV值基本上都不一样,又加上NV数据是是存储在镜像文件,而镜像文件数据很可能遭到破坏(如:重新烧写版本),这时的NV数据也将被破坏,之前校准和终测后的NV数据也将无法恢复,使得手机将面临重新走校准、终测的生产流程。 
MTK MODEM(1)--- MTK平台NV基本功能与操作 
图1-NVRAM框架图 
Non-Volatile Repository Access Manager(MTK): 
保存手机配置,比如IMEI, 射频校准数据,音量,来电铃声,界面语言,定时器,视频设置等等。应用程序能够安全保存数据到内存(NAND/NOR Flash,EMMC),系统崩溃时,能够保护日常配置数据,备份文件和默认配置不丢失。 
AP BIN region: 
智能手机AP侧备份一个NVRAM数据版本,包含了Modem NVRAM数据,譬如重要的RF校准数据等。(CALIBRAT, NVD_IMEI)

  
二、NVRAM数据结构 
MTK平台采用LID(Logical Data Item)和LID Table哈希表的数据结构来管理NV Item列表。 
MTK MODEM(1)--- MTK平台NV基本功能与操作 
MTK MODEM(1)--- MTK平台NV基本功能与操作

描述了一个数据项,操作NV最小单位 
Attributes 
限制读写方式 
Category 
限制储存方式(物理分类) 
LID table 
限制存储方式(逻辑分类)

MTK MODEM(1)--- MTK平台NV基本功能与操作 
  
三、NVRAM添加步骤

NV添加LID基本步骤 
1. 新增LID枚举型变量 
2. 定义Record 大小和个数 
3. 定义LID版本号(VERNO) 
4. 声明默认值Default 
5. 声明LID入口 
MTK MODEM(1)--- MTK平台NV基本功能与操作 
MTK MODEM(1)--- MTK平台NV基本功能与操作

四、NVRAM可调可测 
NVRAM对外可编程接口如下,对特定NV进行读写操作

kal_bool nvram_external_read_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size); kal_bool nvram_external_write_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size); kal_bool nvram_external_reset_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount);
  • 1
  • 2
  • 3

下面一个写NV操作

----------     //lid read     if( !nvram_external_read_data(ldi->LID, 1, (kal_uint8 *)cmp_buffer, ldi->size) )     {         nvram_ut_trace("[NVUT] nvram_security_test(): first read test LID fail!nr");         return KAL_FALSE;     }      if( KAL_TRUE == nvram_external_write_data(ldi->LID, 1, (kal_uint8 *)cmp_buffer, ldi->size) )     {         nvram_ut_trace("[NVUT] nvram_security_test(): write fail not happen!nr");         return KAL_FALSE;     }     else     {         nvram_ut_trace("[NVUT] nvram_security_test(): can't write when locked!nr");     }      //lid reset     nvram_reset_data_items(NVRAM_RESET_CERTAIN, NVRAM_APP_RESERVED, ldi, 1, ldi->total_records);     nvram_get_default_value_to_write(ldi, 1, (kal_uint8 *)data_buffer, ldi->size); //get new default value     if( !nvram_external_read_data(ldi->LID, 1, (kal_uint8 *)cmp_buffer, ldi->size) )     {         nvram_ut_trace("[NVUT] nvram_security_test(): third read test LID fail!nr");         return KAL_FALSE;     } 
  • PC META工具可以读写备份NV相关文件

MTK MODEM(1)--- MTK平台NV基本功能与操作

Android守护进程位置

vendormediateklibsnvram_daemon 
LOCAL_PATH := $(call my-dir)  include $(CLEAR_VARS) LOCAL_MODULE = nvram_daemon LOCAL_MODULE_CLASS = EXECUTABLES LOCAL_MODULE_OWNER = mtk LOCAL_PROPRIETARY_MODULE = true LOCAL_MODULE_TAGS = optional LOCAL_SHARED_LIBRARIES = libnvram libcustom_nvram libfile_op libnvram_daemon_callback libhwm libc++ LOCAL_MULTILIB = 32 LOCAL_SRC_FILES_32 = arm/nvram_daemon include $(BUILD_PREBUILT)
vendormediatekproprietaryexternalnvram vendormediatekproprietaryexternalnvramlibcustom_nvram vendormediatekproprietaryexternalnvramlibnvram vendormediatekproprietaryexternalnvramlibnvram_daemon_callback vendormediatekproprietaryexternalnvramnvramagentclient 

相机相关NV位置

vendormediatekproprietaryhardwaremtkcamfeaturemfnrmodulesnvram

赞(0) 打赏
未经允许不得转载:Java小咖秀 » MTK MODEM(1)— MTK平台NV基本功能与操作
免责声明

抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专注Java技术 100年

联系我们联系我们

你默默的关注就是最好的打赏~

支付宝扫一扫打赏

微信扫一扫打赏