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