需求方v_5.150.2工程运行时修改名称,并且掉电保存的功能

4个职位/ 0个新职位
最后发表
index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
需求方v_5.150.2工程运行时修改名称,并且掉电保存的功能

问题描述:
1.现在官方历程需求方v_5.150.2开发时,需要动态修改DA14583的名称(具体是通过DA14583的uart2接收修改名称的指令),名称是成功被修改了,但是不能掉电保存,重新上电后,名称又恢复到原工程名称名了。
2 .相关修改名称操作如下,修改文件在nvds.c:
空白rename_ssid () {
app_easy_gap_advertise_stop ();
/ /……
memcpy (nvds_data_ptr - > NVDS_TAG_DEVICE_NAME、名称、兰);
nvds_data_ptr - > DEVICE_NAME_TAG_LEN =兰;

请问该如何操作,可以保证修改后的名称能够掉电保存!

关键词:
设备:
Gongyu_Dialog
离线
最后看到:2天13小时前
加入:2016-04-27 07:07
因为nvd对应的地方在内存里,所以直接副本

因为nvd对应的地方在内存里,所以直接复制、掉电就没了。只有直接操作写flash,才能掉电保存。
之前有个nvds_put的函数接口,可惜rom_symdef里面没有引出相应的接口。
LR_IROM4 0x20000340 0x100 {
ER_IROM4 0x20000340 0x100 {
* (nvds_data_storage_area)

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
在RAM地址中的话,那如果我需要修改名称并且能保持掉电

在RAM地址中的话,那如果我需要修改名称并且能保持掉电,有什么好的方法?
1 .直接操作闪?FLASH对应的地址是多少吗?
2 .重启的时候会不会被原名称覆盖呢?

Gongyu_Dialog
离线
最后看到:2天13小时前
加入:2016-04-27 07:07
一种方法,是你在之前生成的本文件里去搜名字

一种方法,是你在之前生成的本文件里去搜名字,找到相应的地址。比如名字,uint8_t NVDS_TAG_DEVICE_NAME[62], 62个字节,大多数是0,所以很好找。另外因为flash会有引导的字节,需要加上去,可以在smartsnippet里面做确认。

另一种方法,你在闪光里开辟一个小空间存储名字,默认是FF。每次组广播包的时候,用flash接口去读一下,如果为非FF,则调用新的的名字,否则就用nvd里设定的名字。同时更新名字的属性,在处理(0 x0003)里,固化的协议栈会用读到的名字写相应的属性。