目录

前言

NVRAM基本概念

NVRAM数据结构

​​NVRAM添加步骤

NVRAM调测

前言

手机软件分2部分, AP部分和BP部分, AP部分就是基于Linux的这一套, BP部分就是modem部分. modem部分主要负责打电话,数据链接等这些工作.AP需要打电话或者数据上网,就会跟BP进行通信.一般是通过串口. SIM卡的管理之类也是由BP部分来做.我们编译一套完整的软件, 首先要由射频组给出射频文件,然后在modem代码里面进行配置, 配置完之后编译出 modem 部分的二进制文件.然后再将modem部分二进制集成到AP中,同时进行配置, 最后才编译出android软件来.

NVRAM基本概念

NV就是Non-Volatile缩写,就是非易失性存储性,通俗来说,就是即使系统掉电后,存储在该存储器的数据也不会丢失。 
为什么要备份恢复,NV值是需要通过校准和终测才能使手机硬件达到最佳工作状态,特别是其中的RF相关的NV项,经过校准及终测后,每台手机的这些NV值基本上都不一样,又加上NV数据是是存储在镜像文件,而镜像文件数据很可能遭到破坏(如:重新烧写版本),这时的NV数据也将被破坏,之前校准和终测后的NV数据也将无法恢复,使得手机将面临重新走校准、终测的生产流程。 

                                                                   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进行读写操作

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);

下面一个写NV操作

----------//lid readif( !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!\n\r");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!\n\r");return KAL_FALSE;}else{nvram_ut_trace("[NVUT] nvram_security_test(): can't write when locked!\n\r");}//lid resetnvram_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 valueif( !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!\n\r");return KAL_FALSE;}
  • PC META工具可以读写备份NV相关文件

 Android守护进程位置

vendor\mediatek\libs\nvram_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)
\vendor\mediatek\proprietary\external\nvram
\vendor\mediatek\proprietary\external\nvram\libcustom_nvram
\vendor\mediatek\proprietary\external\nvram\libnvram
\vendor\mediatek\proprietary\external\nvram\libnvram_daemon_callback
\vendor\mediatek\proprietary\external\nvram\nvramagentclient

相机相关NV位置

\vendor\mediatek\proprietary\hardware\mtkcam\feature\mfnr\modules\nvram

MTK平台NV的功能与操作相关推荐

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

    MTK平台NV基本功能与操作  一.NVRAM基本概念  NV就是Non Volatile缩写,就是非易失性存储性,通俗来说,就是即使系统掉电后,存储在该存储器的数据也不会丢失.  为什么要备份恢复, ...

  2. MTK 平台手势唤醒功能

    MTK的手势功能很low的,我们不需要注册新的按键,复用原有就ok了. 1.增加keypad layout文件键盘映射,android key映射 在generic.kl文件里映射我们需要的键值,如下 ...

  3. Android P 9.0 MTK平台 增加以太网静态IP功能

    前言 朋友们,最近又开始搞 Android P了,同样的以太网静态 IP 是少不了的功能,今天我们就开始来整一下.之前弄6.0 和 8.1 的都 ok 了. 没想到 9.0 改动还是略微有点大的.来来 ...

  4. LinuxGPIO操作和MTK平台GPIO

    GPIO口配置是一个历史性的问题,不管我们使用什么MCU,单片机也好,ARM也好,都离不开驱动GPIO口.Linux下有一个宏,GPIO_GPIO_SYSFS,打开这个宏后,编译烧录到设备端,去看看s ...

  5. 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件

    转载:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...

  6. MTK平台发展及各芯片功能介绍2

    近几年MTK手机大行其道,从网络上摘抄了一份介绍MTK芯片的资料,现分享给大家. 目前联发科技已开发出MT6205.MT6217.MT6218.MT6219.MT6226.MT6227.MT6228等 ...

  7. MTK平台俄罗斯方块游戏评审

    MTK平台俄罗斯方块小游戏 游戏评审 游戏效果的展示 游戏介绍 游戏流程图 游戏的设计 俄罗斯方块的设计 初始方块的随机生成 检查方块的是否可以移动 方块下移 方块左右移 方块旋转 方块消行 定时器 ...

  8. Android 系统(205)---MTK平台分区回读

    MTK平台分区回读 有时遇到各种开机卡死或重启问题,往往我们依靠分区回读的方法来验证是否为软件问题. 在MTK平台我们利用flash_tool工具来回读分区,简单归结为一下步骤. 1.首先选择Down ...

  9. MTK平台性能优化---(1)综述

    1.概述 手机性能优化越来越重要,本文介绍了性能评估.分析和优化的方法.在接下来的章节中,将会分别介绍关于系统.开机启动时间.应用启动速度性能优化,同时也会介绍如何使用一些有用的工具去评测性能瓶颈. ...

最新文章

  1. 【太阳软件】动态换ip软件:反爬虫对抗对数据分析的影响
  2. 【noqsl】beansdb的分布式实现~简单粗暴有效~
  3. POJ1042 贪心钓鱼
  4. 用Python制作一个简易的抽奖程序
  5. Flutter+FaaS一体化任务编排的思考与设计
  6. Java数据库篇6——多表查询
  7. oracle导入字符集,Oracle导入字符集问题
  8. 安卓中的@Nullable和NonNull(NotNull) 等 注释
  9. 雷军亲曝小米 10 四大猛料!
  10. Acoustica 7 for mac(数字音频编辑器)
  11. 牛客网 ACM模式单行输入输出规范
  12. 在Windows上将Ctrl+C信号发送到Python subprocess子进程
  13. Unity官方文档解读之如何使用粒子系统创建汽车尾气
  14. 美国弗吉尼亚大学计算机科学,弗吉尼亚大学计算机科学系学位设置
  15. 新店速递丨白玉兰(商务)酒店赣榆吾悦广场店 正式上线
  16. FreeXGIS系列产品介绍
  17. Java实验6 --模拟物流快递系统程序设计
  18. speex进行音频去噪
  19. alpinestars与丹尼斯_丹尼斯 VS A星,两虎相争骑士得利
  20. Unity3d 改变场景中钢体对象重力(Physics和Physics 2D)大小方向设置

热门文章

  1. html怎么转到php界面_html格式如何转成php格式
  2. Python基础学习:关键字elif
  3. win10命令行进入文件夹的方法
  4. 画彩蛋、 绘制3D轮廓、绘制3D三角面片图
  5. CAXA 3D实体设计2021:开创全新的数字化设计体验
  6. 使用 SwiftUI 的服务器驱动 UI
  7. day02--java基础编程:变量,数据类型,类型转换,运算规则,运算符,分支结构,循环(随机数),方法,重载,可变参数,递归,数组,冒泡排序
  8. 如何保存数组配置到PHP文件
  9. 外卖打印机语音芯片ic设计方案【九芯电子】
  10. SortedMap和TreeMap