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

MTK平台NV基本功能与操作 
一、NVRAM基本概念 
NV就是Non Volatile缩写,就是非易失性存储性,通俗来说,就是即使系统掉电后,存储在该存储器的数据也不会丢失。 
为什么要备份恢复,NV值是需要通过校准和终测才能使手机硬件达到最佳工作状态,特别是其中的RF相关的NV项,经过校准及终测后,每台手机的这些NV值基本上都不一样,又加上NV数据是是存储在镜像文件,而镜像文件数据很可能遭到破坏(如:重新烧写版本),这时的NV数据也将被破坏,之前校准和终测后的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列表。 
这里写图片描述 
这里写图片描述

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

这里写图片描述 
  
三、NVRAM添加步骤

NV添加LID基本步骤 
1. 新增LID枚举型变量 
2. 定义Record 大小和个数 
3. 定义LID版本号(VERNO) 
4. 声明默认值Default 
5. 声明LID入口 
这里写图片描述 
这里写图片描述

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

 
  1. kal_bool nvram_external_read_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size);

  2. kal_bool nvram_external_write_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size);

  3. kal_bool nvram_external_reset_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount);

  • 1
  • 2
  • 3

下面一个写NV操作

 
  1. ----------

  2. //lid read

  3. if( !nvram_external_read_data(ldi->LID, 1, (kal_uint8 *)cmp_buffer, ldi->size) )

  4. {

  5. nvram_ut_trace("[NVUT] nvram_security_test(): first read test LID fail!\n\r");

  6. return KAL_FALSE;

  7. }

  8.  
  9. if( KAL_TRUE == nvram_external_write_data(ldi->LID, 1, (kal_uint8 *)cmp_buffer, ldi->size) )

  10. {

  11. nvram_ut_trace("[NVUT] nvram_security_test(): write fail not happen!\n\r");

  12. return KAL_FALSE;

  13. }

  14. else

  15. {

  16. nvram_ut_trace("[NVUT] nvram_security_test(): can't write when locked!\n\r");

  17. }

  18.  
  19. //lid reset

  20. nvram_reset_data_items(NVRAM_RESET_CERTAIN, NVRAM_APP_RESERVED, ldi, 1, ldi->total_records);

  21. nvram_get_default_value_to_write(ldi, 1, (kal_uint8 *)data_buffer, ldi->size); //get new default value

  22. if( !nvram_external_read_data(ldi->LID, 1, (kal_uint8 *)cmp_buffer, ldi->size) )

  23. {

  24. nvram_ut_trace("[NVUT] nvram_security_test(): third read test LID fail!\n\r");

  25. return KAL_FALSE;

  26. }

  27.  
  • PC META工具可以读写备份NV相关文件

这里写图片描述

Android守护进程位置

vendor\mediatek\libs\nvram_daemon
 
  1. LOCAL_PATH := $(call my-dir)

  2.  
  3. include $(CLEAR_VARS)

  4. LOCAL_MODULE = nvram_daemon

  5. LOCAL_MODULE_CLASS = EXECUTABLES

  6. LOCAL_MODULE_OWNER = mtk

  7. LOCAL_PROPRIETARY_MODULE = true

  8. LOCAL_MODULE_TAGS = optional

  9. LOCAL_SHARED_LIBRARIES = libnvram libcustom_nvram libfile_op libnvram_daemon_callback libhwm libc++

  10. LOCAL_MULTILIB = 32

  11. LOCAL_SRC_FILES_32 = arm/nvram_daemon

  12. include $(BUILD_PREBUILT)

 
  1. \vendor\mediatek\proprietary\external\nvram

  2. \vendor\mediatek\proprietary\external\nvram\libcustom_nvram

  3. \vendor\mediatek\proprietary\external\nvram\libnvram

  4. \vendor\mediatek\proprietary\external\nvram\libnvram_daemon_callback

  5. \vendor\mediatek\proprietary\external\nvram\nvramagentclient

相机相关NV位置

\vendor\mediatek\proprietary\hardware\mtkcam\feature\mfnr\modules\nvram
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值