關於ESP8266 NodeCMU固件沒法刷入新代碼的解決方法

  在玩ESP8266時,有時候會無心中寫了致使死循環的代碼,或都某些函數傳遞了不合適的參數致使系統崩潰,這可能會致使ES8266不停地重啓,這時咱們發現沒法刷入新的代碼,也沒法刪除8266中的原代碼。我曾經就由於這個問題報廢了塊板子。。。心痛。。。less

  後來經過在網上找相關資料以及本身分析,總結了如下兩個方法去避免以上狀況:函數

緣由分析:NodeMCU程序出現錯誤時,可能會致使ESP8266不停地重啓,而且重啓速度太快以致於咱們都沒法刪除板子裏的原代碼(甚至從新刷ROM也沒法刷入),更沒法從新寫入程序。爲避免這種狀況,可採用以下方法:lua


方法一:能夠在開發調試階段,在文件頭加入以下代碼:
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置爲高電平,系統重啓時便會自動刪除代碼文件。spa


方法二:.將核心代碼不要放在init.lua中,啓動時在init.lua中延遲一段時間後調用核心代碼文件。
tmr.alarm(0, 2000, 0, function()
dofile("code.lua") ---加載的模塊文件
end)
這樣在覈心代碼出問題且沒法刷入新的代碼時,重啓模塊利用init.lua中的延遲間隔從新覆蓋核心代碼。調試

-----------------code

By: ShadowlessWalker 2020年1月11日開發

相關文章
相關標籤/搜索