在玩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日
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/17227.html
標籤:嵌入式
上一篇:線性差值演算法
下一篇:展訊平臺uboot啟動流程
