8个帖子/ 0新
最后一篇
eli.iser.
离线
最后一次露面:6年3个月前
加入:2014-04-13 07:54
使用nvds_put.

我正在使用SDK 3.0.6并尝试编写NVDS。但是,在启用读/写(#define nvds_read_write 1)时,尝试调用NVDS_put()导致链接器错误:“。\ out \ full_emb_sysram.axf:错误:l6218e:未定义的符号nvds_put(从nvds.o中引用)。“

如何写入NVDS?特别是我有兴趣配置设备的名称(NVDS_TAG_DEVICE_NAME)和BD地址(NVDS_TAG_BD_ADDRESS)。这两个都将通过来自主机MCU的外部命令配置为生产的一部分,并且对于制造的每个设备将是不同的。

vesan.
离线
最后一次露面:5年10个​​月前
格鲁鲁“title= 掌握“title=
加入:2014-06-26 08:49
你好Eli.iser,

你好Eli.iser,

我理解了nvds_put.未在代码中实现,因此链接器错误。不幸的是,我没有关于外部处理器的经验。要在广告数据包中更改设备名称,请参阅文件app_your_project_proj.c ..,特别是广告功能app_adv_func.。您可以在其中找到结构Gapm_start_advertise_cmd * cmd作为参数。您可以使用此指针设置广告数据和设备名称。要设置设备名称:
memcpy(&cmd-> info.host.addata [cmd-> info.host.add_data_len + 2],device_name_temp_buf,device_name_length);

也许这不是直接您的兴趣,但这是广告数据有效载荷的一个例子。您在那里找到您的设备名称。长度为0x08,类型为0x09(完整的本地名称)
0000 02 01 06 08 09 41 42 43 44 45 46 47 ...... ABCDEFG

对不起,我无法帮助你bd_addr.。地址不是广告数据的一部分

eli.iser.
离线
最后一次露面:6年3个月前
加入:2014-04-13 07:54
感谢您的答复。

感谢您的答复。

是的,我知道我可以每次启动时在运行时更改设备名称。这是一个可接受的解决方法 - 读取BT地址并将设备名称设置为包含它。
但是,我必须能够更改BT地址。从我所看到的,它可以存储在OTP或NVDS中。我们希望在生产过程中设置每个设备的BT地址。还有另一种方法吗?

vesan.
离线
最后一次露面:5年10个​​月前
格鲁鲁“title= 掌握“title=
加入:2014-06-26 08:49
你好Eli.iser,

你好Eli.iser,

希望有人知道比我好。

我猜打开的BD_ADDR不太容易。我只发现了HCI读取功能。这里是关于OTP设置地址,第9.1节和第18页。

文件Arch_main.c.呼叫nvds_read_bdaddr_from_otp.功能。该功能是实施的nvds.c.。该函数从OTP内存中读取BD_ADDR并将其存储到dev_bdaddr。我无法追踪此变量的实际用于最终设置地址的方式。

我不知道是否是修改的好主意Arch_main.c.并使其从外部处理器读取BD_ADDR,而是从OTP读取(使其等待,例如,UART数据)。

我也发现这些寄存器datasheet.h.,但他们没有记录在实际数据表中:

#define ble_bdaddrl_reg(0x40000024)/ * ble device地址lsb寄存器* /
#define ble_bdaddru_reg(0x40000028)/ * BLE设备地址MSB寄存器* /

je_dialog.
离线
最后一次露面:2个月3周前
职员“title=
加入:2013-12-05 14:02
你好,我问过

你好Eli,我要求团队联系你讨论:你的设置有几个因素,他们需要澄清。我已经把robert寄给了这个帖子的副本,并让他保持联系好像我没有弄错,他本周去过你了。

嗨Vesan,谢谢你的评论!

BR JE_DIALOG.

eli.iser.
离线
最后一次露面:6年3个月前
加入:2014-04-13 07:54
谢谢你转发这个

感谢您转发此问题以支持。事实上,罗伯特星期二访问过,但直到昨天我没有确定这个问题。

祖马
离线
最后一次露面:4个月2周前
加入:2016-01-13 09:35
嗨,je_dialog,

嗨,je_dialog,
我也对Wethe我可以通过修改NVDS_TAG_BD_ADDRESS在NVDS刻录后的NVDS_TAG_BD_ADDRESS来更改BD地址的问题感兴趣。
我们希望我们的设备的BD地址可以根据从UART收到的数据进行更改。

mt_dialog.
离线
最后一次露面:6个月3天前
职员“title=
加入:2015-06-08 11:34
嗨祖马,

嗨祖马,

由BLE规范定义的BD地址有很少的选项,设备可以携带公共或随机地址,随机地址类型分为静态和私有,然后私有地址分为不可解析和可解析。我相信你想拥有的BD地址是公共场所(如果我错了,请纠正我)。设备在启动期间获得BD地址,在NVDS_READ_BDADDR()函数中(设备检查来自BD地址的NVDS结构或OTP的位置),并将获得的VED_BDDDR变量中的所获得的值放置在保存的地址中设备。

关于在运行时更改,如果您对随机的内容感兴趣,则随机地址模式可以为您做到这一点,但如果您想指定UART获得的确切地址,则必须在NVDS_READ_BDADDR之前提供BD地址()运行并将BD地址应用于堆栈,或者在设备运行时获取UART获取BD地址并将其复制到DEV_BDADDR变量,然后您将必须发送GAPM_RESET_CMD以便堆栈拍摄新BD地址。由于在规范中的BLE设备上的BD地址表示为固定或随机的BD地址,但是如果这是您想做的,因此,这是一种方法,因为这是一种方法,这是一种方法。

谢谢mt_dialog.