在嵌入式開發中,執行關鍵任務功能的嵌入式 Linux 設備的 OTA 或無線更新對于通過部署安全補丁、功能更新和新服務來管理設備群至關重要。
OTA 更新本質上是通過無線方式發送并應用到遠程設備的數據。25 年前,當第一個用于移動設備的蜂窩數據網絡進入市場時,它就得到了普及。如今,OTA 數據傳輸更新也被應用于嵌入式 Linux 和當今使用的其他物聯網設備上的固件和軟件。
在這篇文章中,我們將討論為什么傳統上更新嵌入式設備具有挑戰性,以及為什么我們需要現代云技術(如適用于嵌入式的容器)來在需要時持續遠程更新嵌入式 Linux 設備。
更新嵌入式 Linux 產品的挑戰
當你更新嵌入式固件時,如果在更新過程中出現問題,嵌入式設備將面臨“變磚”的風險。變磚的意思就是它聽起來的樣子,一種無用的設備,可能需要技術人員進行昂貴的更改才能使其再次工作。
為避免設備變磚,OTA 系統需要能夠在部署更新時緩解以下任何問題:
間歇性網絡連接 — 在嵌入式開發中,連接可能是間歇性的,也可能會有所不同。你可能正在通過 5G 連接運行更新,或者比這更慢。在某些情況下,連接可能不安全。如果你通過公共網絡發送更新,情況尤其如此。
不可靠的電源 — 電源可能并不總是你可以控制的。對于客戶不是企業的 CSP(通信服務提供商)來說尤其如此。許多消費類設備使用電池供電,即使不是,也不能保證設備所有者在任何特定時刻和部署過程中都不會錯誤地拔掉電源。你必須能夠處理具有間歇性電源連接的設備。
處理遺留固件和軟件的能力 — 嵌入式領域的產品壽命差異很大。像汽車這樣的一些市場可以將相同的硬件保持五到十年,而對于家用電器來說可以是兩倍。但在消費電子領域,產品壽命要短得多,從 6 個月到 12 個月。當你對應用程序進行現代化改造時,你需要能夠同時維護舊軟件。
偏遠地區 — 如前所述,其中許多設備并不總是很容易訪問。今天在野外的許多物聯網設備已經存在了相當長的一段時間。例如,你是否考慮過你的恒溫器或路由器是否正在運行最新更新?在嵌入式開發中,與手機等“始終開啟、始終連接”類型的設備不同,許多物聯網 (IoT) 位于無法訪問的位置,網絡連接不可靠。
為了管理上述情況并保持其中許多設備所需的極端彈性,OTA 部署系統必須能夠始終將設備軟件和固件恢復到“良好狀態”。
單片嵌入式更新與模塊化更新
更新嵌入式 Linux 并不總是一帆風順。除了上述可能干擾更新的情況外,還有大多數嵌入式團隊如何構建軟件的問題。通常當需要更新時,開發人員必須更新軟件包或應用程序,然后重建整個單體應用程序,然后再將其部署到嵌入式 Linux 設備。
但是通過容器化方法,嵌入式開發人員將軟件堆棧更容易作為組件進行管理。容器是指滿足開放標準但專為嵌入式 Linux 設備設計的容器,這些設備通常以低規格運行且資源最少。構成物聯網的大多數嵌入式 Linux 設備都無法運行 Docker 引擎,因為它非常占用資源。