關於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日


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM