如何从NodeMCU中的无限重启循环中恢复?

时间:2015-04-18 19:32:10

标签: loops reboot

我的NodeMCU程序已进入无限重启循环。

我的代码功能正常但我尝试做的任何操作,例如file.remove("init.lua")或者只是=node.heap(),它会发生恐慌并重新启动:PANIC: unprotected error in call to Lua API (not enough memory)

因此,我无法更改任何代码或删除init.lua以停止自动代码执行。

如何恢复?

4 个答案:

答案 0 :(得分:6)

我尝试重新刷新另一个版本的NodeMCU,但它开始在串口发送垃圾。

然后,我回想起NodeMCU有两个额外的文件:blank.binesp_init_data_default.bin

我分别在0x7E0000x7C000处闪现了它们。

它们在NodeMCU闪存中也可以INTERNAL://BLANKINTERNAL://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),然后闪烁任何其他二进制文件。

Downloads Link

答案 2 :(得分:1)

我刚刚完成了类似的问题。在我的情况下,最终用户错误导致需要强行擦除init.lua,但我认为这两个问题都可以类似地解决。 (为了完整起见,我的问题是在dsleep()中进行了一次非常短的init.lua电话,让电路板在启动init.lua后立即重置。)

我尝试刷新新的NodeMCU固件,将blank.binesp_init_data_default.bin写入0x7E0000x7C000,并将0x00000.bin写入0x000000x10000.bin0x10000。在我的案例中,这些都没有帮助。

我的硬件是Adafruit Huzzah ESP8266突破(ESP-12),带有4MB闪存。

对我有用的是:

  1. 从Espressif下载NONOS SDK(我使用的是http://bbs.espressif.com/viewtopic.php?f=46&t=1702中的1.5.2版本。)
  2. 解压缩以获取boot_v1.2.binuser1.1024.new.2.binblank.binesp_init_data_default.bin(在bin /和bin / at /)下。
  3. 将以下文件刷新到指定的内存位置:
    1. boot_v1.2.bin0x00000
    2. user1.1024.new.2.bin0x010000
    3. esp_init_data_default.bin0xfc000
    4. blank.bin0x7e000
    5. 关于闪烁的注意事项:
      • 我使用了esptool.py 1.2.1。
      • 由于我的问题的性质,我只能在编程模式下(即在GPIO0保持下降到GND的情况下启动之后)对闪存进行更改。
      • 我发现我需要在每一步之间重置电路板(在第一次失败后调用esptool.py)。
  4. 擦掉了闪光灯。 esptool.py --port <your/port> erase_flash
  5. 然后我就能写一个新的固件了。我使用了一个stock nodeMCU 0.9.5只是为了隔离变量,但我强烈怀疑任何固件都可以在这一点上运行。

答案 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