关于ESP8266 NodeCMU固件无法刷入新代码的解决方法

Posted fubo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于ESP8266 NodeCMU固件无法刷入新代码的解决方法相关的知识,希望对你有一定的参考价值。

  在玩ESP8266时,有时候会无意中写了导致死循环的代码,或都某些函数传递了不合适的参数导致系统崩溃,这可能会导致ES8266不停地重启,这时我们发现无法刷入新的代码,也无法删除8266中的原代码。我曾经就因为这个问题报废了块板子。。。心痛。。。

  后来通过在网上找相关资料以及自己分析,总结了以下两个方法去避免以上情况:

原因分析:NodeMCU程序出现错误时,可能会导致ESP8266不停地重启,并且重启速度太快以至于我们都无法删除板子里的原代码(甚至重新刷ROM也无法刷入),更无法重新写入程序。为避免这种情况,可采用如下方法:


方法一:可以在开发调试阶段,在文件头加入如下代码:
gpio.mode(1,gpio.INPUT)
v=gpio.read(1)
print("--Security Port D1:"..v)
if(v==1) then
file.remove("init.lua")
print("--file init.lua removed.")
end
当无法刷入程序时,我们可以将GPIO1置为高电平,系统重启时便会自动删除代码文件。


方法二:.将核心代码不要放在init.lua中,启动时在init.lua中延迟一段时间后调用核心代码文件。
tmr.alarm(0, 2000, 0, function()
dofile("code.lua") ---加载的模块文件
end)
这样在核心代码出问题且无法刷入新的代码时,重启模块利用init.lua中的延迟间隔重新覆盖核心代码。

-----------------

By: ShadowlessWalker 2020年1月11日

以上是关于关于ESP8266 NodeCMU固件无法刷入新代码的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

esp8266重新烧录固件会自动替代原来的固件

关于esp8266烧写固件后下载Lua代码一直超时的原因

ESP8266烧录固件接线方法,配置掉电无法保存

WIFI ESP8266模块输入AT指令 不回复OK

ESP8266 12F 怎么烧写自己编译的固件

ESP8266 wifi 模块配置,Wechat+APP控制实现