CC2540_非易失性(NV)内存管理

    这部分阐述了 OSAL的非易失性内存管理系统。系统为应用提供了一种永久储存信息的方式。协议栈也使用它来保存一些协议必要的项目。非易失性函数用来读写用户定义的项目包括任意的数据类型例如结构体和数组。用户可以读写这个项目,或者项目里的单一元素通过设置适当的长度。

每部分NV有一个ID,有些被占用了,以下是分块表。

  

0x0000 Reserved

0x0001 – 0x0020 OSAL

0x0021 – 0x0040 NWK

0x0041 – 0x0060 APS

0x0061 – 0x0080 Security

0x0081 – 0x00A0 ZDO

0x00A1 – 0x0200 Reserved

0x0201 – 0x0FFF Application

0x1000 -0xFFFF Reserved


在使用API时有一些重要的注意点,例如:

1.       最好的写NV的时间是关闭接收之后

2.       尽量减少NV的写频率,耗费时间和电源,对于flash有擦写次数的限制。

3.       如果一个或多个NV项目的结构发生变化,特别是当从一个升级版本的z-stack到另一个,有必要擦除和重新初始化NV内存。否则,在NV项目上的读和写操作的改变将失败或产生错误的结果。

 

osal_nv_item_init()

概述:

         初始化一个NV项目。这个函数检查一个NV项目的存在与否。如果不存在,它将被建立和初始化随着数据一起传给函数,这个函数必须在调用osal_nv_read() or osal_nv_write()之前被调用

原型:

         byte osal_nv_item_init( uint16 id, uint16 len, void *buf );

参数:

    Id :用户定义的项目ID

    Len :项目的大小

    Buf :指向项目初始化的数据。如果没有初始化的数据,设置为NULL

返回值:

    ZSUCCESS                                           成功

NV_ITEM_UNINIT                            成功但是项目之前不存在

NV_OPER_FAILED                           操作失败

osal_nv_read()

概述:

         NV中读数据,可以读取整个项目,或是项目中有索引指定的元素,数据复制到*buf

原型:

         byte osal_nv_read( uint16 id, uint16 offset, uint16 len, void *buf );

参数:

         Id :用户定义的项目ID

         Offset Memory offset into item in bytes.

         Len :项目长度

         Buf :数据保存缓冲区指针

返回值:

         ZSUCCESS Success

NV_ITEM_UNINIT Item is not initialized

NV_OPER_FAILED Operation failed

 

osal_nv_write()

概述:

         写数据到NV

原型:

         byte osal_nv_write( uint16 id, uint16 offset, uint16 len, void *buf );

参数:

    Id : 用户定义的ID

    Offset Memory offset into item in bytes.

         Len :项目长度

         Buf :写数据

返回值:

         ZSUCCESS                                                    成功

NV_ITEM_UNINIT                                     项目没有初始化

NV_OPER_FAILED                                     操作失败

osal_offsetof()

概述:

         这个宏计算出一个单元内结构的内存偏移量。他对NV API函数涌来计算偏移量参数很有用。

原型:

         osal_offsetof(type, member)

参数:

    Type :结构类型

    Member :结构成员

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值