<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式釋放RTOS內存性能的使用技巧

電子工程師 ? 來源:嵌入式學習站 ? 作者:嵌入式學習站 ? 2022-09-27 11:50 ? 次閱讀

經常從嵌入式開發人員那里聽到兩種拒絕使用RTOS的借口:

“RTOS內存占用太大”

“RTOS開銷太大”

這些借口在以前可能有一些價值,但今天它們沒有任何分量。典型的RTOS對CPU的負載不到4%,需要不到16 KB的閃存空間和不到4 KB的RAM。在大多數情況下,性能和內存問題與開發人員如何使用RTOS以及他們在如何正確使用和配置RTOS方面的知識差距有關。下面是開發人員可以遵循的七個技巧,以優化他們的RTOS應用程序內存使用。

技巧1:對每項任務進行最壞情況堆棧分析

最大的內存浪費之一是為任務堆棧分配的內存。默認情況下,大多數 RTOS 將分配一千字節來保存任務堆棧,其中包含諸如局部變量、數據結構和函數調用返回地址等內容。默認大小的問題在于,不熟悉使用 RTOS 的開發人員通常不會檢查每個任務并正確調整堆棧的大小。一個只閃爍幾個 LED 并且什么都不做的任務通常會有 1 千字節的堆棧,即使 64 字節就足夠了。未能檢查每個任務并正確調整堆棧大小可能會導致使用的 RAM 遠遠超過應用程序實際所需的 RAM。

技巧2:避免過度使用堆棧

由于每個任務都有一個堆棧,因此任務堆棧成為運行應用程序所需的 RAM 的巨大貢獻者。當嵌入式開發人員設計和實現他們的任務時,他們應該盡量減少堆棧的使用。這可以通過以下方式完成:

? 避免遞歸函數

? 最大限度減少函數調用

? 避免大型本地數據結構

開發人員不僅需要編寫代碼,還需要仔細考慮每個變量、數據結構和函數調用對內存和性能的影響。避免過度使用堆棧使用將允許開發人員縮小堆棧大小并節省 RAM 使用。

技巧3:使用內存塊池

開發人員在開發基于 RTOS 的應用程序時經常會遇到的一個大問題是他們需要動態分配內存。動態內存分配的問題在于,內存通常是從一個行為類似于字節池的堆中分配的。堆和字節池有許多缺點,例如:

? 它們會破碎

? 內存分配是不確定的

另一方面,塊池來自固定塊,不僅可以確定地分配,而且不會碎片。對于需要動態分配內存的開發人員來說,塊池是比堆或字節池更好的選擇。

技巧4:最小化 RTOS 對象

RTOS 可以幫助嵌入式開發人員將他們的應用程序分解為可重用的半獨立程序,這些程序使用信號量、互斥體和消息隊列等 RTOS 對象來通信和同步任務執行。每個RTOS對象都有一個使用少量內存的控制塊。在資源非常有限的應用程序中,或者如果開發人員過度使用這些資源,則可以使用比實際需要更多的內存。出于這個原因,開發人員應該仔細設計他們的 RTOS 應用程序,盡量減少RTOS對象的使用。

技巧5:考慮使用事件標志而不是信號量

RTOS 的功能可能因一個 RTOS 而異,但在作者使用的幾種不同的 RTOS 中,使用事件標志而不是信號量可能會導致占用空間略小。信號量不僅包含一個控制塊,還包含一些基本代碼來執行信號量操作,比如發送和接收信號量。通常,此代碼往往比事件標志更慢并且使用更多內存。事件標志實際上只不過是一個內存位置,其中內存位置中的每一位都代表一個事件,例如按下按鈕或剛剛對溫度傳感器進行采樣。

技巧6:最小化任務優先級

實時操作系統允許嵌入式開發人員設置任務可以設置的優先級。例如,許多系統的默認值是 0 到 31。在某些情況下,默認值的范圍可以從 0 到 128 甚至 0 到 1024。一般來說,一般來說,任務優先級越低,性能越好,內存使用越少。開發人員應盡量將優先級設置保持在 0 到 31 之間,除非有充分的理由進行其他設置。

技巧7:優化 RTOS 配置文件

RTOS 通常有一個配置文件,允許開發人員微調 RTOS 行為。配置文件允許開發人員設置功能,例如默認堆棧大小、可用的優先級數量以及構建中將包含哪些同步對象。在許多情況下,修改配置文件可以為開發人員提供更小的 RTOS 占用空間,甚至根據可用的配置選項提高性能。確保檢查 RTOS 配置文件并了解每個可用選項。

如果使用不當,RTOS 會導致應用程序所需的內存占用膨脹到無法使用的水平。在許多情況下,高內存使用是由于開發人員使用 RTOS 的方式造成的,而不是 RTOS 本身的指示。在這篇文章中,我們研究了嵌入式開發人員可以遵循的幾個技巧,以幫助最小化他們自己的 RTOS 應用程序占用空間。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5002

    文章

    18414

    瀏覽量

    291547
  • 內存
    +關注

    關注

    8

    文章

    2790

    瀏覽量

    72964
  • RTOS
    +關注

    關注

    20

    文章

    780

    瀏覽量

    118889

原文標題:嵌入式:管理 RTOS 內存性能和使用的7個技巧

文章出處:【微信號:嵌入式學習站,微信公眾號:嵌入式學習站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式RTOS的 任務棧 和 系統棧

    簡介明了帶你了解嵌入式RTOS的 任務棧 和 系統棧
    的頭像 發表于 05-16 09:57 ?2246次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>RTOS</b>的 任務棧 和 系統棧

    RTOS嵌入式系統的軟件開發平臺

    RTOS嵌入式系統的軟件開發平臺RTOS最關鍵的部分是實時多任務內核,它的基本功能包括任務管理、定時器管理、存儲器管理、資源管理、事件管理、系統管理、消息管理、隊列管理、旗語管理等, 這些管理功能
    發表于 08-12 14:32

    嵌入式系統內存管理

    本帖最后由 VVX 于 2016-9-18 13:15 編輯 1、概述操作系統的內存管理功能用于向操作系統提供一致的地址映射功能和內存頁面的申請、釋放操作。在嵌入式實時系統中,
    發表于 09-17 19:40

    RTOS和Linux中的內存映射及移植方法

    映射到相應得用戶空間去。同樣重要的是,在I/O調用密集的嵌入式程序中怎么樣把RTOS的硬件接口代碼移植到更加規范的Linux設備驅動程序中去。 本文把概述幾種常用的經常出現于現有嵌入式應用中的
    發表于 07-03 07:43

    什么是嵌入式操作系統內存管理技術?

    內存。智能手機操作系統作為嵌入式操作系統的一種,較之普通桌面型操作系統,其內存管理有著獨特之處:受硬件成本、設備體積等因素制約,內存容量一般相當有限,需要高效地使用;電源管理尤為重要
    發表于 07-30 07:19

    RTOS移植到嵌入式Linux要注意什么?

    在過去的10年中,Linux成功地取代了一些最主要的傳統RTOS平臺,成為了各種各樣的嵌入式設備和應用中首選的新的嵌入式操作系統。盡管一度曾被認為是不重要的平臺,但今天嵌入式Linux
    發表于 10-16 06:15

    嵌入式設備瀏覽器內存管理有什么方法?

    嵌入式系統中,由于設備性能限制系統總的可分配內存相對較小,而在嵌入式平臺上瀏覽器正常運行所需內存一般都比較大,并且
    發表于 03-12 08:26

    嵌入式實時操作系統(RTOS

    前言自20世紀90年代,鑒于多任務支持、開發便捷、便于維護等特性,同時能夠提高系統的穩定性和可靠性,嵌入式實時操作系統(RTOS)逐漸為廣大嵌入式從業人員所接受和認可,越來越多的工程師加入
    發表于 08-05 06:14

    ThreadX-RTOS嵌入式開發

    的。ThreadX還包含了NETX、GUIX、FILEX、USBX等豐富的組件,幾乎包含了嵌入式開發中的所有場景,這些組件和ThreadX-RTOS能夠完美的配合完成一條龍的開發。ThreadX的github地址:[Azure RTOS
    發表于 08-24 06:04

    嵌入式系統內存優化使用

    嵌入式系統功能的提高,占用了較大內存空間,繼而時常出現運行無響應?;谟脩舴矫婵?,由于系統內存問題影響運行,針對系統內存與進程應用狀態研究,可以調整系統數值與執行文件elf分析,進行系
    發表于 11-04 06:23

    嵌入式Linux或RTOS簡析

    嵌入式Linux或RTOS:用于物聯網2021-05-10嵌入式Linux或RTOS:用于物聯網嵌入式Linux將Linux內核用于
    發表于 11-04 07:06

    嵌入式Linux和RTOS哪一個更適合物聯網呢

    嵌入式Linux或RTOS:用于物聯網2021-05-10嵌入式Linux或RTOS:用于物聯網嵌入式Linux將Linux內核用于
    發表于 11-04 06:53

    嵌入式系統基本模型與RTOS設計原則

    1. 嵌入式系統基本模型2. RTOS設計原則 采用各種算法和策略,始終保持系統行為的可預測性。即在任何情況下,在系統運行的任何時刻,OS的資源配置策略都能為爭奪資源(包括CPU、內存、網絡帶寬等
    發表于 12-16 07:57

    基于嵌入式裸機或RTOS系統下內存管理方法的探究

    嵌入式內存管理探究-基于FreeRTOS文章封面本文基于嵌入式裸機或RTOS系統下內存管理方法的探究,灰色方塊為正在使用的
    發表于 12-17 07:40

    嵌入式RTOS內存管理機制的實現方案和進行改善設計

    。內存資源作為嵌入式系統中極為重要的資源之一,其管理機制歷來是嵌入式系統設計的重點和難點。內存管理機制的優劣程度極大地影響著嵌入式系統的整體
    的頭像 發表于 08-12 09:03 ?2244次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>RTOS</b>的<b class='flag-5'>內存</b>管理機制的實現方案和進行改善設計
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>