物聯網 (IoT) 的規模給部署帶來了許多挑戰。僅在我們的家中,我們就看到連接設備的數量急劇增加,從路由器和幾臺個人電腦到遠程鎖門、激活百葉窗、控制照明、管理溫度和濕度以及更多的。為了使眾多設備保持相關性和安全性,無線 (OTA) 固件升級必須成為物聯網系統不可或缺的一部分。
想象一個巨大的市場,其中部署信標提供有關展示產品的信息。這些信標的位置可能不容易訪問,并且這些信標的數量使得它們不可能在部署后單獨編程。因此,當出現需要重新部署的新功能或缺陷時,OTA 固件升級成為一項重要的省時功能。
通過 BLE 進行 OTA 固件升級
OTA 的有效性已在手機等應用中得到證明,這些應用通過定期升級接收新功能并修復錯誤,而相對較新的 OTA 固件升級功能與藍牙低功耗 (BLE) 為物聯網帶來了同樣的能力。
在 IoT 環境中,推動 OTA 固件升級超過 BLE 要求的主要原因有三個:
廣泛和異構的設備部署
設備的數量和不同類型的設備在分布式網絡中起著非常重要的作用。標準化的 OTA 接口可確保跨不同節點重用架構。考慮體育場中的智能照明:雖然巨大的泛光燈和走廊燈的功能可能不同,但可以在它們之間重復使用基于 BLE 的標準 OTA 接口。這意味著跨這些異構設備推送新固件的主機設備可以是一個通用平臺。這也意味著體育場內所有不同類型的燈都可以從一個控制室進行升級,而不是通過多個單獨的升級。
不斷變化的需求和新功能
物聯網是一個不斷增長且瞬息萬變的市場,具有新的產品需求,并且會定期添加新的 BLE 功能。安全威脅和隱私泄露是推動這些變化的一些最大因素。為了防止新的病毒攻擊,設備固件可以通過 OTA 固件升級過程包含修復和更安全的算法。在任何物聯網系統中,都有兩部分:硬件和固件。在基于 SoC 的實現中,OTA 固件升級功能不僅可以更新固件,還可以重新配置片上硬件資源。
關鍵的上市時間需求
物聯網系統的設計周期非常短,需要不斷創新和部署最新功能。一般的開發過程是對硬件進行過度設計,以在更長的時間內維持不斷擴大的市場需求。OTA固件升級支持分階段部署解決方案。例如,恒溫器系統的初始設計只需一個熱傳感器就可以快速推出,然后進行更新以啟用濕度傳感器。請注意,使用這種方法,硬件設計是一個深思熟慮的過程,從硬件角度在架構階段考慮未來的推出。
然而,雖然 OTA 固件升級有利于物聯網應用,但產品團隊必須注意并避免一些陷阱。現場升級固件的能力以及對上市時間的極端要求可能會導致過快發布固件的壓力。例如,爭取實現產品的大規模部署可能會促使市場營銷依賴于固件可以稍后更新的事實。這反過來可能導致發布尚未完全驗證或優化的不穩定軟件或產品。此外,最終用戶可能不會很好地接受頻繁的更新。產品團隊應仔細權衡此類決定的影響,并限制過度使用 OTA。
OTA基礎
在基礎方面,OTA 固件升級與任何其他引導加載程序沒有什么不同,例如 UART 引導加載程序或 USB 引導加載程序。圖 1 顯示了基于固件的可升級系統的基本架構。
【圖1 | UART bootloader系統架構]
如圖所示,目標器件的非易失性存儲器分為兩部分——引導加載程序和可引導加載。引導加載程序是存儲負責設備引導操作的代碼的內存部分;檢查主機是否有可引導加載部分的更新固件映像;通過 UART 接口從主機接收更新的固件映像;并將更新后的映像寫入內存的可引導加載部分。內存的可引導加載部分是定義系統功能的實際應用程序代碼。
同樣,要了解 OTA 固件升級,內存可以分為 bootloader 和 bootloadable 部分。這里的主要區別在于通信接口用于從主機接收新的固件映像。在 OTA 固件升級的情況下,無線通信接口,如 WiFi、ZigBee、藍牙等,用于通過無線接收更新的固件圖像。無論接口如何,過程和基本原理都是相同的。
如今,BLE 無處不在,因為它提供了更低的功耗,并且在大多數 PC 和手機中都得到了支持。這種廣泛的可用性使其成為物聯網應用程序的首選。話雖如此,BLE 是一個不斷發展的標準。幾乎每年都會發布一個新版本,以包含更多功能來滿足物聯網應用不斷變化的需求。
在這個競爭激烈的市場中,芯片供應商競相提供符合新版規范的解決方案。在大多數情況下,芯片供應商在多個 BLE 堆棧/IDE 版本上分階段支持這些功能。此外,不斷變化的規范為版本之間的廣泛測試留下了最少的時間,因此硅供應商的每個新 BLE 堆棧版本通常都有由客戶報告或在測試或開發期間在內部捕獲的缺陷修復。因此,當 BLE 用于使物聯網設備保持最新時,應用程序代碼可能需要升級,但核心 BLE 堆棧也可能需要更新。強大的引導加載程序架構應該能夠支持這些不同的用例,并且足夠靈活以適應不斷變化的應用需求。
OTA 引導加載程序架構
物聯網空間是多種多樣的,應用程序和最終解決方案的要求也是如此。為了保持靈活性,產品團隊應選擇滿足其應用需求的 OTA 引導加載程序架構。
有兩種類型的 OTA 引導加載程序架構可用于基于 BLE 的設備:
固定堆棧 OTA 引導加載程序
在固定堆棧 OTA 引導加載程序實施中,堆棧不會升級 - 只能升級特定于應用程序的固件。通過這樣的實現,堆棧存儲在內存的寫保護/引導加載程序部分。圖 2 顯示了一個典型的固定堆棧 OTA 引導加載程序實現。
【圖2 | 基于 BLE 的固定堆棧 OTA 引導加載程序]
固定堆棧 OTA 引導加載程序的優點是升級固件所需的時間更少,因為只能升級特定于應用程序的代碼。另一方面,缺點是即使部署后發現嚴重錯誤,也無法升級堆棧代碼。
可升級堆棧 OTA 引導加載程序
在可升級堆棧引導加載程序實施中,堆棧和應用程序固件都可以升級。盡管引導加載程序的實際實現可能因供應商而異,但在典型的可升級堆棧實現中,內存分為三個部分:
啟動器: 啟動器基本上是一個沒有通信接口的引導加載程序。它檢查是否需要引導加載并將控制權相應地傳遞給堆棧或應用程序部分。如果有新圖像可用,它還負責升級存儲堆棧的內存部分。
堆棧: 此部分存儲 BLE 堆棧。當主機設備有新的固件映像時,堆棧部分負責與主機設備通信。此外,此部分與 BLE 連接應用程序共享。實際上,這部分就像一個引導加載程序和一個可引導加載程序。該部分由啟動器通過向該部分寫入新的堆棧固件來引導加載。然后,此部分引導加載應用程序部分。
應用程序: 這部分是實際的應用程序代碼,就像上面提到的任何其他實現一樣。
一個可升級棧OTA bootloader的操作可以通過三步來理解:
步驟1: 圖 3 顯示了目標設備(即需要無線升級的設備)和主機設備(即具有新固件并負責將其發送到目標設備的設備)。目標使用其現有的 BLE 協議棧接收新的 BLE 協議棧。這個新的 BLE 協議棧存儲在內存的特定應用固件部分。由于物聯網設備通常具有有限的內存,因此特定應用的固件部分被新的 BLE 協議棧覆蓋。額外的內存會增加設備成本,并且不能僅用于引導加載目的。請注意,不能直接覆蓋現有的 BLE 協議堆棧,因為這會破壞當前與主機通信的現有堆棧代碼,從而在升級完成之前中斷通信。
【圖3 | 第 1 步:現有堆棧從主機接收新堆棧并寫入特定于應用程序的內存]
第 2 步: 啟動器從特定應用固件部分復制新的 BLE 協議棧,并將其寫入 BLE 協議部分(參見圖 4)。到這一步結束時,BLE 協議部分就有了新的 BLE 協議棧。
【圖4 | 第 2 步:Launcher 用新堆棧覆蓋現有堆棧]
第 3 步: 目標設備使用新的 BLE 協議棧從主機設備接收新的特定應用固件,并將其寫入特定應用固件存儲器(參見圖 5)。
【圖5 | 第 3 步:新堆棧正在接收新的特定于應用程序的固件并寫入特定于應用程序的部分]
完成此步驟后,目標設備固件配置如圖 6 所示,堆棧和特定于應用程序的固件升級均已完成。
【圖6 | 升級完成后,內存具有新的 BLE 堆棧和特定于應用程序的固件]
可升級堆棧引導加載程序的一個關鍵優勢是它允許在部署產品后升級堆棧和應用程序。
基于內存的 OTA 引導加載程序分類
OTA 引導加載程序也可以根據用于存儲更新固件映像的內存進行分類:
內部存儲器 OTA 引導加載程序
使用這種類型的引導加載程序,更新的固件映像(新的 BLE 堆棧和特定于應用程序的固件或只是新的特定于應用程序的固件)被直接寫入設備的內部閃存。到目前為止,本文討論的引導加載程序架構結構都基于使用內部存儲器。這種引導加載程序的優點是不需要外部存儲器,因此降低了實現升級功能的有效成本。
外部存儲器 OTA 引導加載程序
使用外部存儲器 OTA 引導加載程序,現有堆棧可以接收新的特定于應用程序的固件或新的堆棧固件和特定于應用程序的固件。這些存儲在外部存儲器中。稍后,設備根據存儲器類型(可以是 I2C 或 SPI 或任何其他串行存儲器)使用有線接口從外部存儲器讀取新固件,然后升級內部閃存。這種實現增加了外部存儲器的總系統成本。當設備的內部內存有限并需要升級其堆棧時使用它。請注意,對于某些應用程序用例,堆棧大小可能大于特定于應用程序的固件的大小。
結論
在為物聯網應用選擇組件時,研究芯片和開發工具支持的 OTA 固件升級方法非常重要。在評估具有內部閃存的設備時,基于內部存儲器的 OTA 升級提供了一種經濟的方法。某些設備可能不允許堆棧升級,只允許特定應用程序的固件升級。一些可升級堆棧 OTA 引導加載程序實施可能只允許獨立升級堆棧和特定于應用程序的固件,以減少升級時間。在為您的應用選擇設備時,提前了解這些限制非常重要。
在無線升級設備固件時,數據是通過無線傳輸的,很容易被黑客入侵。因此,驗證并確保主機設備僅與預期的目標設備通話非常重要。通過空中發送的數據也應該加密,以便其他監聽 BLE 通信的設備無法解碼數據。BLE 4.2 改進了安全機制,增強了對中間人攻擊和被動竊聽的保護,以減少黑客對 IP 盜竊和接管設備的處理。如果使用的是舊版本的 BLE,明智的做法是手動添加加密層以保護您的 IP 免受被動竊聽者的侵害。
物聯網市場產品需求的變化速度快于傳統產品的需求。此外,廣泛采用的 BLE 通信接口標準仍在不斷發展,芯片供應商需要大量時間來支持新功能。還有更快進入市場的壓力,這可能會影響產品的測試時間和現場試驗。由于這些原因,無線固件升級可以讓開發人員隨著時間的推移增強產品功能并在產品部署后推出缺陷修復,從而為物聯網產品增加顯著價值。
審核編輯:郭婷
評論
查看更多