当前位置: 首页 > news >正文

【ESP32填坑日记】问题篇⑨ 队列阻塞导致定时器不执行的coredump

关注+星标公众号,不错过精彩内容
在这里插入图片描述
作者 | 量子君
微信公众号 | 极客工作室


【ESP32填坑日记】问题篇专栏目录
【ESP32填坑日记】问题篇① ESP32测试 WiFi性能、BLE定频
【ESP32填坑日记】问题篇② ESP32主从一体机
【ESP32填坑日记】问题篇③ ESP32改用改成Nimble库
【ESP32填坑日记】问题篇④ ESP32出现数据拥塞
【ESP32填坑日记】问题篇⑤ ESP32主从一体下的MTU协商问题
【ESP32填坑日记】问题篇⑥ ESP32-C3低功耗问题
【ESP32填坑日记】问题篇⑦ 使用ESP32电源管理功能时遇见的几个常见问题及思考
【ESP32填坑日记】问题篇⑧ VScode中提示无法使用compilerPath解析配置:“C:/xxx/xtensa-esp32-elf-gcc.exe“
【ESP32填坑日记】问题篇⑨ 队列阻塞导致定时器不执行的coredump

文章目录

  • 前言
  • 一、问题描述
  • 二、问题分析
  • 总结


前言

本专栏包含大量的ESP32开发教程、实例以及经验分享,详细的讲述了怎样配置ESP32,怎样使用ESP32,以及在实际开发过程中遇到的问题及解决方案等。每一篇“填坑“文章都会具体到某一问题,例如电源问题、焊接问题、编程问题等,这样设计的目的就是为了让每一位读者都能找到自己需要的解答。

本章介绍了队列阻塞导致定时器不执行的coredump的具体原因分析。


一、问题描述

使用的5.05的库,原因是sdk库里最里层有个消息队列阻塞导致的,不确定是什么原因导致队列阻塞的。因为是通过线程判断定时器不执行直接assert的方式让esp32重启才抓到的这个问题,所以本案例中不关注死机原因是assert的问题,主要还是查看底层的消息队列阻塞的原因。
在这里插入图片描述

二、问题分析

esp_timer里面是禁止使用堵塞函数的,这个ESP32的WiFi和蓝牙都在用,如果对时间要求不是特别高,建议使用FreeRTOS Timer!!不管在esp_timer里多少秒调用一次,esp_timer都不能调用涉及block的操作。
另外, esp_ble_gatts_set_attr_value这个接口最终是通过queue send的,所以会有block的操作。大多数情况下,应该不会堵塞,但是如果极端环境下queue正好满了 这里就会Block,导致整个系统卡住。比如在蓝牙建立连接的过程中,建立连接等各个阶段都需要queue操作,所以此时很容易发生这个问题。


总结

本章介绍了队列阻塞导致定时器不执行的coredump的具体原因分析,应用层非常不建议使用esp_timer。建议使用FreeRTOS Timer!!

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

相关文章:

  • Intel x86架构之多处理器
  • 程序语言相关知识——偏向Eigen矩阵
  • 即时设计:设计流程图,让您的设计稿更具条理和逻辑
  • C#,冒泡排序算法(Bubble Sort)的源代码与数据可视化
  • CoTracker 环境配置与ORB 特征点提取结合实现视频特征点追踪
  • Grouping Increases
  • alibabacloud学习笔记02(小滴课堂)
  • [python]使用pyqt5搭建yolov8 竹签计数一次性筷子计数系统
  • 镜头选型和计算
  • Linux之Ubuntu环境Jenkins部署前端项目
  • 【uniapp】APP打包上架应用商-注意事项
  • 2024年度 ROTS - 实时操作系统 Top 15
  • 【管理篇 / 登录】❀ 06. macOS下使用USB配置线登录 ❀ FortiGate 防火墙
  • 【Nodejs】基于node http模块的博客demo代码实现
  • Go后端开发 -- Go Modules
  • 0基础学习移动端适配
  • Android交互
  • CAP理论的例子讲解
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaScript服务器推送技术之 WebSocket
  • SOFAMosn配置模型
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spark学习笔记之相关记录
  • vue--为什么data属性必须是一个函数
  • windows-nginx-https-本地配置
  • 从伪并行的 Python 多线程说起
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 每天一个设计模式之命令模式
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 思维导图—你不知道的JavaScript中卷
  • 我的面试准备过程--容器(更新中)
  • 学习JavaScript数据结构与算法 — 树
  • 正则表达式
  • ​力扣解法汇总946-验证栈序列
  • #QT(TCP网络编程-服务端)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Reactor简单使用教程
  • .net 程序发生了一个不可捕获的异常
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET处理HTTP请求
  • .NET开发人员必知的八个网站
  • .NET命令行(CLI)常用命令
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .Net中的设计模式——Factory Method模式
  • @Valid和@NotNull字段校验使用
  • [100天算法】-目标和(day 79)
  • [Angular] 笔记 20:NgContent
  • [Asp.net mvc]国际化
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改