关于NodeMcu刷固件遇到的问题及解决
遇到的问题
通过https://nodemcu-build.com/ 构建自己需要的固件下载刷机的过程中,我发现虽然用nodemcu_flasher刷入nodeMcu过程中,我选择了所下载的固件,但调试时,会出现乱码横飞,nodeMcu上LED狂闪,无论怎么重启复位,都无效,说明刷机失败,固件无法刷入或是刷入失败。
上网找了很多说法,调整nodemcu_flasher刷机方式,比如波特率等,还是无效,换调试器为ESPlorer,也还是乱码在跳动。
这说明不是调试器问题,还是刷机方式有问题。
解决办法
知道了刷机方式有问题,我试着网上一些办法,通过进入刷机方式,再次尝试用nodemcu_flasher刷机
进入刷机模式方法:
按住 FLASH 按键(这里不松开)
按下 RST 按键并松开
松开 FLASH 按键
还是失败,之后看一些教程文章,用的是esptool.py刷机,想想可能是刷机工具出了问题,于是找到了官方说明文档:https://nodemcu.readthedocs.io/en/master/en/flash/
里面提到了3种刷机工具:
之前本人用的都是第2个,它其实在2015年9月就停止更新了,所以它能刷旧固件,但对于新的固件就支持的不好,出现无法先格式化再刷机的情况,导致刷机失败。
第1个esptool.py是需要再python2.7环境下才能正常运行,本人装的是python3.5的版本,折腾一下比较麻烦,又觉得用命令行去使用不够好用,就选用了第3个刷机工具NodeMCU PyFlasher,它是基于esptool.py的可视化版本,底层还是用esptool.py,但加了个UI,又不用安装python,在window下可以直接使用,下载地址:https://github.com/marcelstoer/nodemcu-pyflasher/releases
重新连接Tera Term,不再乱码跳动,板上的LED也不再闪烁。
回车开始输入
print("Hello NodeMcu")
,返回Hello NodeMcu
,调试成功,表明固件输入成功,问题解决。
ESPlorer介绍
之前提到了这个调试工具,这里插入介绍一下。ESPlorer是基于JAVA开发的,所以要使用它,需要配置安装Java的SDK,并且为windows配置Java环境,这些都比较容易,随便百度都能找到相关教程,乃至一键配置的脚本。然后点击ESPlorer文件夹里的ESPlorer.bat就能运行它了。
相较于Tera Term只能一个命令传过去运行,它可以写完整段程序后,再保存上传NodeMcu运行,复杂些功能的实现就靠它了。
有时可能ESPlorer没有反应的情况或者其他bug,请重启这个软件,毕竟版本是0.2.0-rc5,bug会比较多,下次找到更好的调试器(IDE),再换吧,先学着用用,应该足够了。
结尾
通过找相关资料,发现之前刷固件失败主要是,由于所用的刷固件软件版本太久,不兼容新固件,也没有清除原flash里固件数据的功能,导致失败,换用基于esptool.py的NodeMCU PyFlasher,问题解决。(当然用旧的固件对于新手的我来说,练手也是足够了,刷不刷新固件问题不大)。同时介绍了一下ESPlorer这个IDE的基础用法。
参考资料:
官方文档:https://nodemcu.readthedocs.io/en/master/en/flash/
nodemcu-pyflasher页面:https://github.com/marcelstoer/nodemcu-pyflasher
esptool页面:https://github.com/espressif/esptool