OTA Updates
介紹 Introduction
OTA(空中)更新是使用Wi-Fi連接而不是串列埠將固件載入到ESP模塊的過程。在對模塊進行有限或無物理訪問的情況下,這種功能變得非常有用。
OTA需要一下幾個方面的支持:
- Arduino IDE
- Web Browser
- HTTP Server
Arduino IDE選項主要用於軟體開發階段。 另外兩個選項將在部署後更有用,通過Web瀏覽器手動提供應用程序更新模塊,或者自動使用http伺服器。 在任何情況下,必須通過串列埠完成第一個固件上傳。 如果OTA常式在草圖中正確實現,則所有後續上傳都可以在空中完成。
OTA進程沒有強加的安全性被黑客入侵。確保開發人員只能從合法/受信任的來源獲得更新。更新完成後,模塊將重新啟動,並執行新的代碼。開發人員應確保在模塊上運行的應用程序以安全的方式關閉並重新啟動。以下章節提供有關OTA過程的安全性和安全性的其他信息。
保密性 Security
模塊必須以無線方式顯示,以便通過新的草圖進行更新。 這使得模塊被強行入侵併載入了其他代碼。 為了減少被黑客入侵的可能性,請考慮使用密碼保護您的上傳,選擇某些OTA埠等。
檢查可以提高安全性的ArduinoOTA庫提供的功能:
void setPort(uint16_t port); void setHostname(const char* hostname); void setPassword(const char* password);
已經內置了某些保護功能,不需要開發人員進行任何其他編碼。ArduinoOTA和espota.py使用Digest-MD5來驗證上傳。使用MD5校驗和,在ESP端驗證傳輸數據的完整性。
進行自己的風險分析,並根據應用決定什麼庫功能來實現。如果需要,請考慮實施其他保護手段被黑客入侵。僅根據具體時間安排上傳的模塊,觸發OTA只能按用戶專用的「更新」按鈕連接到ESP等。
安全性 Safety
OTA過程在上傳過程中採用ESP的資源和帶寬。然後重新啟動模塊並執行新的草圖。分析和測試它如何影響現有和新草圖的功能。
如果將ESP放置在遠程位置並控制某些設備,則應該額外注意如果本設備的操作突然被更新過程中斷,會發生什麼。因此,在開始更新之前,請決定如何將本設備置於安全狀態。例如,您的模塊可能會按順序控制花園澆水系統。如果這個順序沒有正確關閉並且水閥打開,你的花園可能會被淹沒。
ArduinoOTA庫提供以下功能,旨在處理OTA特定階段應用程序的功能或OTA錯誤:
void onStart(OTA_CALLBACK(fn)); void onEnd(OTA_CALLBACK(fn)); void onProgress(OTA_CALLBACK_PROGRESS(fn)); void onError(OTA_CALLBACK_ERROR (fn));
基本要求 Basic Requirements
快閃記憶體晶元尺寸應該能夠同時保持舊的草圖(當前正在運行)和新的草圖(OTA)。
請記住文件系統和EEPROM例如需要的空間(一次)也看到閃光布局。
ESP.getFreeSketchSpace();
可用於檢查新草圖的可用空間。
有關內存布局的概述,存儲新草圖以及在OTA過程中如何複製它們,請參閱更新進程 - 內存視圖。
以下章節提供了更多的細節和具體的OTA做法。
購買地址 arduino_ESP8266
更多建議和問題歡迎反饋至 YFRobot論壇