您的位置:首页 > 其它

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

2015-01-14 11:10 281 查看
    这部分阐述了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项目。这个
4000
函数检查一个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 :结构成员
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息