NVDS跟读写flash有什么不同?还有成功或失败反馈的?
NVDS就是Flash的0x00000~0x01000这4KB的位置,有NVDS的API读取NVDS里的每一项内容,在nvds.h可以看到相关函数
xiaolong_ba 发表于 2015-6-4 17:00
NVDS就是Flash的0x00000~0x01000这4KB的位置,有NVDS的API读取NVDS里的每一项内容,在nvds.h可以看到相关函 …
那需要添加新的项怎么搞?
我有看到那边有个ID和长度的枚取,是直接该哪个枚取,添加新项?
nvds_put();就是可以增加TAG到NVDS的啊,你可以具体看下这个函数,在NVDS_LEN枚举和NVDS_TA枚举增加相应的值就OK哈
xiaolong_ba 发表于 2015-6-5 09:26
nvds_put();就是可以增加TAG到NVDS的啊,你可以具体看下这个函数,在NVDS_LEN枚举和NVDS_TA枚举增加相应的 …
这个我倒知道怎么改,SDK资料上有个软件也可以设置。
wyq165 发表于 2015-6-5 14:16
这个我倒知道怎么改,SDK资料上有个软件也可以设置。
你知道nvds的方法怎样读写flash吗,下面这样好像写不进去呢?
uint8_t test1 = 0xf1,test2;
nvds_tag_len_t len = 1;
if(retu==nvds_put(NVDS_END_MARKER_TAG,1,&test1))
{
nvds_get(NVDS_END_MARKER_TAG,&len,&test2);
}
thong 发表于 2015-6-5 16:14
你知道nvds的方法怎样读写flash吗,下面这样好像写不进去呢?
uint8_t test1 = 0xf1,test2;
你这样不对啊,你要先在枚举那里增加你要加的TAG名和TAG的长度,再用nvds_put函数加进去,NVDS_END_MARKER_TAG这个枚举值是TAG最后标记的标记,你不能拿来用的
xiaolong_ba 发表于 2015-6-5 16:29
你这样不对啊,你要先在枚举那里增加你要加的TAG名和TAG的长度,再用nvds_put函数加进去,NVDS_END_MARKE …
NVDS_TAG_FLASH_WR = 0x14,
NVDS_LEN_FLASH_WR = 1,
uint8_t test1 = 0xf1,test2;
nvds_tag_len_t len = 1;
if(retu==nvds_put(NVDS_TAG_FLASH_WR,1,&test1))
{
nvds_get(NVDS_TAG_FLASH_WR,&len,&test2);
}
还是put不进去呀,为啥呢,还请赐教?
thong 发表于 2015-6-5 16:53
NVDS_TAG_FLASH_WR = 0x14,
NVDS_LEN_FLASH_WR = 1,
uint8_t …
你这样写应该是没有问题,你Put的时候是不是返回0啊?
xiaolong_ba 发表于 2015-6-7 22:50
你这样写应该是没有问题,你Put的时候是不是返回0啊?
返回的是0x07呢,不知道啥问题
thong 发表于 2015-6-8 09:21
返回的是0x07呢,不知道啥问题
应该是返回了这个NVDS_NO_TEMP_BUF_AVAILABLE,没有清除缓冲区。
本帖最后由 FireBLE_blue 于 2015-6-8 10:51 编辑
方法一:
1->在“usr_config.h ”头文件打开宏定义
#define CFG_NVDS_WRITE
2->在enum NVDS_TAG 枚举中增加TAG ,如下所示:
NVDS_TAG_WR_TESET = 0x14,
3->在enum NVDS_LEN 枚举中增加TAG的长度,如下所示:
NVDS_LEN_WR_TESET = 5,//这里看要求,并不是一定要这个数
4->测试代码如下:
uint8_t* test1="Helon",test2[5]={0};
nvds_tag_len_t length=strlen(test1);
if (NVDS_OK==nvds_put(NVDS_TAG_WR_TESET,length,test1))
{
nvds_get(NVDS_TAG_WR_TESET,&length,test2);
}
5->测试结果:
![]()
方法二:
使用QBlue里的Quintic NVDS Configurator软件
xiaolong_ba 发表于 2015-6-8 09:26
应该是返回了这个NVDS_NO_TEMP_BUF_AVAILABLE,没有清除缓冲区。
那我应该怎样处理呢,没看到清缓冲区的API呀?
thong 发表于 2015-6-8 10:01
那我应该怎样处理呢,没看到清缓冲区的API呀?
你看FireBLE_blue的回答,他那样是可行的;
xiaolong_ba 发表于 2015-6-8 09:26
应该是返回了这个NVDS_NO_TEMP_BUF_AVAILABLE,没有清除缓冲区。
请严格按照FireBLE_blue的方法来做,TAG的定义和LEN的定义最好符合规范,要在NVDS.h中定义。
xiaolong_ba 发表于 2015-6-8 10:17
你看FireBLE_blue的回答,他那样是可行的;
我换了个板子串口打印出来是没问题的,之前测试的那个板子NVDS好像为空
thong 发表于 2015-6-8 11:25
我换了个板子串口打印出来是没问题的,之前测试的那个板子NVDS好像为空
NVDS空的,难怪会报没有清除缓冲区错误。解决了就好:lol
xiaolong_ba 发表于 2015-6-8 11:35
NVDS空的,难怪会报没有清除缓冲区错误。解决了就好
嗯 ,还得谢谢大家的帮忙哦
thong 发表于 2015-6-8 15:31
嗯 ,还得谢谢大家的帮忙哦
已经解决了吗?解决了就好。
安安 发表于 2015-6-8 16:10
已经解决了吗?解决了就好。
嗯 是的,3Q

