【esp32】解决以太网+mqtt堆栈溢出问题 报错 no mem for receive buffer

news2024/11/18 9:38:44

本文主要记录了 esp32 + 以太网 +mqtt 功能时遇到的堆栈溢出的情况,千里之堤毁于蚁穴,开发过程的不细心导致多付出了一天多的时间,记录于此,共勉

📋 个人简介

  • 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎
  • 📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:esp32二次开发专栏 🍁
  • 💬格言:写文档啊不是写文章,重要的还是直白!🔥

【esp32】解决以太网+mqtt堆栈溢出问题 报错 no mem for receive buffer

  • 1.程序架构:
  • 2.问题场景描述:
  • 3.问题定位
    • 3.1监控堆栈
  • 4.查找内存泄漏的原因
  • 5.问题解决
  • 6.总结

1.程序架构:

if(以太网连接成功){
   
    mqtt_start();
}
// 创建一个任务,每间隔1s,将数据发到 mqtt broker
xTaskCreate(mqtt_publish_test, "mqtt_publish_test", 1024*4, NULL, configMAX_PRIORITIES, NULL);

2.问题场景描述:

esp32 开发板以太网连接上网,连接成功后通过 mqtt 将消息上传至服务器,但是存在问题

代码运行一段时间后,报错内存溢出 no mem for receive buffer ,然后就卡死了,只能手动重启

image-20230831191232772

3.问题定位

以太网口 task 运行时,会动态分配 ETH_MAX_PACKET_SIZE = 1522Byte 的内存,为什么程序的堆栈溢出呢??

image-20230831185358669

3.1监控堆栈

在 main 函数中,利用库函数监控堆栈的情况

ESP_LOGI("main", "[APP] Free memory: %d bytes", esp_g

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/956412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文看懂DETR(二)

训练流程 1.输入图像经过CNN的backbone获得32倍下采样的深度特征; 2.将图片给拉直形成token,并添加位置编码送入encoder中; 3.将encoder的输出以及Object Query作为decoder的输入得到解码特征; 4.将解码后的特征传入FFN得到预测特…

Rethinking the Role of Demonstrations: What Makes In-Context LearningWork?

背景 这篇论文主要验证了prompt demos对模型的作用是什么,主要几个方面的影响: 1.prompt demo的input和label的映射关系对结果影响非常小,模型没有从mapping关系中学到太多信息。这是比较反直觉的 2.模型从input输入的数据空间和label输出的…

VR全景与家居行业碰撞在一起,会迸发怎样的火花?

元宇宙的热度一直在持续,由于前几年疫情反复,很多人只能居家办公,这也让很多线下实体行业非常难做,元宇宙的兴起可以带动线下行业把生意做起来,那么家居行业、元宇宙、VR全景这些元素碰撞在一起,会迸发出怎…

从Instagram到TikTok:利用社交媒体平台实现业务成功

自 2000年代初成立和随后兴起以来,社交媒体一直被大大小小的品牌用作高度针对性的营销工具,自 Facebook推出近二十年以来,这些网站继续彻底改变企业处理广告的方式。 在这篇博文中,我们将讨论订阅企业应该如何从整体上对待社交媒…

秋云qiun chart 使用echart配置格式化柱形图数据

dataLabel数据文字格式化 <!-- seriesTemplate是config-echarts.js中对应图表类型定义好的series模板 &#xff0c;如果每个series的formatter都不一样&#xff0c;则format需要定义在chartData.series中&#xff0c;不能使用seriesTemplate --> <!-- formatter…

Java 面试 - Redis

Redis Redis 是基于键值对的非关系型数据库。Redis 拥有string、hash、list、set、zset等多种数据结构, redis具有惊人的读写性能, 其优秀的持久化机制是的它在断电和机械故障时也不会发生数据丢失, 可以用于热点数据存放, 还提供了键过期、发布订阅、食物、流水线、LUA脚本等多…

在node项目中通过jsencrypt实现内容加密

上来肯定先引入第三方依赖 npm install jsencrypt然后 我们创建一个js文件 叫 rsaEncrypt.js 参考代码如下 import JSEncrypt from jsencrypt/bin/jsencrypt.min// 密钥对生成 http://web.chacuo.net/netrsakeypairconst publicKey MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k…

echarts的click事件

目录 前言 一、click事件 前言 在使用echarts的过程中&#xff0c;最常用的则是不同系列所对应的click返回参数的不同 一、click事件 在以下图中&#xff0c;其实是两个不同系列的数据&#xff0c;一个是图中的钟表&#xff0c;一个是下面的图 const option {grid: {left: …

Visual Studio软件_MSC_VER值(MSVC编译器版本)的获取方法

本文介绍查看Visual Studio软件_MSC_VER值的方法。 _MSC_VER是微软公司推出的C/C 编译器——MSVC编译器的一个内置宏&#xff0c;其值表示当前Visual Studio软件中MSVC编译器的具体版本。不同的Visual Studio软件版本对应着不同的MSVC编译器版本——无论是不同发布年份的版本&…

RT-Thread程序内存分布

一般MCU包含的存储空间有&#xff1a;片内Flash与片内RAM&#xff0c;RAM相当于内存&#xff0c;Flash相当于硬盘。 编译器会将一个程序分类分为好几个部分&#xff0c;分别存储在MCU不同的存储区。 Keil工程在编译完之后&#xff0c;会有相应的程序占用的空间提示信息。 lin…

螺旋矩阵、旋转矩阵、矩阵Z字打印

螺旋矩阵 #include <iostream> #include <vector> void display(std::vector<std::vector<int>>&nums){for(int i 0; i < nums.size(); i){for(int j 0; j < nums[0].size(); j){std::cout<<nums[i][j]<< ;}std::cout<<…

【SpringSecurity】八、集成图片验证码

文章目录 1、生成图片验证码2、创建验证码过滤器3、将过滤器加入SpringSecurity过滤链4、修改登录页 SpringSecurity是通过过滤器链来完成的&#xff0c;接下来的验证码&#xff0c;可以尝试创建一个过滤器放到Security的过滤器链中&#xff0c;在自定义的过滤器中比较验证码。…

Linux系统下Web文件系统搭建

背景 为了方便和协作者共享文件和方便文件统一管理及下载&#xff0c;比如分享API文档&#xff0c;因此搭建一个简易的基于Apache服务的Web文件系统&#xff0c;使用浏览器进行文件访问及下载。 部署Apache服务器 本文的linux开发环境是Ubuntu 18.04 安装 sudo apt instal…

Collections和CollectionUtils集合操作

0.引入依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.4</version> </dependency> 一.Collections用法&#xff1a; 01、排序操作 reverse(List list)…

C++面试题(丝)-计算机网络部分(1)

目录 1计算机网络 53 简述epoll和select的区别&#xff0c;epoll为什么高效&#xff1f; 54 说说多路IO复用技术有哪些&#xff0c;区别是什么&#xff1f; 55 简述socket中select&#xff0c;epoll的使用场景和区别&#xff0c;epoll水平触发与边缘触发的区别&#xff1f;…

学术加油站|基于端到端性能的学习型基数估计器综合测评

编者按 本文系东北大学李俊虎所著&#xff0c;也是「 OceanBase 学术加油站」系列第 11 篇内容。 「李俊虎&#xff1a;东北大学计算机科学与工程学院在读硕士生&#xff0c;课题方向为数据库查询优化&#xff0c;致力于应用 AI 技术改进传统基数估计器&#xff0c;令数据库选…

第五章 树与二叉树 五、哈夫曼树(定义与构造方法),哈夫曼编码

一、带权路径长度 1.结点的权:有某种现实含义的数值&#xff08;如:表示结点的重要性等&#xff09; 2.结点的带权路径长度:从树的根到该结点的路径长度(经过的边数&#xff09;与该结点上权值的乘积。 3.树的带权路径长度:树中所有叶结点的带权路径长度之和。&#xff08;W…

740914L、740928LD、740912D插头式比例控制线圈放大器

740912、740912D、740912L、740912LD 740914、740914D、740914L、740914LD 740924、740924D、740924L、740924LD 740928、740928D、740928L、740928LD 770212、770214、770214N、770223 一般情况下选用的线圈&#xff0c;在工作的工程中&#xff0c;一般是不可能发生问题的…

关于PMP!被问到发疯的10个问题!!

最近很多人都在问我PMP证书相关的几个问题&#xff0c;我大致整理出来&#xff0c;统一回答。 1&#xff09;这是个什么证书&#xff1f;2&#xff09;到底有什么用&#xff1f;3&#xff09;考下来需要多少钱&#xff1f;4&#xff09;能不能不报班自己学&#xff1f;5&#…

【HarmonyOS】一文教你如何使用低代码平台网格布局动态加载数据

【关键字】 低代码平台、AGC、API6、网格布局、数据模型 【写在前面】 正式开工之前&#xff0c;先来说一下今天要实现的内容&#xff0c;今天会实现一个网格布局的展示&#xff0c;我会创建一个数据模型&#xff0c;然后网格列表的数据从数据模型中获取&#xff0c;从而实现…