hardware - 如何解释 ESP 芯片上的硬件看门狗异常?
问题描述
对于我们的一个项目,我们每天大约有 0.1% 的设备发生硬件看门狗重置,导致许多不必要的硬件重置。
我们正在尝试找出导致此硬件看门狗重置的原因,但未能在我们的代码中找到任何可能导致此行为的相关内容。
我们使用的是 Arduino 2.4.2 版本,我们不确定问题何时干扰了我们的解决方案,因为我们还有其他问题现在主要已解决。
幸运的是,我们的设备在重新连接时会向我们发送重启原因,我们会收到以下信息:
ResetReason=硬件看门狗;ResetInfo=致命异常:4 标志:1 (WDT) epc1:0x40102329 epc2:0x00000000 epc3:0x00000000 excvaddr:0x00000000 depc:0x00000000;
我们一直在寻找任何东西,当EspStackTraceDecoder
我们结束时:
0x40102329: wDev_ProcessFiq 在??:?
查看不同项目的搜索,这些项目大多提出了类似的问题,似乎包括一个 dns 查询。但不是全部,所以这似乎是一个普遍的问题?
我们可以提取哪些额外信息来帮助我们识别问题?
一些附加信息
- 内存是稳定的,我们有大约 15-17Kb 的空闲堆,这取决于模式和排队发送/接收队列的数据量。
- 我们这边的代码使用了产量、延迟等,所以应该总是喂 S/W 看门狗。这也适用于异步回调代码。
解决方案
检查您是否进行了错误的内存读取。HW WDT 的主要原因是,如果软件(或)cpu 不再工作,它可以触发复位。
您的 CPU 可能在执行某些指令时被卡住并且不会返回。
推荐阅读
- function - 无法使用 wow.js
- c# - 空变量是否与 C# 中的填充变量具有相同的大小
- android - 使用自动增量主键迁移 Room 数据库
- c# - 在 C# ExcelApp 析构函数中,我收到错误“当前上下文中不存在该应用程序”
- azure-sql-database - 复制 SQL Azure 数据库的源需要什么权限?
- reactjs - Stripe 注入组件的打字道具
- vba - 如何在特定网站上执行(登录)按钮?
- javascript - 在 Javascript 中使用 Class 而不是 ID
- php - 如何获取用户的每月展示次数?
- c++ - 此代码中的 double 精度仅为 6 位