om6626: nvds 基本使用说明

TF00 · 8次点击 · 7天前

NVDS

NVDS 是一个key-value存储库,在NVDS 中 key 用tag 标识,用户可以通过tag 去存储数据,同样可以通过tag 去检索数据。

SDK 默认使用最后16K的前12K 作为存储空间。 alt text


alt textimage.png


alt textalt text在 nvds_tags.h 可以看到用户可以自定义使用的tag的范围 alt textNVDS_TAG_USER_BEGIN 到 NVDS_TAG_MAX


enum NVDS_TAGS
{
    /// SYSTEM reserved (1-99)
    NVDS_TAG_BD_ADDRESS                 = 1,
    NVDS_TAG_DEVICE_NAME                = 2,
    NVDS_TAG_SCA                        = 3,
    NVDS_TAG_XTAL32M_CTUNE              = 4,
    NVDS_TAG_XTAL32K_CTUNE              = 5,
    NVDS_TAG_FREQ_OFFSET                = 6,
    NVDS_TAG_DCDC_ENABLE                = 7,
    NVDS_TAG_PRE_WAKEUP_TIME            = 8,
    NVDS_TAG_SMP_BOND_INFO              = 9,

    /// User define begin
    NVDS_TAG_USER_BEGIN                 = 100,

    /// Tag value MUST be less than or equal to 254
    NVDS_TAG_MAX                        = 254,
}


具体使用实例如下:


#include "om_driver.h"

#include "nvds.h"

#include "nvds_tags.h"


#define NVDS_TAG_USER_1     101

#define NVDS_TAG_USER_2     102


void example_nvds(void)

{
    nvds_tag_len_t rd_len;
    uint8_t wr_data[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
    uint8_t rd_data[10];

    // sdk 默认已经初始化
    // nvds_init(0);

    // put tags
    nvds_put((nvds_tag_id_t)NVDS_TAG_USER_1, 2, wr_data);
    nvds_put((nvds_tag_id_t)NVDS_TAG_USER_2, 3, wr_data);

    // get tags
    nvds_get((nvds_tag_id_t)NVDS_TAG_USER_1, &rd_len, rd_data);

    if (memcmp(rd_data, wr_data, 2) != 0) {
        /* error handle */
        OM_LOG_DEBUG("failed to put and get data\n");
    } else {
        OM_LOG_DEBUG("sucessed\n");
    }

    // show all tags
    nvds_dump(om_printf);
    // delete tags
    nvds_del((nvds_tag_id_t)NVDS_TAG_USER_1);
    nvds_dump(om_printf);
    nvds_del((nvds_tag_id_t)NVDS_TAG_USER_2);
    nvds_dump(om_printf);
}
被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站