This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2652R:"out of network buffers"error

Guru**** 2587365 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1405276/cc2652r-out-of-network-buffers-error

器件型号:CC2652R
主题中讨论的其他器件:SysConfig

工具与软件:

您好!

我正在使用蓝牙网状应用程序、其中一个节点每1或2秒发送一次消息、但在运行了几天或有时不到一天之后、会出现此错误("网络缓冲区外")、它无法再发送消息。

这部分代码来自蓝牙网状 网络库的 transfer.c 文件、在其中我会看到"Out of network buffers"错误:

static int send_unseg(struct bt_mesh_net_tx *tx, struct net_buf_simple *sdu,
		      const struct bt_mesh_send_cb *cb, void *cb_data,
		      const uint8_t *ctl_op)
{
	struct net_buf *buf;

	buf = bt_mesh_adv_create(BT_MESH_ADV_DATA, tx->xmit, BUF_TIMEOUT);
	if (!buf) {
		BT_ERR("Out of network buffers");
		return -ENOBUFS;
	}

我增加了广播缓冲器的数量、但错误仍然存在。 我不知道是否有办法增加网络缓冲区的数量、但我尚未找到。

谢谢!

Daniel Fernandez

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    感谢您的咨询。

    我可以问您使用的 SDK 版本是什么、如果这来自开箱即用示例、请将其用作参考吗?

    BR、

    David。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、您好!

    我使用的是 SDK 的6.40.0.13版本、该工程基于 simple_mesh_node 示例。

    谢谢!

    Daniel。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    谢谢。 您能否分享一下您对该项目所做的更多修改? 它是否开箱即用? 您如何修改了 ADV 缓冲器的数量(CONFIG_BT_Mesh_ADV_BUF_COUNT)?

    BR、

    David。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我更改了 SysConfig 中的"DEV ADV 缓冲器数量:射频堆栈-> BLE -> BLE 网状网络->传输层->广播缓冲器数量"。

    我必须指出的是、该设备既充当预置器、也充当网状网络的节点。 这可能是导致错误的原因吗? 在不同设备上安装该节点和置备程序会更好吗?

    谢谢!

    Daniel。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    我不认为这是问题的根本原因、在导致错误的时间段内是否有任何新的节点进入网状网络? 如果超时时间增加、该错误是否会重现? 如果您可以分享有关问题如何重现的更多详细信息、则会有所帮助。

    BR、

    David。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    节点每秒大约向另5个节点发送一条消息(1字节)(它将消息发送到组地址、其中所有其他节点都被订阅、因此不需要发送五条消息)、然后其他节点以另一条消息(8字节)响应主节点、同时检查未配置的信标是否已到达以配置另一个节点。 此外、该器件使用 SPI (作为从器件)与另一个器件进行通信。 就是这样。

    我认为、当配置节点多次失败时、可能会出现错误(超出网络缓冲区)、但无法完全确定。

    上周,我将发送消息的 freqüency 更改为2秒,此后错误不再发生

    谢谢!

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    我明白了。 我建议记录/打印用于配置节点的函数的状态返回结果、以希望找到其失败的原因。 此外、我会添加一个计数器、用于在尝试了多少次后查看它导致了错误。 我认为该错误是由于在配置新节点时缺少资源、因此通过将发送 msg 的间隔加倍来缓解此问题。

    BR、

    David。