開發(fā)嵌入式軟件并不像以前那么簡單,對于許多開發(fā)團隊來說,創(chuàng)建一個獨立的設備仍然經常是具有挑戰(zhàn)性的,在物聯(lián)網時代,我們開始連接一切——包括牙刷——系統(tǒng)的復雜性正在飆升,傳統(tǒng)的、脫節(jié)的嵌入式開發(fā)人員發(fā)現(xiàn),要想取得成功,需要解決多個新挑戰(zhàn):
挑戰(zhàn) #1 – 連接性
這聽起來很簡單,但是有很多不同的方式可以連接到互聯(lián)網。開發(fā)人員可以通過 WiFi、以太網、蜂窩、LoRa、藍牙和許多其他來源進行連接。每個都有自己的優(yōu)點和缺點,以及開發(fā)人員需要學習和理解以使硬件正常工作的不同軟件堆棧。這甚至不包括關于使用哪些協(xié)議(例如 UDP、COAP、TCP/IP 等)或是否同時使用多個協(xié)議的其他軟件注意事項。然后是學習和使用 TLS 和/或 MQTT 的挑戰(zhàn),并理解當你投入服務器時它們是如何工作的。當然,開發(fā)人員可以使用預先存在的軟件堆棧來幫助減少挑戰(zhàn),但他們仍然需要了解正在發(fā)生的事情,以防萬一出現(xiàn)問題或需要修改。
挑戰(zhàn) #2 – 無線更新
現(xiàn)在設備終于連接到互聯(lián)網了,我們可以遠程更新它的固件,這聽起來是個好主意。使用獨立設備時,開發(fā)人員過去只需將新固件映像發(fā)布到安全站點,然后通過電子郵件向所有客戶發(fā)送“過來拿!”借助物聯(lián)網,軟件更新有望奇跡般地出現(xiàn)并自行執(zhí)行。即使在涉及數(shù)千臺設備的小型部署中,嵌入式開發(fā)人員也需要弄清楚如何:
生成固件更新作業(yè)
保護他們的更新
驗證它們來自受信任的來源
如果有問題回滾更新
確定何時適合更新設備
這是開發(fā)人員現(xiàn)在需要了解的所有耗時、棘手的業(yè)務,才能成功部署他們的產品。
挑戰(zhàn)#3——安全
開發(fā)人員不僅需要了解設備如何連接,還需要了解如何保護他們的設備免受不斷發(fā)展和變得更加復雜的安全威脅。安全性不是在設計周期結束時就可以添加到系統(tǒng)中的東西。而且這不是一夜之間就能學會的東西。需要仔細考慮系統(tǒng)是如何分區(qū)、隔離的,以及需要保護哪些信息。嵌入式開發(fā)人員需要清楚地確定他們的系統(tǒng)需要有多安全。
挑戰(zhàn)#4——調試
隨著越來越多的團隊構建連接設備,復雜性也在增加。調試所花費的時間也很可能會增加。隨著開源軟件和其他軟件包的集成,系統(tǒng)肯定會產生奇怪和新的行為,除非它們都被設計為首先可以協(xié)同工作。嵌入式調查顯示,開發(fā)人員平均已經花費了 40% 的時間進行調試,每個嵌入式項目的調試都需要花費大量時間和金錢。出于這個原因,開發(fā)人員了解他們可用的所有調試技術以及如何首先防止它們是很重要的。
挑戰(zhàn) #5 – 變化率
每年都會推出更強大的處理器,但改進是漸進式的。在過去五年多的時間里,可用技術和他們需要做的事情有了很大的飛躍。它始于連接性,但它正在迅速擴展到不僅是安全性,還包括人工智能和系統(tǒng)。開發(fā)人員開始發(fā)現(xiàn)可用技術的變化速度超過了他們學習的速度。
這些是開發(fā)團隊開始從設計獨立設備過渡到連接設備時遇到的主要挑戰(zhàn),這些挑戰(zhàn)當然不是不可克服的,在許多情況下,解決方案已經以多種形式存在,訣竅在于嵌入式開發(fā)人員和團隊如何加快速度,然后保持每個開發(fā)人員都需要的這些新技能。