一場悄無聲息的革命已經發生在電子硬件設計領域。隨著硅集成的持續(由摩爾定律經濟學推動),工程師們逐漸從主要在組件和電路級別進行開發轉向更多地使用電路板、模塊和子系統。
其好處是電子設計效率的顯著提高。這種轉變現在正在軟件中復制,開發人員希望更多地使用可重用的模塊,而不是主要依賴于他們自己編寫的代碼行。
向模塊化設計的轉變有許多優點。一個是更大的能力來分享規模經濟,這些規模經濟來自使用吸引許多客戶的平臺。工業用戶在模塊化硬件方面有著悠久的歷史。Versa 模塊歐洲卡 (VME) 和 CompactPCI 標準為在小批量市場工作的集成商和原始設備制造商 (OEM) 提供了使用高性能計算的能力。他們可以對計算機的功能進行更廣泛的定制,而無需在高端印刷電路板(PCB)設計上投入時間和精力。從那時起,摩爾定律在功能方面取得了令人難以置信的收益,同時也降低了單個零件的成本。樹莓派單板計算機就是一個關鍵的例子。
經濟高效的現成硬件
通過利用智能手機片上系統(SoC)平臺帶來的規模經濟,Raspberry Pi背后的聯盟已經能夠提供比最初為教育用途而創建的設計更有效的產品。硅供應商產生的非經常性工程(NRE)成本很容易被主要目標市場吸收,為Raspberry Pi的目標用戶提供更大的價值。這種成本優勢被傳遞到工業部門。集成商和 OEM 利用樹莓派平臺的模塊化,使用 HAT 擴展總線添加自己的自定義接口模塊。
Pi 模塊的使用使工程團隊不必采購類似的組件并將其設計到自定義 PCB 上。與創建前端 HAT 模塊相比,這些通常需要更耗時的信號完整性和功能檢查。通常,這些定制模塊可以使用相對簡單的兩層或四層PCB。
現成軟件模塊的出現
模塊化軟件的類似趨勢也出現了。工程師現在可以專注于應用程序的元素,他們可以增加價值。這一趨勢不僅受到規模經濟和一些供應商有效攤銷NRE的能力的推動,還受到網絡集成和服務驅動型商業模式的更大趨勢的推動。嵌入式系統今天通常不完整,除非它構成更大的系統系統(如物聯網(IoT))的一部分。在此環境中,設備可用于幫助提供一項或多項服務,其中許多服務將在用于支持它們的硬件的生命周期內進行更改。物聯網和云的這種結合正在產生利用這些功能的新業務模式,例如軟件即服務(SaaS)和按使用付費。靈活性已成為這種商業環境中的一個關鍵標準:推動實施者尋求更多的模塊化結構。
模塊化從操作系統開始。操作系統支持對構建靈活的模塊化環境至關重要的抽象。通常,操作系統提供一組服務,從簡單的輸入/輸出到完整的網絡堆棧,所有這些都通過一組記錄在案的應用程序編程接口 (API) 進行訪問。只要服務繼續支持 API,提供它們的代碼就可以更改,而不會影響使用這些 API 的應用程序。對于許多微控制器開發工具附帶的簡單實時調度程序FreeRTOS[1],以及用于商業和更復雜的RTOS實現,例如風河的VxWorks[2],都是如此。VxWorks 為嵌入式操作系統設定了行業標準,為一些最關鍵的基礎設施和設備提供支持。
Linux和其他操作系統可以通過使任務彼此隔離來使內存管理更進一步。簡單RTOS結構的一個可能問題是它們在完全未分區的內存空間中運行。一個任務中的 Bug 或惡意行為可能導致數據和代碼在另一個任務中被意外覆蓋,從而導致系統崩潰或其他意外結果。Linux 使用虛擬尋址(由硬件內存管理單元調解)來防止任務訪問彼此的內存空間。它們只能通過基于這些 API 構建的操作系統 API 或應用程序間協議進行交互。
虛擬內存尋址不是任務隔離的絕對要求。一些微控制器架構,包括Arm Cortex-M和Cortex-R系列的幾個成員,可以在平坦的內存空間中實施內存保護。Arm 還在其許多處理器中提供了 Trustzone 安全軟件模式,從而可以將敏感軟件與用戶級任務隔離開來。通過這種保護,可以更輕松地將自定義代碼與為應對常見任務而開發的越來越多的現成軟件模塊相結合。
開源和專有功能的集成
如今,工程師可以通過Github,Sourceforge[3]和其他服務訪問一系列免費的開源軟件模塊和協議棧。我們還提供商業堆棧,為安全關鍵型應用[4]提供更大的支持,附加功能或認證。硅制造商提供的參考設計通常會結合一系列開源和專有功能,使客戶更容易構建原型到完整的產品實現。在某些情況下,參考設計實現了一個完整的應用程序,最終用戶可以根據自己的需求進行調整。
一些系統設計人員正在利用軟件日益增長的模塊化來構建開發環境,以調整參數并自動生成代碼。這些工具通常使用開發人員在圖形用戶界面上組裝的軟件的基于塊的表示形式。一個例子是微芯片的MPLAB代碼配置器,用于PIC8、PIC16和PIC32微控制器系列。
機器學習和圖像處理等高級應用程序是用戶可以從專家的高額NRE投資中受益的領域,并避免了如果用戶必須從頭開始構建此類軟件所需的多年開發時間。Caffe、PyTorch 和谷歌的 Tensorflow 使得構建、訓練和調整可輕松集成到嵌入式處理管道中的復雜人工智能 (AI) 模型成為可能。對于圖像處理,OpenCV是一個廣泛使用的庫,可以很容易地集成到實時應用程序中。隨著機器學習的興起,當今越來越普遍的使用模型是OpenCV在將圖像數據傳遞到使用Caffe或Tensorflow構建的AI模型之前預先處理圖像數據,自定義代碼主要用于提供對模型檢測到的事件的實時響應。
將所有內容整合在一起
開發人員現在可以訪問面向云的軟件模塊和工具,這些模塊和工具可輕松與常見網絡堆棧和RTOS實現集成。這使得不同復雜程度的嵌入式系統能夠集成到物聯網中。例如,安富利的物聯網連接?平臺[5]為人工智能等復雜任務提供基于云的處理。由于系統由云和嵌入式設備軟件服務定義,亞馬遜網絡服務和微軟Azure等云提供商現在提供了一系列將兩者結合在一起的產品:所有這些都利用了他們使用的軟件組件的模塊化。
模塊化正在改變嵌入式軟件工程師所需的技能。責任的平衡正在從代碼開發轉向基于預先存在的模塊構建靈活架構的能力,這些模塊允許在部署新服務時輕松進行自定義編碼和運行時配置。通過利用這種模塊化,OEM和系統集成商可以輕松跟上客戶需求的步伐,而傳統方式根本無法想象。
審核編輯:郭婷
-
soc
+關注
關注
38文章
4163瀏覽量
218173 -
Linux
+關注
關注
87文章
11296瀏覽量
209358 -
操作系統
+關注
關注
37文章
6808瀏覽量
123291
發布評論請先 登錄
相關推薦
評論