如何最大限度地提高物聯網項目的效率?對于閱讀最新微控制器數據表的開發人員來說,很容易假設 CPU 資源的有效使用,包括內存和時鐘周期,充其量只是當今硬件的次要問題。對于嵌入式開發人員來說,現在可能比以往任何時候都更重要的是確保他們的軟件以最高效率運行并且他們自己的時間以一種有效的方式度過。
在現代嵌入式系統上運行的軟件往往來自多種來源。應用程序開發人員編寫的代碼通常與來自 RTOS(實時操作系統)提供商的現成軟件組件相結合,而后者又可能使用最初由半導體公司提供的驅動程序代碼。可以編寫每段代碼來優化效率,但本文將重點關注現成軟件組件的效率。特別是兩個組件將作為此處介紹的資源效率檢查的基礎:實時內核和事務文件系統。
實時內核:高效系統的核心
實時內核是當今許多嵌入式系統中運行的軟件的核心。簡單來說,內核就是一個調度器;為基于內核的系統編寫應用程序代碼的開發人員將該代碼劃分為任務,而內核負責調度任務。因此,內核是main()中無限循環的替代方案,在裸機嵌入式系統中常被用作主要的調度機制。
使用實時內核有很多好處,包括提高效率。選擇基于內核的應用程序代碼的嵌入式開發人員可以優化系統中處理器資源的使用,同時更有效地利用他們的時間。然而,并不是所有的內核都是平等的,并且僅僅決定為一個新項目采用一個內核并不能保證效率的提高。
核心可能不同以及 CPU 資源可以以不同程度的效率使用的關鍵領域是調度。通過提供允許任務響應事件運行的智能調度機制,內核幫助開發人員在無限循環中實現效率提升,其中任務(或函數)以固定順序執行。基于內核的應用程序的確切效率部分取決于其調度程序的實現方式。內核的調度程序——它只是決定何時運行每個任務的一段代碼——最終會產生開銷,而這種開銷并不會抵消從裸機系統轉移所獲得的好處。
內核可以通過兩種方式分配多任務處理所需的基本資源:分配這些資源的責任可以留給應用程序代碼,或者內核本身可以處理分配。任何內核中都不可避免地存在某些變量和數據結構,因為它們對于多任務服務的實現至關重要,因此它們完全位于內核范圍內。但是對于用于記錄每個任務狀態的TCB(或任務控制塊)等數據結構,甚至對于上下文切換時存儲CPU寄存器值的棧,內核提供者可以選擇內部分配或者依賴應用程序代碼。
文件系統效率
大多數設備都需要存儲數據和記錄事件的選項,或者作為傳輸到云之前的臨時休息場所,或者更永久地保存在設備上。為此目的設計的任何代碼都是文件系統,無論是由嵌入式開發人員編寫和測試,還是作為 RTOS 解決方案的一部分提供。文件系統還可以提供提高效率的選項。這些范圍從簡單(要保留多少內存緩沖區)到復雜(是否支持完整的 POSIX 操作)。
首先,一些 RTOS 提供類似 FAT 的文件系統。這包括使用標準媒體格式(包括文件夾和文件)執行 I/O 的代碼。通常,這不是非常可定制的,并且它很少能防止電源故障期間的數據丟失。另一種選擇是 Datalight 的 Reliance Edge,它使用事務點來提供電源故障安全環境。這里令人興奮的是設計的靈活性如何提高效率。
Reliance Edge 提供存儲選項的自定義。在稱為“文件系統要素”的最小用例中,不使用文件夾甚至文件名。數據存儲在編號的 inode 中。這些位置的數量是在編譯時確定的,但大小不是預先確定的。一個“文件”可以包含比其他“文件”更多的數據,并且僅當“文件”的總大小達到閾值時媒體才滿。文件也可以自由截斷、讀取和寫入。
除了資源使用問題,多年來,效率一直是開發人員購買內核、文件系統和其他軟件模塊的首要考慮因素。這是因為用于證明采用此類模塊的理由通常是從頭開始編寫等效代碼將浪費時間。換句話說,應用程序開發人員的時間最有效地用于編寫應用程序,而不是花費數萬行基礎設施代碼。
如何最大限度地提高物聯網項目的效率?主要是通過選擇高質量的現成組件作為其項目的基礎,嵌入式開發團隊可以確保有效利用自己的資源以及嵌入式硬件的資源,并可以專注于編寫創新的應用程序代碼以提供他們的工作站站穩腳跟。更多關于物聯網培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。