千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 如何最大限度地提高物聯(lián)網(wǎng)項目的效率

如何最大限度地提高物聯(lián)網(wǎng)項目的效率

來源:千鋒教育
發(fā)布人:syq
時間: 2022-07-21 16:02:00 1658390520

  如何最大限度地提高物聯(lián)網(wǎng)項目的效率?對于閱讀最新微控制器數(shù)據(jù)表的開發(fā)人員來說,很容易假設 CPU 資源的有效使用,包括內(nèi)存和時鐘周期,充其量只是當今硬件的次要問題。對于嵌入式開發(fā)人員來說,現(xiàn)在可能比以往任何時候都更重要的是確保他們的軟件以最高效率運行并且他們自己的時間以一種有效的方式度過。

如何最大限度地提高物聯(lián)網(wǎng)項目的效率

  在現(xiàn)代嵌入式系統(tǒng)上運行的軟件往往來自多種來源。應用程序開發(fā)人員編寫的代碼通常與來自 RTOS(實時操作系統(tǒng))提供商的現(xiàn)成軟件組件相結合,而后者又可能使用最初由半導體公司提供的驅動程序代碼??梢跃帉懨慷未a來優(yōu)化效率,但本文將重點關注現(xiàn)成軟件組件的效率。特別是兩個組件將作為此處介紹的資源效率檢查的基礎:實時內(nèi)核和事務文件系統(tǒng)。

  實時內(nèi)核:高效系統(tǒng)的核心

  實時內(nèi)核是當今許多嵌入式系統(tǒng)中運行的軟件的核心。簡單來說,內(nèi)核就是一個調(diào)度器;為基于內(nèi)核的系統(tǒng)編寫應用程序代碼的開發(fā)人員將該代碼劃分為任務,而內(nèi)核負責調(diào)度任務。因此,內(nèi)核是main()中無限循環(huán)的替代方案,在裸機嵌入式系統(tǒng)中常被用作主要的調(diào)度機制。

  使用實時內(nèi)核有很多好處,包括提高效率。選擇基于內(nèi)核的應用程序代碼的嵌入式開發(fā)人員可以優(yōu)化系統(tǒng)中處理器資源的使用,同時更有效地利用他們的時間。然而,并不是所有的內(nèi)核都是平等的,并且僅僅決定為一個新項目采用一個內(nèi)核并不能保證效率的提高。

  核心可能不同以及 CPU 資源可以以不同程度的效率使用的關鍵領域是調(diào)度。通過提供允許任務響應事件運行的智能調(diào)度機制,內(nèi)核幫助開發(fā)人員在無限循環(huán)中實現(xiàn)效率提升,其中任務(或函數(shù))以固定順序執(zhí)行?;趦?nèi)核的應用程序的確切效率部分取決于其調(diào)度程序的實現(xiàn)方式。內(nèi)核的調(diào)度程序——它只是決定何時運行每個任務的一段代碼——最終會產(chǎn)生開銷,而這種開銷并不會抵消從裸機系統(tǒng)轉移所獲得的好處。

  內(nèi)核可以通過兩種方式分配多任務處理所需的基本資源:分配這些資源的責任可以留給應用程序代碼,或者內(nèi)核本身可以處理分配。任何內(nèi)核中都不可避免地存在某些變量和數(shù)據(jù)結構,因為它們對于多任務服務的實現(xiàn)至關重要,因此它們完全位于內(nèi)核范圍內(nèi)。但是對于用于記錄每個任務狀態(tài)的TCB(或任務控制塊)等數(shù)據(jù)結構,甚至對于上下文切換時存儲CPU寄存器值的棧,內(nèi)核提供者可以選擇內(nèi)部分配或者依賴應用程序代碼。

  文件系統(tǒng)效率

  大多數(shù)設備都需要存儲數(shù)據(jù)和記錄事件的選項,或者作為傳輸?shù)皆浦暗呐R時休息場所,或者更永久地保存在設備上。為此目的設計的任何代碼都是文件系統(tǒng),無論是由嵌入式開發(fā)人員編寫和測試,還是作為 RTOS 解決方案的一部分提供。文件系統(tǒng)還可以提供提高效率的選項。這些范圍從簡單(要保留多少內(nèi)存緩沖區(qū))到復雜(是否支持完整的 POSIX 操作)。

  首先,一些 RTOS 提供類似 FAT 的文件系統(tǒng)。這包括使用標準媒體格式(包括文件夾和文件)執(zhí)行 I/O 的代碼。通常,這不是非??啥ㄖ频模⑶宜苌倌芊乐闺娫垂收掀陂g的數(shù)據(jù)丟失。另一種選擇是 Datalight 的 Reliance Edge,它使用事務點來提供電源故障安全環(huán)境。這里令人興奮的是設計的靈活性如何提高效率。

  Reliance Edge 提供存儲選項的自定義。在稱為“文件系統(tǒng)要素”的最小用例中,不使用文件夾甚至文件名。數(shù)據(jù)存儲在編號的 inode 中。這些位置的數(shù)量是在編譯時確定的,但大小不是預先確定的。一個“文件”可以包含比其他“文件”更多的數(shù)據(jù),并且僅當“文件”的總大小達到閾值時媒體才滿。文件也可以自由截斷、讀取和寫入。

  除了資源使用問題,多年來,效率一直是開發(fā)人員購買內(nèi)核、文件系統(tǒng)和其他軟件模塊的首要考慮因素。這是因為用于證明采用此類模塊的理由通常是從頭開始編寫等效代碼將浪費時間。換句話說,應用程序開發(fā)人員的時間最有效地用于編寫應用程序,而不是花費數(shù)萬行基礎設施代碼。

  如何最大限度地提高物聯(lián)網(wǎng)項目的效率?主要是通過選擇高質量的現(xiàn)成組件作為其項目的基礎,嵌入式開發(fā)團隊可以確保有效利用自己的資源以及嵌入式硬件的資源,并可以專注于編寫創(chuàng)新的應用程序代碼以提供他們的工作站站穩(wěn)腳跟。更多關于物聯(lián)網(wǎng)培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
10年以上業(yè)內(nèi)強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
什么是PlatformIo?

PlatformIO是什么PlatformIO是一個全面的物聯(lián)網(wǎng)開發(fā)平臺,它為眾多硬件平臺和開發(fā)環(huán)境提供了統(tǒng)一的工作流程,有效簡化了開發(fā)過程,并能兼容各種...詳情>>

2023-10-14 12:55:06
云快照與自動備份有什么區(qū)別?

1、定義和目標不同云快照的主要目標是提供一種快速恢復數(shù)據(jù)的方法,它只記錄在快照時間點后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動備份的主要目標...詳情>>

2023-10-14 12:48:59
服務器為什么要用Linux?

服務器為什么要用Linux作為服務器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務器操作系統(tǒng)的優(yōu)選,有其獨特的優(yōu)勢和特點。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對象關系映射)解決的主要問題是將關系數(shù)據(jù)庫與面向對象編程之間的映射困境。在傳統(tǒng)的關系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲,而在面向對象...詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運算符?

Go為什么不支持三元運算符Go語言是一種以簡潔和有效性為目標的編程語言,因此在設計過程中,Go的設計者刻意排除了一些他們認為可能導致復雜性或...詳情>>

2023-10-14 12:12:36