我的NodeMCU程序已进入无限重启循环。
我的代码功能正常但我尝试做的任何操作,例如file.remove("init.lua")
或者只是=node.heap()
,它会发生恐慌并重新启动:PANIC: unprotected error in call to Lua API (not enough memory)
。
因此,我无法更改任何代码或删除init.lua
以停止自动代码执行。
如何恢复?
答案 0 :(得分:6)
我尝试重新刷新另一个版本的NodeMCU,但它开始在串口发送垃圾。
然后,我回想起NodeMCU有两个额外的文件:blank.bin
和esp_init_data_default.bin
。
我分别在0x7E000
和0x7C000
处闪现了它们。
它们在NodeMCU闪存中也可以INTERNAL://BLANK
和INTERNAL://DEFAULT
使用。
这启动了新的NodeMCU固件,我的所有文件都消失了,而且我的无限重启循环。
答案 1 :(得分:5)
闪现以下文件:
0x00000.bin到0x00000
0x10000.bin到0x10000
并且,esp_init_data_default.bin的地址取决于模块闪存的大小。
0x7c000表示512 kB,模块如ESP-01,-03,-07等。
0xfc000为1 MB,模块如ESP8285,PSF-A85
0x1fc000 for 2 MB
0x3fc000 for 4 MB,模块如ESP-12E,NodeMCU devkit 1.0,WeMos D1 mini
然后,在闪存之后,这些二进制文件格式化其文件系统(运行" file.format()"使用ESPlorer),然后闪烁任何其他二进制文件。
答案 2 :(得分:1)
我刚刚完成了类似的问题。在我的情况下,最终用户错误导致需要强行擦除init.lua
,但我认为这两个问题都可以类似地解决。 (为了完整起见,我的问题是在dsleep()
中进行了一次非常短的init.lua
电话,让电路板在启动init.lua
后立即重置。)
我尝试刷新新的NodeMCU固件,将blank.bin
和esp_init_data_default.bin
写入0x7E000
和0x7C000
,并将0x00000.bin
写入0x00000
, 0x10000.bin
到0x10000
。在我的案例中,这些都没有帮助。
我的硬件是Adafruit Huzzah ESP8266突破(ESP-12),带有4MB闪存。
对我有用的是:
boot_v1.2.bin
,user1.1024.new.2.bin
,blank.bin
和esp_init_data_default.bin
(在bin /和bin / at /)下。boot_v1.2.bin
至0x00000
user1.1024.new.2.bin
至0x010000
esp_init_data_default.bin
至0xfc000
blank.bin
至0x7e000
esptool.py
1.2.1。esptool.py
)。esptool.py --port <your/port> erase_flash
答案 3 :(得分:0)
唯一对我有用的想法是ubuntu中的python flash工具esptool,windows flashtool从未删除过init.lua和重启循环。
命令(ubuntu):
git clone https://github.com/themadinventor/esptool.git
cd esptool
python esptool.py -h
ls -l /dev/tty*
nodemcu_latest.bin可以从github或任何地方下载。
sudo python esptool.py -p /dev/ttyUSB0 --baud 460800 write_flash --flash_size=8m 0 nodemcu_latest.bin