OTA固件升級對于物聯(lián)網設備的重要性
物聯(lián)網(IoT)代表著一個重要的發(fā)展趨勢,逐漸將日常生活中的各個方面相互連接在一起。不同于早期的路由器等無線設備(每個房間或者辦公室安裝一個)在數量上的局限性,物聯(lián)網將會非常深入的滲透到方方面面,并且可以連接大量的設備。簡單舉幾個例子,譬如在一個家庭環(huán)境中,我們可以遠程鎖門、開關窗簾、控制照明以及管理溫度和濕度等等。
本文引用地址:http://www.ex-cimer.com/article/201703/345668.htm物聯(lián)網規(guī)模化部署面臨著眾多挑戰(zhàn),例如:眾多設備近距共終端和龐大數量的設備互連。這些挑戰(zhàn)催生出對無線(OTA)固件升級的需求,它將是物聯(lián)網系統(tǒng)必不可缺的一個組成部分。OTA的有效性已在許多應用程序中得到驗證,例如手機會通過定期升級來接收新功能和修補漏洞。
基于BLE的OTA固件升級功能相對而言是一個新生事物,試想,將一個beacon部署在一個大型市場中以推送在展的產品信息。這些beacon的位置有可能難以觸及,而且它們的龐大數量也讓用戶不可能在部署后對它們進行逐個編程。因此,當有新功能或需要修補的漏洞出現時,OTA固件升級就會成為一個重要的省時性能。
對于物聯(lián)網而言,有三大原因正在推升市場對基于BLE的OTA固件升級的需求:
- 廣泛和種類各異的設備:設備的數量和種類在分布式網絡中扮演重要角色,如體育場智能照明應用。一個標準OTA接口可確保其固件升級架構通用于不同的節(jié)點。因此,雖然一個大型泛光燈和一個走廊燈在功能上不同,但一個基于BLE的標準OTA接口可以在它們之間通用。這意味著,向這些種類各異的設備推送新固件的主機設備可以是一個通用平臺。同時這還意味著,可以在一個控制室中升級體育場中所有不同類型的照明燈,而不是對它們進行逐個升級。
- 不斷變化的需求和新功能:物聯(lián)網是一個迅速變化和發(fā)展的市場,新的產品需求和BLE功能不斷涌現。例如,安全威脅和隱私泄露是物聯(lián)網設備管理領域面臨的最大挑戰(zhàn)之一。為了防范病毒攻擊,設備固件可通過OTA固件升級流程獲得最新補丁和更多安全算法。任何物聯(lián)網系統(tǒng)都由兩個部分組成:硬件和固件。在基于SoC的應用中,OTA固件升級功能不僅能夠更新固件,而且還能重新配置片上硬件資源。
- 緊迫的產品上市需求:物聯(lián)網系統(tǒng)的設計周期很短,而市場需要持續(xù)創(chuàng)新和部署最新功能。一個總的發(fā)展進程是:對硬件進行過度設計,以便在一個較長的時期內滿足不斷升高的市場需求。OTA固件升級可實現漸進式部署。例如,一個恒溫器系統(tǒng)最初可以只部署一個熱傳感器實現快速部署,之后再部署濕度傳感器。請注意,這種方法使得硬件設計成為一個深思熟慮的過程,在架構階段從硬件角度考慮了未來的部署。
物聯(lián)網領域具有多樣性,應用和最終解決方案需求也是如此。某些產品看重成本,而另一些則與眾不同,旨在定義新的細分市場。為了保持靈活性,OTA bootloader(引導加載程序)架構應能適應不同的需求。下面我們探討這種靈活性的驅動因素和架構選項。
雖然OTA固件升級是物聯(lián)網應用的福音,但產品團隊也必須留意和避免一些陷阱?,F場升級固件的能力外加緊迫的上市需求有可能給團隊帶來壓力,迫使其太快發(fā)布固件。例如,大規(guī)模部署產品的競賽可能讓營銷人員依賴以下事實:今后可以更新固件。這有可能導致企業(yè)發(fā)布不穩(wěn)定、未經過全面驗證或優(yōu)化的軟件或產品。產品團隊應仔細權衡這些決策的影響,通過運用約束條件達到不過度使用OTA的目的。此外,頻繁更新也可能不受最終用戶的歡迎。
OTA的基本原理
讓我們了解一下OTA固件升級的原理。就基本原理而言,OTA與UART 引導加載程序或USB 引導加載程序等其它引導加載程序沒有什么差異。圖1顯示了一個可升級、基于固件的系統(tǒng)的基本架構。
圖1: UART 引導加載程序系統(tǒng)
如圖所示,目標設備的非易失性存儲器分為兩個區(qū):– 引導加載區(qū)和應用程序區(qū)。存儲器的引導加載區(qū)存儲代碼,負責:1) 設備的引導操作;2) 檢查主機是否有一個供可引導加載區(qū)使用的更新后的固件映像;3) 通過一個UART接口接收更新后的固件映像;4) 將更新后的固件映像寫入存儲器的可引導加載區(qū)。存儲器的應用程序區(qū)是負責定義系統(tǒng)功能的實際應用代碼。
與此類似,為了理解OTA固件升級,可將存儲器分為引導加載區(qū)和應用程序區(qū)。與UART 引導加載程序相比,此處最大的不同是用于從主機接收新固件的接口。OTA固件升級使用一個無線通信接口接收更新后的固件映像。取決于具體應用,逐個接口可能是WiFi、ZigBee、藍牙或任何其它無線接口。無論何種接口,其過程和基本原理都是相同的。
目前,藍牙低功耗(BLE)標準無所不在,因為它功耗較低,而且獲得了大多數PC和手機的支持,這種普及程度使其成為物聯(lián)網應用的首選。說到這里,BLE是一個不斷演進的標準,幾乎每年都有一個新版本發(fā)布,其中包含更多新特性,以滿足物聯(lián)網應用不斷變化的需求。市場中的各大芯片廠商正在展開一場競賽,推出遵從新版標準的解決方案。大多數情況下,芯片廠商在幾個BLE協(xié)議棧、IDE版本中支持這些特性。此外,標準的快速變化給版本之間留下的測試時間也很短。因此,芯片廠商發(fā)布的每一個新的BLE協(xié)議棧版本通常都會被客戶反饋存在缺陷,或由內部團隊在測試期間發(fā)現缺陷。因此,當使用BLE升級物聯(lián)網設備時,不僅應用代碼需要升級,核心BLE協(xié)議棧可能也需要升級。一個合理、可靠的引導加載程序架構應能支持這些不同的應用,而且應足夠靈活,能夠滿足不斷變化的應用需求。
對于基于BLE的設備而言,有兩種OTA bootloader架構:
固定協(xié)議棧OTA bootloader
可升級協(xié)議棧OTA bootloader
固定協(xié)議棧OTA bootloader – 在一個固定協(xié)議棧OTA bootloader系統(tǒng)中,協(xié)議棧不升級,只能升級應用固件。協(xié)議棧存儲在存儲器的寫保護/引導加載程序區(qū)。圖2顯示了一個典型的固定協(xié)議棧OTA bootloader系統(tǒng)。
圖2:基于BLE的固定協(xié)議棧OTA bootloader
固定協(xié)議棧OTA bootloader的優(yōu)點是:升級固件的時間較短,因為只能升級應用代碼;其缺點是:即使部署后發(fā)現重大問題也無法升級協(xié)議棧代碼。
可升級協(xié)議棧OTA bootloader – 在可升級協(xié)議棧bootloader系統(tǒng)中,協(xié)議棧和應用固件都能升級。雖然不同廠商實現bootloader的方式不同,但在一個典型的可升級協(xié)議棧系統(tǒng)中,存儲器分為三個區(qū):–
Launcher(啟動器)區(qū) – 基本上而言,launcher是一個無通信接口的引導加載程序。它負責檢查是否需要引導加載,然后相應地將控制權交給協(xié)議棧區(qū)或應用區(qū)。如果有一個新協(xié)議棧映像,它還負責升級協(xié)議棧的存儲區(qū)。
協(xié)議棧區(qū) – 該區(qū)存儲BLE協(xié)議棧。當主機設備有一個新映像時,協(xié)議棧區(qū)負責與主機設備通信。此外,該區(qū)與應用共享,用于建立BLE連接,該區(qū)即扮演引導加載程序區(qū)的角色,也扮演可應用程序區(qū)的角色。該區(qū)由launcher將新協(xié)議棧固件寫入該區(qū)。然后,該區(qū)引導加載應用區(qū)。
應用區(qū) – 與上述其它實現相同,該區(qū)是實際應用代碼。
可升級協(xié)議棧OTA bootloader的運行分為三步:
第1步:圖3顯示了目標設備(即需要得到OTA升級的設備)和主機設備(即有新固件并負責將其發(fā)送給目標設備的設備)。目標設備使用其現有的BLE協(xié)議棧接收新的BLE協(xié)議棧。這個新的BLE協(xié)議棧存儲在存儲器的應用固件區(qū)。應用固件區(qū)被新的BLE協(xié)議棧覆蓋,因為物聯(lián)網設備的內存通常有限。增大內存會增加設備成本,而且出于引導加載原因而增大存儲器也不合理。請注意,現有BLE協(xié)議棧不能被直接覆蓋,因為這將破壞正與主機通信的現有協(xié)議棧代碼,從而在升級結束前中斷通信。
圖3:第1步:現有協(xié)議棧從主機設備接收新協(xié)議棧,并將其寫入應用存儲器
第2步: launcher復制應用固件區(qū)的BLE協(xié)議棧,并將其寫入現有BLE協(xié)議區(qū)(見圖4)。此步結束時,BLE協(xié)議區(qū)將有新的BLE協(xié)議棧。
圖4:第2步: Launcher使用新協(xié)議棧覆蓋現有協(xié)議棧
第3步:目標設備使用新的BLE協(xié)議棧從主機設備接收新的應用固件,然后將其寫入應用固件存儲區(qū)(見圖5)。
圖5:第3步:新協(xié)議棧接收新應用固件,然后將其寫入應用區(qū)
此步之后,目標設備固件的配置如圖6所示,協(xié)議棧和應用固件升級全部結束。
圖6:升級結束后,存儲器有了新的BLE 協(xié)議棧和應用固件
可升級協(xié)議棧bootloader的一大優(yōu)勢是:部署產品后,允許升級協(xié)議棧和應用。
還可以根據OTA Bootloader用于存儲更新的固件映像的存儲器對它們進行分類:
1. 內部存儲器OTA bootloader
2. 外部存儲器OTA bootloader
內部存儲器OTA bootloader – 對于這種類型的引導加載程序,更新后的固件映像 – 新的BLE協(xié)議棧及應用固件或新的應用固件 – 被直接寫入設備的內部閃存。本文至此所描述的引導加載程序架構都基于內部存儲器。此類引導加載程序的優(yōu)勢是:無需外部存儲器,因此降低了升級功能的實現成本。
外部存儲器OTA bootloader – 對于外部存儲器OTA bootloader,現有協(xié)議棧接收新的應用固件或新的協(xié)議棧固件及應用固件。它們被存儲在外部存儲器中。在以后的某個時刻,根據存儲器類型(I2C、SPI或其它串口存儲器),設備使用一個有線接口從外部存儲器讀取新固件,然后升級內部閃存。這種方式增加了外部存儲器的總成本,用于設備內部存儲器有限但卻需要升級其協(xié)議棧的情況。請注意,在某些應用中協(xié)議棧大于應用固件。
為某個物聯(lián)網應用選擇組件時,必需了解芯片廠商和開發(fā)工具所支持的OTA固件升級方法。評估一個配備內部存儲器的設備時,基于內部存儲器的OTA升級是一種經濟高效的方法。某些設備可能不允許升級協(xié)議棧,只允許升級應用固件。某些可升級協(xié)議棧OTA bootloader架構可能只允許單獨升級協(xié)議?;驊霉碳?,從而縮短升級時間。在為您的應用選擇設備時,最好提前了解這些局限性。
對設備固件進行OTA升級時,通過在空中傳輸,容易遭受攻擊。因此,必需確保主機設備只與相關目標設備通信。此外,應對空中傳輸的數據進行加密,以便讓其它監(jiān)聽BLE通信的設備無法解碼這些數據。BLE 4.2改進了安全機制,能夠更好地防范中間人攻擊和被動監(jiān)聽攻擊,降低IP被盜或設備被黑客劫持的風險。如果使用的是一個舊版BLE,明智的做法是手動增加一個加密層,以保護您的IP免遭被動監(jiān)聽。
總而言之,物聯(lián)網市場中的產品需求比傳統(tǒng)產品變化更快。此外,已得到廣泛普及的BLE通信標準仍在不斷演進,芯片廠商需要較長時間來支持新特性。將產品更快推向市場的壓力也可能影響測試時間或產品的現場試驗。鑒于這些原因,在部署產品后,OTA固件升級可讓開發(fā)人員隨著時間的推移增強產品功能,并修補產品缺陷。最后,選擇可滿足您的應用需求、保護您的IP的OTA固件升級方法也非常重要。
評論