乐鑫技术交流
直播中

你又知道了

12年用户 1068经验值
私信 关注
[问答]

MQTT客户端栈大小分配过大而导致无法初始化怎么处理?

在配置MQTT客户端时,因为我想接收很大的数据包(最大500k)。因此我想一次接收完成(扩展了psram)。所以我在配置MQTT客户端时将栈大小设置为114688,将接收缓冲区大小设置为102400.但是这样就导致esp_mqtt_client_start()这个函数无法返回,且报错E (7296) MQTT_CLIENT: Error create mqtt task;我想咨询一下,idf(v4.1)对MQTT的栈大小有最大限制么?最大可以设多大呢?
                                                                                                                                                                       

回帖(1)

莫联雪

2024-6-22 15:29:13
在处理这个问题时,我们可以分为以下几个步骤:

1. **确认问题**:首先,我们需要确认问题确实是由于栈大小分配过大导致的。从你的描述来看,这个可能性很大。

2. **查找文档**:查看ESP-IDF(版本4.1)的官方文档,了解MQTT客户端栈大小的限制。但是,文档中可能没有明确的最大栈大小限制。

3. **调整栈大小**:尝试减小栈大小,例如将栈大小设置为51200(50KB),看看是否能够成功初始化MQTT客户端。

4. **分批接收数据**:如果仍然无法解决问题,可以考虑将大的数据包分批次接收。这样,即使栈大小较小,也能够处理大的数据包。

5. **使用外部存储**:如果分批接收数据仍然无法满足需求,可以考虑将接收到的数据存储到外部存储设备(如SD卡)中,以减少对栈的需求。

6. **检查其他配置**:除了栈大小之外,还需要检查其他配置,如任务优先级、任务数量等,以确保它们不会导致初始化失败。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分