0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

從裸機調(diào)度過渡到RTOS的7個小技巧

lilihe92 ? 來源:最后一個bug ? 作者:最后一個bug ? 2022-11-29 11:09 ? 次閱讀

正文

實時操作系統(tǒng)已經(jīng)成為許多嵌入式系統(tǒng)中的關(guān)鍵組件,從裸機調(diào)度過渡到RTOS可能是一件棘手的事情。這里有七個小技巧可以幫助嵌入式開發(fā)人員更輕松地完成過渡。

1

首先規(guī)劃你的架構(gòu)

如果你從未使用過UML或者對軟件架構(gòu)不感興趣,現(xiàn)在是時候?qū)W習一下了。 使用RTOS時,開發(fā)人員仔細考慮每項任務(wù)、同步和通信機制是至關(guān)重要的。這些細節(jié)不能僅僅存儲在工程師的頭腦中,而是需要以圖表的形式記錄下來,以便在需要時可以查看和更新。開發(fā)一個基于RTOS的應(yīng)用程序會很快變得復(fù)雜,考慮清楚應(yīng)用程序的行為是很重要的。

2

仔細跟蹤內(nèi)存的使用情況

與開發(fā)裸機應(yīng)用程序不同,RTOS任務(wù)和同步結(jié)構(gòu)會很快耗盡資源受限設(shè)備中的內(nèi)存。開發(fā)人員需要非常小心地監(jiān)控內(nèi)存,并跟蹤內(nèi)存的去向。

創(chuàng)建幾個任務(wù)、幾個信號量和互斥體,卻發(fā)現(xiàn)malloc因為所有堆空間都已被使用而失敗,這種情況并不罕見。

3

預(yù)先創(chuàng)建所有的任務(wù)

RTOS為嵌入式開發(fā)人員提供了廣泛的功能,例如創(chuàng)建任務(wù)和銷毀任務(wù)的能力。關(guān)心內(nèi)存使用的開發(fā)人員可能傾向于只在需要時創(chuàng)建任務(wù),然后在任務(wù)完成后銷毀它們。雖然這在概念上很棒,但在資源受限的系統(tǒng)中,通常沒有復(fù)雜的堆管理器可以處理堆碎片。結(jié)果可能是一個碎片堆,在程序執(zhí)行過程中的某個時刻突然沒有內(nèi)存可以分配。 建議在系統(tǒng)初始化期間創(chuàng)建所有使用堆的對象。結(jié)果似乎是靜態(tài)分配的對象,如果存在內(nèi)存問題,該問題將在系統(tǒng)啟動時顯現(xiàn)出來。

4

盡量不要關(guān)閉堆棧保護

裸機開發(fā)者通常癡迷于編寫盡可能高效的代碼。意識到存在使用時鐘周期的堆棧監(jiān)視器成為優(yōu)化和移除的誘人目標。盡量不要這樣做!

堆棧監(jiān)視器用于檢測堆棧溢出和其他與堆棧相關(guān)的問題。雖然它確實使用了幾個時鐘周期,但好處遠遠超過了性能成本。

5

優(yōu)化任務(wù)堆棧

不要依賴默認的堆棧大小。在許多RTOS中,任務(wù)的默認堆棧大小大約是0x200。這通常是堆棧深度,而不是使用的字節(jié)數(shù)!僅僅是一個閃爍的LED的任務(wù)就可能使用了整整千字節(jié)的堆空間! 嵌入式開發(fā)人員確保執(zhí)行最壞情況堆棧分析,并適當?shù)卮_定每個任務(wù)堆棧的大小。從長遠來看,這將有助于節(jié)省內(nèi)存!

6

啟動RTOS感知調(diào)試

現(xiàn)代微控制器有一些非??岬恼{(diào)試功能,如實時跟蹤和RTOS感知調(diào)試。在微控制器和RTOS中啟用這些功能。它們將允許開發(fā)人員跟蹤哪些任務(wù)運行了多長時間,以什么順序運行,并且可以幫助識別許多與RTOS相關(guān)的常見問題。

7

仔細選擇任務(wù)優(yōu)先級

預(yù)先開發(fā)一個軟件非常有用的一個原因是,它提供了系統(tǒng)中發(fā)生的所有事情的大畫面。有了這個大圖,決定系統(tǒng)中每個任務(wù)的優(yōu)先級就變得更容易了。必須仔細選擇優(yōu)先級,以確保任務(wù)不會耗盡CPU時間,并確保系統(tǒng)中不會出現(xiàn)優(yōu)先級反轉(zhuǎn)等問題。

8

最后

使用RTOS對嵌入式開發(fā)人員來說是非常有益的,并且有助于加快開發(fā)周期。許多中間件、庫和框架依賴于RTOS,掌握RTOS確實是非常有必要的一件事。原文轉(zhuǎn)載于: 網(wǎng)絡(luò),直接來源電子產(chǎn)品世界

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2949

    瀏覽量

    73735
  • RTOS
    +關(guān)注

    關(guān)注

    21

    文章

    808

    瀏覽量

    119299
  • 裸機
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    6321

原文標題:嵌入式裸機過渡到RTOS七點建議~

文章出處:【微信號:最后一個bug,微信公眾號:最后一個bug】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    freertos和裸機有什么區(qū)別

    FreeRTOS 和裸機編程是兩種不同的嵌入式系統(tǒng)開發(fā)方法,它們在設(shè)計理念、資源使用、功能實現(xiàn)等方面有著顯著的差異。 1. 基本概念 1.1 FreeRTOS FreeRTOS 是一小型的、可裁剪
    的頭像 發(fā)表于 09-02 14:13 ?668次閱讀

    RTOS的特性和類型

    實時操作系統(tǒng)(RTOS)是一種可運行實時計算應(yīng)用程序的軟件平臺,用于處理具有明確時間約束的事件和數(shù)據(jù)。與通用操作系統(tǒng)(GPOS)不同,RTOS必須在有限的硬件資源上調(diào)度應(yīng)用程序之間的處理和數(shù)據(jù)共享
    的頭像 發(fā)表于 08-20 11:29 ?392次閱讀

    如何將PSoC4000部件的設(shè)計過渡到PSoC4000T部件?

    英飛凌提供哪些支持,幫助客戶將現(xiàn)有 PSoC 設(shè)計轉(zhuǎn)移到新產(chǎn)品中? 如何將 PSoC4000 部件的設(shè)計過渡到 PSoC4000T 部件? PSoC4000 部件僅支持 PSoC Creator
    發(fā)表于 05-29 06:35

    請問CMSIS-RTOS RTX的任務(wù)調(diào)度鎖在哪里?

    請問一下,CMSIS-RTOS RTX的任務(wù)調(diào)度鎖在哪里?謝謝!
    發(fā)表于 05-13 08:28

    請問cortex-M7核單片機主要應(yīng)用在哪些領(lǐng)域?

    看到st和nxp的M7核單片機,動不動幾百兆的主頻,有的還要外置DDR,還有的成本低于1刀。想知道這些單片機的目標應(yīng)用場合是哪些? 單片機發(fā)展,51過渡到cortex m3,現(xiàn)在又要從cortex m3
    發(fā)表于 04-17 07:49

    STM32mp135裸機開發(fā)無法使用DDR嗎?

    /STM32CubeMP13_Package_-_Getting_started#Integrating_AzureRTOS_middleware 咨詢一下關(guān)于DDR的使用問題: 1.只有RTOS的才能對DDR進行配置嗎? 2.單純裸機開發(fā)(無
    發(fā)表于 03-11 07:01

    何時選擇裸機?何時選擇RTOS?何時選擇GPOS?

    在每個開發(fā)項目的初期,你都必須選擇軟件開發(fā)的基礎(chǔ)。雖然有很多選擇,但它們通常分為三類:裸機、實時操作系統(tǒng)(RTOS)或通用操作系統(tǒng)(GPOS)。
    的頭像 發(fā)表于 02-27 11:42 ?927次閱讀

    我們該如何選擇最適合的實時操作系統(tǒng)?

    隨著越來越多的團隊轉(zhuǎn)向32位微控制器并持續(xù)去采用物聯(lián)網(wǎng)技術(shù),對RTOS的需求只會不斷增長。如果您正在過渡到RTOS或最近已經(jīng)這樣做了,您就會知道選擇RTOS是一項重大挑戰(zhàn)。那么,該如何
    發(fā)表于 01-31 16:47 ?407次閱讀

    分享幾點RTOS相比裸機的優(yōu)勢

    嵌入式系統(tǒng)中,有很多方式實現(xiàn)任務(wù)調(diào)度。功能有限的小系統(tǒng)中,無限循環(huán)足夠?qū)崿F(xiàn)小系統(tǒng)的功能。當軟件設(shè)計變得龐大且復(fù)雜時,開發(fā)者應(yīng)該考慮使用實時操作系統(tǒng)RTOS。
    的頭像 發(fā)表于 01-24 18:23 ?1451次閱讀
    分享幾點<b class='flag-5'>RTOS</b>相比<b class='flag-5'>裸機</b>的優(yōu)勢

    DeepSleep模式過渡到活動模式時,IMO和ECO時鐘在喚醒過程中是如何運行的呢?

    我正在使用 CYT2B95。 我在主動模式下使用 ECO 作為 FLL/PLL 參考時鐘。 DeepSleep 模式過渡到活動模式時,IMO 和 ECO 時鐘在喚醒過程中是如何運行的? 問題 1
    發(fā)表于 01-24 07:52

    ESP32的接口不能隨便用,如何快速Arduino過渡到ESP32的新手指南-進階篇

    進階篇 接續(xù)如何快速Arduino過渡到ESP32的新手指南-基礎(chǔ)篇,繼續(xù)了解ESP32的各種引腳接口吧! 內(nèi)容介紹 1.?SPI引腳 2.?I2C引腳 3.?UART引腳 4.?RTC引腳 5.
    的頭像 發(fā)表于 12-12 15:54 ?2.4w次閱讀
    ESP32的接口不能隨便用,如何快速<b class='flag-5'>從</b>Arduino<b class='flag-5'>過渡到</b>ESP32的新手指南-進階篇

    如何快速Arduino過渡到ESP32的新手指南-基礎(chǔ)篇

    。 本文將為你提供 Arduino到ESP32 GPIO引腳平穩(wěn)過渡的指南 ,讓你輕松解決各種問題。 基礎(chǔ)篇內(nèi)容 引腳使用注意事項 電源引腳 ADC引腳 DAC引腳 PWM引腳 Touch引腳 學會
    的頭像 發(fā)表于 11-21 08:36 ?2180次閱讀
    如何快速<b class='flag-5'>從</b>Arduino<b class='flag-5'>過渡到</b>ESP32的新手指南-基礎(chǔ)篇

    新手必看的RTOS基礎(chǔ)知識

    時間片調(diào)度保證每個線程都有一要執(zhí)行的槽。這種類型的調(diào)度通常不利于實時應(yīng)用。如果需要,TI-RTOS內(nèi)核支持使用任務(wù)進行時間切片調(diào)度
    的頭像 發(fā)表于 11-20 16:06 ?2238次閱讀
    新手必看的<b class='flag-5'>RTOS</b>基礎(chǔ)知識

    RTOS內(nèi)核源碼,非必要不建議閱讀

    在2011、12年讀書的時候,RTOS還不像現(xiàn)在這么流行(那時還是以“裸機”為主),那個時候網(wǎng)上RTOS的教程大多都還是以μCOS為主,其他RTOS的資料相對很少。像FreeRTOS、
    的頭像 發(fā)表于 10-30 16:37 ?667次閱讀
    <b class='flag-5'>RTOS</b>內(nèi)核源碼,非必要不建議閱讀

    RTOS相比裸機有什么優(yōu)點?RTOS相比裸機更方便嗎?

    RTOS相比裸機有什么優(yōu)點?RTOS相比裸機更方便嗎? RTOS代表實時操作系統(tǒng),專門為需要高可靠性和可預(yù)測性的系統(tǒng)設(shè)計。相比之下,裸金屬或
    的頭像 發(fā)表于 10-29 16:33 ?1498次閱讀