MTK平台上开辟自己的NVRAM段并初始化 http://koudai.360.cn/u/20626231/article_203761437.html?categoryID=200320512&cp=1
要配置数据项,添加或删除一个数据项,或者仅修改某个缺省值,参看以下步骤:
1、在nvram_user_defs.h 文件里,定义一个新的逻辑数据项的LID至 nvram_LID_cust_enum 枚举。
2、在 nvram_user_defs.h 文件里,定义两个常量:SIZE 和 TOTAL。
Linear-fixed: total > 1; size为每一条记录的大小
(所谓的linear-fixed实际上就是存放一个单个记录大小为size,记录总数为total的结构体数组)
Transparent: total = 1; size 为每整个区块的大小
(Transparent的意思就是一个大的字串)
注意:由于Flash设备驱动的约束,size定义必须为偶数对齐。
3、模仿logical_data_item_table_cust中已有的记录来增加自己的记录
1〉 LID
2〉 Size
3〉 Total
4〉 Default value:必须为NVRAM_EF_ZERO_DEFAULT,或者NVRAM_EF_FF_DEFAULT,建议用前一个
其余的都仿照原来的记录来填写,特别注意VER(NVRAM_EF_CACHE_BYTE_LID),
有一个NVRAM_EF_CACHE_BYTE_LID_VERNO的字符串宏与之对应。据说每次改动默认值之后西欧需要改这个版本号。
4、默认值输入
将默认值建成一个全局的数组,将数组名填写到custpack_nvram_ptr中,注意顺序不要搞乱了
5、操作
通常在代码中,用ReadValue和WriteValue来读写
在task初始化代码中,需要用nvram_external_read_data来读取
修改完后最要new一下。据说还要同步修改编译的版本号。改了肯定对,不改对不对就不知道了。
注意事项:
1.数据项的Size 定义必须为偶数对齐,最大为 65535。
2.Linear fixed 数据项的最大记录数为 65535.
以上的最大值为理论值,可能会因为超出Flash空间而不能正常工作,依赖于Flash设备驱动配置。此外,一部分空间是为协议栈使用,用户可配置的数据项是受限制的。
当前,测试的安全值如下:
1. Size 最大 480
2. Total 最大300
3. 用户可配置的数据项最大值 25
3.2 Fields in Primitives 原语中的域
1.当发送 read/write 请求原语至 NVRAM 任务,如果数据项为 transparent, ’para’ 域必须为 1;
2. 当发送 write 请求原语至NVRAM任务, 被写入的数据的大小 size 必须等于在nvram_user_config.c中定义的数据项的大小 size.
3. read/write 确认原语成功返回值 ‘result’ 域为:NVRAM_ERRNO_OK, NVRAM_ERRNO_INIT.
1、在nvram_user_defs.h 文件里,定义一个新的逻辑数据项的LID至 nvram_LID_cust_enum 枚举。
2、在 nvram_user_defs.h 文件里,定义两个常量:SIZE 和 TOTAL。
Linear-fixed: total > 1; size为每一条记录的大小
(所谓的linear-fixed实际上就是存放一个单个记录大小为size,记录总数为total的结构体数组)
Transparent: total = 1; size 为每整个区块的大小
(Transparent的意思就是一个大的字串)
注意:由于Flash设备驱动的约束,size定义必须为偶数对齐。
3、模仿logical_data_item_table_cust中已有的记录来增加自己的记录
1〉 LID
2〉 Size
3〉 Total
4〉 Default value:必须为NVRAM_EF_ZERO_DEFAULT,或者NVRAM_EF_FF_DEFAULT,建议用前一个
其余的都仿照原来的记录来填写,特别注意VER(NVRAM_EF_CACHE_BYTE_LID),
有一个NVRAM_EF_CACHE_BYTE_LID_VERNO的字符串宏与之对应。据说每次改动默认值之后西欧需要改这个版本号。
4、默认值输入
将默认值建成一个全局的数组,将数组名填写到custpack_nvram_ptr中,注意顺序不要搞乱了
5、操作
通常在代码中,用ReadValue和WriteValue来读写
在task初始化代码中,需要用nvram_external_read_data来读取
修改完后最要new一下。据说还要同步修改编译的版本号。改了肯定对,不改对不对就不知道了。
注意事项:
1.数据项的Size 定义必须为偶数对齐,最大为 65535。
2.Linear fixed 数据项的最大记录数为 65535.
以上的最大值为理论值,可能会因为超出Flash空间而不能正常工作,依赖于Flash设备驱动配置。此外,一部分空间是为协议栈使用,用户可配置的数据项是受限制的。
当前,测试的安全值如下:
1. Size 最大 480
2. Total 最大300
3. 用户可配置的数据项最大值 25
3.2 Fields in Primitives 原语中的域
1.当发送 read/write 请求原语至 NVRAM 任务,如果数据项为 transparent, ’para’ 域必须为 1;
2. 当发送 write 请求原语至NVRAM任务, 被写入的数据的大小 size 必须等于在nvram_user_config.c中定义的数据项的大小 size.
3. read/write 确认原语成功返回值 ‘result’ 域为:NVRAM_ERRNO_OK, NVRAM_ERRNO_INIT.