• 关于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日

  • 相关阅读:
    Jmeter(七)Jmeter脚本优化(数据与脚本分离)
    Jmeter(六)Jmeter脚本包含要素及书写习惯
    Redis的持久化之AOF方式
    Redis的持久化之RDB方式
    Redis持久化介绍
    Redis Keys的通用操作
    Redis的数据结构之sorted-set
    Redis的数据结构之哈希
    Redis的数据结构之字符串
    Jedis 连接池实例
  • 原文地址:https://www.cnblogs.com/fubo/p/12179531.html
Copyright © 2020-2023  润新知