【问题标题】:How to recover nodemcu infinite loop如何恢复nodemcu无限循环
【发布时间】:2015-09-27 00:53:46
【问题描述】:

在我的 nodemcu/ESP8266 板上加载带有无限循环的 init.lua 时出错。

然后板子继续重启,不执行任何其他指令。

i = 10
timerId = 0
timerDelay = 30000 -- Milisec
pin = 5
gpio.mode(pin,gpio.INPUT) 
repeat(    
    print(gpio.read(pin))
    i = i + 1
    end)
until i < 5

【问题讨论】:

标签: lua esp8266 nodemcu


【解决方案1】:

我试过刷主板

python esptool.py -p /dev/tty.wchusbserial1450 run

python esptool.py -p /dev/tty.wchusbserial1450 write_flash 0x0000 ../nodemcu_latest.bin

然后修复我的代码并再次加载它,现在可以正常工作了

【讨论】:

  • 出于这个原因,总是在一个名为 init.lua 的文件中测试代码。
  • +1 最后评论。在 2-3 秒延迟后,一次性使用 tmr.alarm() 启动您的应用程序。在你的init.lua。如果您陷入恐慌循环,这足以发送 file.remove() 来删除 init.lua 文件。
  • @jezuz,run 命令的第一行是什么?我只执行了write_flash 命令并得到了我正在寻找的结果。
  • 我发现使用带有“清除闪光”选项的闪光工具 PyFlash 可以做到这一点。
  • 在写回闪存解决问题之前,我必须执行erase_flash
【解决方案2】:
--This file is init.lua
local IDLE_AT_STARTUP_MS = 10000;

tmr.alarm(1,IDLE_AT_STARTUP_MS,0,function()
    dofile("program.lua")--Write your program name in dofile
end)

我确实使用这种策略来防止出现错误时在启动时出现无限循环。将此文件另存为 init.lua 并将您的程序写入 program.lua

【讨论】:

    【解决方案3】:

    我所做的是使用 ESPlorer(Java 应用程序)http://esp8266.ru/esplorer/#download

    当我在闲逛时,我只有一个名为 init1.luainit.lua 文件,如果 ESP 重新启动没问题,您只需单击右侧显示的 init1.lua 按钮(使用“ Reload”按钮显示文件系统内容)

    非常简单,完成后您可以右键单击文件将其重命名为init.lua

    【讨论】:

      【解决方案4】:

      没有优雅的恢复方式。

      最好的办法是建立一种方法来防止您的代码在紧急情况下声明。例如,正如 TerryE 建议的那样,使用init.lua 中的timer.alarm 设置一次性计时器,以足够长的延迟调用主代码,以便在您不想启动时调用timer.stop你的主要代码。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,陷入了while 循环。

        刷一个不同的固件对我有用。

        【讨论】:

          【解决方案6】:

          这个答案与researcher01's answer基本相同,但使用OO API timers,因为上面使用的答案在2019年被删除。

          --This file is init.lua
          local IDLE_AT_STARTUP_MS = 10000;
          
          tmr.create():alarm(IDLE_AT_STARTUP_MS, tmr.ALARM_SINGLE,function()
              dofile("program.lua")--Write your program name in dofile
          end)
          

          【讨论】:

            猜你喜欢
            • 2015-06-25
            • 2021-09-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多