主题中讨论的其他器件: CC3220SF、 CC3200MOD
工具/软件:TI-RTOS
尊敬的奥斯汀:
-由于我的线程(I.e、RTOS/CC3220SF-LAUNCHXL:CC3220SF MQTT 订阅相关查询)已锁定、我打开的新线程出现相同问题。
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.
工具/软件:TI-RTOS
尊敬的奥斯汀:
-由于我的线程(I.e、RTOS/CC3220SF-LAUNCHXL:CC3220SF MQTT 订阅相关查询)已锁定、我打开的新线程出现相同问题。
您好、Sampath、
此外、不确定您是否收到了我的电子邮件通信、以尝试解决您的旧已关闭线程。 请参阅以下内容:
从共享的 e2e 链接上的最新博文开始、我能够使用 SDK 版本 simplelink_cc32xx_sdk_1_40_01_00中的 MQTT 客户端示例重现 p Sampath 描述的行为。 此问题似乎是由于未正确增加以下行中的缓冲区长度导致的:
#define MQTCLIENT_BUF_LEN 4096 //1024 /*缓冲器长度*/
尽管 p Sampath 可能正在更改库中的行、但其更改可能不会影响或包含在最终源代码中。 他需要确保静态库不会在其最终应用中使用、而是重新编译此库。 能否通过在文件 MQTT_CLIENT.c 中创建人工编译错误来执行快速测试、以验证是否包含了他的更改?
我看到、当此缓冲区长度未配置足够的空间时、客户端断开总是会对我发生。 但是、在调整上述缓冲区长度参数后、该示例按预期工作。 我希望这会有所帮助、如果还有其他后续问题、请告诉我。
尊敬的奥斯汀:
感谢您的回复。
1。 在第一个要点中、 MQTTCLIENT_BUF_LEN 似乎已成功设置为8192。 您是否说过、在进行此更改后、您仍会看到对可接收的数据量(即4K 字节)的限制? 或者、这只是您确认有效的值吗?
是的。 我在将 MQTTCLIENT_BUF_LEN 更改为8192后收到了4K 字节的数据、这是我使用 SDK 2.20中提供的 MQTT 客户端示例所做的。 即使我将 MQTCLIENT_BUF_LEN 更改为 超过8192、我也只能接收4K 字节。 因此、我想知道我们在 MQTT 回调函数(i.e、在 MQTT 库本身)中接收到的下标数据是否存在任何限制、如果不是、我在订阅主题上可以接收的最大数据量是多少?
2.在第三个项目符号中、您提到、尽管为 MQTTCLIENT_BUF_LEN 分配了4096、但仍可接收的最大字节数为600。 这可能是 MQTT 库的构建方式(未使用更新的值编译)中的问题、也可能是内存管理问题(根据您所描述的行为很可能是此问题)。
在这里、我使用了应用程序所需的所有 MQTT 文件、并对 MQTT 客户端示例进行了相应的更改。 我主要认为问题仅在于内存管理、但是否有任何有关基于线程的应用程序内存管理的示例或文档。
在我的应用程序中、线程大小声明如下:
Thread1:12000、Thread2:8192、Thread3:16000、Thread4:4096、Thread5:4096、Thread6:4096和 Thread7:2048
堆栈大小为20000、堆大小为0xFFF0
我想知道线程大小、堆栈大小和堆大小之间的关系吗? 以前在 CC3200Mod 中、我们在属性中设置的堆栈和堆大小存在限制、但对于最新的 CC3220SF、我认为没有限制、但我想要使用堆栈和堆大小设置的最大值、以便我们的芯片能够更好地运行 而不会突然重新启动或全局变量损坏等?
我设置的值正确与否、我是否需要更改任何堆栈大小以解决我的问题。
如果可能、您可以向我分享一些与存储器管理相关的链接和文档。
谢谢、此致、
Sampath
您好、Sampath、