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