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