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.

[参考译文] AM2434:增大 MQTT 有效载荷大小

Guru**** 2442090 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1190518/am2434-increase-mqtt-payload-size

器件型号:AM2434

大家好、团队、

在 enet_lwip_icssg 中、我启用了 MQTT 并添加了源代码以与服务器连接。  我有兴趣发送(发布)高达8KB 的数据包。 但是、当我将数据包大小增加到2KB 之后、消息将 不会发布到服务器。 在不 修改 SDK 的情况下、用户最多可以发布256B。 为了增大大小、我 将 MQTT_RINGBUF_SIZE 从128增加到2048、然后重建了以下库(8_04_17 SDK)。  

供参考、以下是 需要重建的库:

gmake -s -f makefile.am243x enet-lwip-icssg_r5f.ti-arm-clang
gmake -s -f makefile.am243x lwip-freertos_r5f.ti-arm-clang
gmake -s -f makefile.am243x lwip-contrib_r5f.ti-arm-clang

通过上述更改、我能够发送大约2048字节。 我尝试进一步将 MQTT_OUTPUT_RINGBUF_SIZE 增大到4096、但在 mem.c 中收到此错误:

"MEM_malloc():没有这么大的池!"
我在 lwippools.h 中检查了池、发现池足够大、尝试添加更多池(50个大小为4096的池)并将池大小增加到8K、 但这没有解决 问题。
您能否分享我如何进一步增大 MQTT 封装尺寸?  
提前感谢您!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    让我明天再回到这个问题上

    BR

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

    尊敬的 Alex:

    如果将  MQTT_OUTPUT_RINGBUF_SIZE 增大 到8192、则需要使用此定义添加一个池 LWIP_malloc_MEMOOL (1、8560)、以便有合适的可用内存池。

    此致、

    Steffen

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

    您好、Steffen、

    感谢您的参与。  我假设 我收到此错误、因为 我没有考虑该主题、因此整体消息大小将略大于我创建的池大小。  现在、我没有收到之前收到的错误。  

    但是、当我尝试发布超过1KB 的有效负载时、我会不断断开连接。 我认为发生这种情况是因为发布之间的延迟很小、但即使添加了 vTaskDelay (x)并将 x 的值从1更改为10000、我仍然无法解决该问题。 你有什么建议吗?

    此致、

    Alex Walton