mt2503 NVRAM_COMPRESS_SUPPORT宏有什么作用,开启后有何影响
时间:10-02
整理:3721RD
点击:
[NVRAM]NVRAM_COMPRESS_SUPPORT宏有什么作用,开启后有何影响
该宏最初设计主要用来支持SLIM版本节省ROM空间,比如Unicorn53_SLIM工程中能将NVRAM的Default值由11K压缩到0.9K.
开启该宏以后,第一次开机时,会对压缩后的NVRAM Default值进行解压,将Default值写入FAT,需要70K的working buffer,第一次开机会相对来说长一点。
同时,若进行恢复出厂设置的操作,也会对NVRAM Default值进行解压,相对会消耗较长一点的时间。
开启此宏后,有的数据会被压缩,有的则不会。比如SECU_PACK不会被压缩,而CUST_PACK数据都会被压缩。
若不希望某项数据被压缩,不能将此NVRAM设为NVRAM_CUSTPACK,且属性不可为NVRAM_ATTR_ZIP_DEFAULT.
开启此宏以后,原来的Default值不能再被直接访问,会有Link错误。因此,若希望在上层仍能直接访问到原来Default值中的某一项,
只能是通过间接的方法,即通过NVRAM的LID从FAT中读取数据到Buf中。然后获取想要的数据。
但若FAT中NVRAM数据已经由上层改变,就没办法再访问到希望获取的Default值了。
在开机正常运行状态下是不能通过被压缩的DEFAULT_ZIP值访问到NVRAM DEFAULT值的,
因为对压缩数据的解压操作需要很大的working buffer,而在手机开机运行状态下无法提供如此大的buffer.
另外也可不对此NVRAM项进行压缩,从而可直接访问到其DEFAULT值。
[NVRAM]NVRAM项何时会被恢复为DEFAULT值
NVRAM初始化操作在nvram_init中完成。
NVRAM根目录不存在时,比如下载BIN档时格式化了FAT,或采用其他工具删除了FAT的NVRAM,此时会创建所有的目录,然后根据NVRAM DEFAULT值创建所有的NVRAM文件。
NVRAM文件已经存在于FAT中,会比较系统版本号、Branch版本号、Flavor版本号、Custpach/Secupack版本号,若版本号不同,会将相应的NVRAM Default值写入FAT,即恢复为Default值。
另外若LID项版本号发生改变,则此项NVRAM会构建新的文件写入到FAT,即被恢复为默认值。
若LID项具有属性NVRAM_ATTR_FACTORY_RESET,则此NVRAM项在进行恢复出厂设置时会被恢复为默认值。
[NVRAM]NVRAM各种属性的具体解释
#defineNVRAM_ATTR_AVERAGE//默认属性
#defineNVRAM_ATTR_MULTI_DEFAULT//具有该属性的NVRAM逻辑项能有多个初始默认值,否则一个NVRAM逻辑项只会对应一个默认值。
#defineNVRAM_ATTR_WRITEPROTECT//写保护属性,当swlock开启后只读。
#defineNVRAM_ATTR_MULTIPLE//在Flash上具有两份文件拷贝。
#defineNVRAM_ATTR_CONFIDENTIAL//软件加密属性。具有该属性的NVRAM数据项写入时会进行相应的软件加密操作。
#defineNVRAM_ATTR_MULTIREC_READ//能一次性读取该NVRAM逻辑项的多个记录。
#defineNVRAM_ATTR_MSP//硬件加密属性。需要有相应的硬件平台支持。
#defineNVRAM_ATTR_SW_VERNO_RESET//软件版本号变化时恢复默认值
#defineNVRAM_ATTR_FACTORY_RESET//恢复出厂设置时,具有该属性的NVRAM逻辑项恢复为默认值
#defineNVRAM_ATTR_RING//该NVRAM属性用于记录Log。将记录循环写入从第二个到最后一个记录中,第一个记录用于保存当前记录写入的位置。
#defineNVRAM_ATTR_PACKAGE//当一个逻辑项小于一个cluster大小时,NVRAM自动设置该NVRAM逻辑项为该属性。将多个具有该属性的项合并为一个大的package.
该宏最初设计主要用来支持SLIM版本节省ROM空间,比如Unicorn53_SLIM工程中能将NVRAM的Default值由11K压缩到0.9K.
开启该宏以后,第一次开机时,会对压缩后的NVRAM Default值进行解压,将Default值写入FAT,需要70K的working buffer,第一次开机会相对来说长一点。
同时,若进行恢复出厂设置的操作,也会对NVRAM Default值进行解压,相对会消耗较长一点的时间。
开启此宏后,有的数据会被压缩,有的则不会。比如SECU_PACK不会被压缩,而CUST_PACK数据都会被压缩。
若不希望某项数据被压缩,不能将此NVRAM设为NVRAM_CUSTPACK,且属性不可为NVRAM_ATTR_ZIP_DEFAULT.
开启此宏以后,原来的Default值不能再被直接访问,会有Link错误。因此,若希望在上层仍能直接访问到原来Default值中的某一项,
只能是通过间接的方法,即通过NVRAM的LID从FAT中读取数据到Buf中。然后获取想要的数据。
但若FAT中NVRAM数据已经由上层改变,就没办法再访问到希望获取的Default值了。
在开机正常运行状态下是不能通过被压缩的DEFAULT_ZIP值访问到NVRAM DEFAULT值的,
因为对压缩数据的解压操作需要很大的working buffer,而在手机开机运行状态下无法提供如此大的buffer.
另外也可不对此NVRAM项进行压缩,从而可直接访问到其DEFAULT值。
[NVRAM]NVRAM项何时会被恢复为DEFAULT值
NVRAM初始化操作在nvram_init中完成。
NVRAM根目录不存在时,比如下载BIN档时格式化了FAT,或采用其他工具删除了FAT的NVRAM,此时会创建所有的目录,然后根据NVRAM DEFAULT值创建所有的NVRAM文件。
NVRAM文件已经存在于FAT中,会比较系统版本号、Branch版本号、Flavor版本号、Custpach/Secupack版本号,若版本号不同,会将相应的NVRAM Default值写入FAT,即恢复为Default值。
另外若LID项版本号发生改变,则此项NVRAM会构建新的文件写入到FAT,即被恢复为默认值。
若LID项具有属性NVRAM_ATTR_FACTORY_RESET,则此NVRAM项在进行恢复出厂设置时会被恢复为默认值。
[NVRAM]NVRAM各种属性的具体解释
#defineNVRAM_ATTR_AVERAGE//默认属性
#defineNVRAM_ATTR_MULTI_DEFAULT//具有该属性的NVRAM逻辑项能有多个初始默认值,否则一个NVRAM逻辑项只会对应一个默认值。
#defineNVRAM_ATTR_WRITEPROTECT//写保护属性,当swlock开启后只读。
#defineNVRAM_ATTR_MULTIPLE//在Flash上具有两份文件拷贝。
#defineNVRAM_ATTR_CONFIDENTIAL//软件加密属性。具有该属性的NVRAM数据项写入时会进行相应的软件加密操作。
#defineNVRAM_ATTR_MULTIREC_READ//能一次性读取该NVRAM逻辑项的多个记录。
#defineNVRAM_ATTR_MSP//硬件加密属性。需要有相应的硬件平台支持。
#defineNVRAM_ATTR_SW_VERNO_RESET//软件版本号变化时恢复默认值
#defineNVRAM_ATTR_FACTORY_RESET//恢复出厂设置时,具有该属性的NVRAM逻辑项恢复为默认值
#defineNVRAM_ATTR_RING//该NVRAM属性用于记录Log。将记录循环写入从第二个到最后一个记录中,第一个记录用于保存当前记录写入的位置。
#defineNVRAM_ATTR_PACKAGE//当一个逻辑项小于一个cluster大小时,NVRAM自动设置该NVRAM逻辑项为该属性。将多个具有该属性的项合并为一个大的package.