标题## ESP8266模块无限重启崩溃问题

崩溃截图 在这里插入图片描述
崩溃原因 在这里插入图片描述 外部复位/看门狗复位
Fatal Exception 在这里插入图片描述 BIN文件损坏倒是不可能,因为之前烧录都没问题,就算在做数据透传实验时,出现了无限刷重启的BUG
总结 第一次弄这个esp8266,可能是因为内存溢出造成的野指针,也就是所程序代码的内存地址跑丢的野指针的现象,重复刷了好几次原厂固件,可能还是不能把野指针清除,反正这个模块费了,无语了,一不小心搞费一个,网上也有大量的这个问题,都没得到解决,以后不用esp8266做数据透传了,太吓人了/(ㄒoㄒ)/~~

参考:https://www.espressif.com/zh-hans/support/documents/technical-documents?keys=Fatal+exception+%280%29

/(ㄒoㄒ)/2020-6-9后续

2020-6-9 在尝试用python将整个flash全部刷新一遍,恢复出厂设置后,遗憾的事情发生了 --> 还TM是这个样子,我佛了,看来是真没救了,全网都没有有效的法子,只有换个了,6块钱,心疼
python将ESP8266恢复出厂的方法借鉴 https://www.bilibili.com/read/cv5551544
最近做了一个电子墨水屏万年历,在移植屏幕代码时遇到了 esp8266 无限 软复位的 问题 ,如果你的串口打印是以下图片所示,那么恭喜你 问题 解决了。 造成软复位的原因是因为,程序里有死循环,没有及时喂狗导致的,我没有找到关闭看门狗的办法,所以我选择在死循环,和长等待的循环中增加喂狗语句: ESP.wdtFeed(); 这个原因大致是:non-OS SDK 不支持抢占任务或进程切换。因此开发者需要自行保证程序的正确执行,用户代码不能长期占用 CPU。否则会导致看门狗复位, ESP8266 重启 。(这段换引用的)。 我的 WiFi 模块 本来已经调好了,功能一切正常。但是当我隔了一段时间再次使用时,出现了一直 重启 的情况。 重启 输出的内容: ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x40100000, len 1396, room 16 tail 4 chksum 0x89 load 0x3ffe8000, len 776, room 4 tail 4 chksum 0xe8 load 0x3ffe8308, len 540, room 4 tail 8 原因:while(1)导致硬件看门狗一直复位无法烧写程序。 现象: esp8266 反复 重启 ,lua程序无法烧录进去。解决办法:将GPIO0接地(防止进入boot引导区),再擦除flash,烧写固件,可以用esptool.py或者ESPflashDownloadtool ps0:擦除flash之前,cmd安装python,pip;并配置环境变量。 ps1:擦除flash时,gpio0接地,执行esptool.p. vTaskList() 介绍 使用 ESP32/ ESP8266 进行开发时,读者可通过 vTaskList() 来协助分析操作系统当前 task 状态,以帮助优化 内存 ,帮助定位栈溢出 问题 ,帮助理解和学习操作系统原理相关知识。 读者若想深入了解 vTaskList(), 可参考 vTaskList() 英文原版介绍 相关文档。 vTaskList() 使用 使用 vTaskList() 前需使能: make menuconfig -> Component config -> FreeRTOS -> Enable FreeRTOS trace facility make menuconf - 1)NodeMcu作为AP,手机控制端作为STA,连上AP - 2)NodeMcu作为WebSocketServer端,手机作为WebSocketClient端 - 3)两者建立WS通信,手机往NodeMcu发送控制命令 - 4)NodeMcu控制电机 一旦程序编译过程中出现创建xx失败,像这种 问题 ,一般是固件没有添加进去 可对比一下最初构建固件时选择了哪些,如果都有了,那就是语法错误。检查下API是否改变,或者检查其中的参数 二、中文注释 不要在文件中添加中文注释,因为编译器并不支持中文,有时候会导致出错 三、8266固件默认是从init.lua文件中启动,所以应该将第一个启... 以及一系列报错, 3fffffa0: 3fffdad0 00000000 3ffee650 40203458 3fffffb0: feefeffe feefeffe 3ffe85e0 40100b51 首先我们来看: NodeMCU,是一个开源的物联网平台。 它使用Lua脚本语言编程。该平台基于eLua 开源项目,底层使用 ESP8266 sdk 0.9.5版本。该平台使用了很多开源项目, 例如 lua-cjson, spiffs. Nod 这几天一直被ESP32 无限 启动的 问题 所困扰。 具体情况就是一个刚刚焊接好的板,啥都没有干,接上电源就开始 无限 重启 ,串口输出掉电检测器启动啥的,再结合网上找到的情况,妥妥的电压不够,导致掉电检测器触发复位。 刚开始以为是电容用的不对,从100nF换成22uF,然后又并联的220uF,还是不行,电压检测还是只有2.0~2.7V,根本不够启动。 最后发现是自恢复保险丝选的不对,选成了0.05A 60V的,怪不得电压上不去。😭 发现后我人都傻了。 最后得出结论,下载启动模式是可以正常启动的,说明这模式启动 多半是 内存 使用不当   1.如果你要用很大长度的数组,那么可以换用更小的数据类型。比如,int值要占用两个字节,你可以用byte(只占用一个字节)代替; 2. esp8266 有时会莫明 重启 ,大部分情况是变量设置不当,虽然编译通过了,但变量在调用过程中出现异常,造成函数运行时变量 内存 溢出,写复杂代码时, 最好是不要一次写了很多再编译调试。 3. 尽量少用全局变量,全局变... 在使用 ESP8266 跑freertos操作系统时,如果使用sprintf函数进行将其他数据转换成字符串格式时,如果将存储字符串的数组定义成局部数组会出现程序跑死然后 重启 问题 。为了避免程序跑死 问题 ,需要将存储字符串数组定义成全局数组或者局部数组用static关键字声明。出现这种 问题 的原因是在线程切换时数组的地址偏移出现了 问题 ,来回切换地址出现了 问题 。一般情况下我们定义成全局变量就不会出现这种 问题