1. gzyueqian
      13352868059

      嵌入式開發:管理 RTOS 內存性能和使用的7個技巧

      更新時間: 2022-06-20 09:34:04來源: 粵嵌教育瀏覽量:8374

        我經常從嵌入式開發人員那里聽到兩種拒絕使用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 應用程序占用空間。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲日韩欧美在线一区二区 | 日韩在线猛人视频 | 亚洲欧美一区在线 | 亚洲色国产电影在线观看 | 性刺激的欧美三级中文字幕 | 亚卅日韩久久影视观看 |