崩溃截图
|
|
崩溃原因
|
外部复位/看门狗复位
|
Fatal Exception
|
BIN文件损坏倒是不可能,因为之前烧录都没问题,就算在做数据透传实验时,出现了无限刷重启的BUG
|
总结
|
第一次弄这个esp8266,可能是因为内存溢出造成的野指针,也就是所程序代码的内存地址跑丢的野指针的现象,重复刷了好几次原厂固件,可能还是不能把野指针清除,反正这个模块费了,无语了,一不小心搞费一个,网上也有大量的这个问题,都没得到解决,以后不用esp8266做数据透传了,太吓人了/(ㄒoㄒ)/~~
|
参考:https://www.espressif.com/zh-hans/support/documents/technical-documents?keys=Fatal+exception+%280%29
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关键字声明。出现这种
问题
的原因是在线程切换时数组的地址偏移出现了
问题
,来回切换地址出现了
问题
。一般情况下我们定义成全局变量就不会出现这种
问题