mt6735解决OTA升级后SVN值更新为新版本值的问题
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
有部分客户希望通过OTA升级后SVN的值同样更新为新版本设定的SVN值。
[SOLUTION]
通过OTA升级时,data分区的NVRAM文件并不会被清除,因此升级后SVN和data分区下的其他nvram数据前后都没有变化。
如果需要确保OTA升级后SVN值或某一nvram file更新为新版本默认值,那么有如下方法:
1. 对于非IMPORTant data(IMEI\SIM ME LOCK属于IMPORTANT data), 可以通过更新NVRAM LID VERNO,确保前后版本的NVRAM LID VERNO不一样即可。
例如更新SVN值, SVN默认保存在NVRAM_EF_SYS_CACHE_OCTET_LID,因此需要做如下修改:
File: Nvram_Editor_data_item.h(mcu\interface\service\nvram)
#define NVRAM_EF_SYS_CACHE_OCTET_LID_VERNO "004"
修订为:
#define NVRAM_EF_SYS_CACHE_OCTET_LID_VERNO "005"
2. 由于SVN值保存在NVRAM_EF_SYS_CACHE_OCTET_LID,该NVRAM LID中保存了其他system information(FLIGHTMODE_STATE,SIM_PLUS_SETTING,SVN,USB_BOOT_MODE,USB_TETHERING_MODE等),那么升级后这些值也会更新为新版本的默认值。
因此做到OTA升级后只更新SVN值,那么我们需要采取另外一种方法来实现。
在nvram init完成后进行客制化来写入新版本的SVN值,例如下:
FILE: custom_nvram_int_config.c(mcu\custom\service\nvram\)
Function:custom_nvram_config(void)
在custom_nvram_config接口内部添加写入SVN操作,demo code可以参考如下:
kal_uint8 data[] = {0x87, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00};
nvram_external_write_data (NVRAM_EF_SYS_CACHE_OCTET_LID, NVRAM_SYS_SVN, data,
NVRAM_EF_SYS_CACHE_OCTET_SIZE);
其中配置的0x87就是SVN,从nvram读取出来为'78',需要参考BCD编码方式来配置。
举例说明: 如果写入NV中的值为0x17,那么读取出来值为'71';如果写入NV中的值为0x35,那么读取出来的值为'53'.
有部分客户希望通过OTA升级后SVN的值同样更新为新版本设定的SVN值。
[SOLUTION]
通过OTA升级时,data分区的NVRAM文件并不会被清除,因此升级后SVN和data分区下的其他nvram数据前后都没有变化。
如果需要确保OTA升级后SVN值或某一nvram file更新为新版本默认值,那么有如下方法:
1. 对于非IMPORTant data(IMEI\SIM ME LOCK属于IMPORTANT data), 可以通过更新NVRAM LID VERNO,确保前后版本的NVRAM LID VERNO不一样即可。
例如更新SVN值, SVN默认保存在NVRAM_EF_SYS_CACHE_OCTET_LID,因此需要做如下修改:
File: Nvram_Editor_data_item.h(mcu\interface\service\nvram)
#define NVRAM_EF_SYS_CACHE_OCTET_LID_VERNO "004"
修订为:
#define NVRAM_EF_SYS_CACHE_OCTET_LID_VERNO "005"
2. 由于SVN值保存在NVRAM_EF_SYS_CACHE_OCTET_LID,该NVRAM LID中保存了其他system information(FLIGHTMODE_STATE,SIM_PLUS_SETTING,SVN,USB_BOOT_MODE,USB_TETHERING_MODE等),那么升级后这些值也会更新为新版本的默认值。
因此做到OTA升级后只更新SVN值,那么我们需要采取另外一种方法来实现。
在nvram init完成后进行客制化来写入新版本的SVN值,例如下:
FILE: custom_nvram_int_config.c(mcu\custom\service\nvram\)
Function:custom_nvram_config(void)
在custom_nvram_config接口内部添加写入SVN操作,demo code可以参考如下:
kal_uint8 data[] = {0x87, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00};
nvram_external_write_data (NVRAM_EF_SYS_CACHE_OCTET_LID, NVRAM_SYS_SVN, data,
NVRAM_EF_SYS_CACHE_OCTET_SIZE);
其中配置的0x87就是SVN,从nvram读取出来为'78',需要参考BCD编码方式来配置。
举例说明: 如果写入NV中的值为0x17,那么读取出来值为'71';如果写入NV中的值为0x35,那么读取出来的值为'53'.