新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 業(yè)界動(dòng)態(tài) > 嵌入式開(kāi)發(fā):使用RTOS的7個(gè)技巧

嵌入式開(kāi)發(fā):使用RTOS的7個(gè)技巧

作者: 時(shí)間:2022-11-02 來(lái)源:學(xué)習(xí)嵌入式 收藏

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

本文引用地址:http://www.butianyuan.cn/article/202211/439889.htm



  技巧1——首先規(guī)劃好你的架構(gòu)



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



  技巧2——仔細(xì)跟蹤內(nèi)存使用情況



  與開(kāi)發(fā)裸機(jī)應(yīng)用程序不同,RTOS任務(wù)和同步結(jié)構(gòu)會(huì)很快耗盡資源受限設(shè)備中的內(nèi)存。開(kāi)發(fā)人員需要非常小心地監(jiān)控內(nèi)存,并跟蹤內(nèi)存的去向。創(chuàng)建六個(gè)任務(wù)、幾個(gè)信號(hào)量和互斥體,卻發(fā)現(xiàn)malloc因?yàn)樗卸芽臻g都已被使用而失敗,這種情況并不罕見(jiàn)。



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



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



  技巧 4–永遠(yuǎn)不要關(guān)閉堆棧保護(hù)!



  裸機(jī)開(kāi)發(fā)者通常癡迷于編寫盡可能高效的代碼。意識(shí)到存在使用時(shí)鐘周期的堆棧監(jiān)視器成為優(yōu)化和移除的誘人目標(biāo)。不要這樣做!堆棧監(jiān)視器用于檢測(cè)堆棧溢出和其他與堆棧相關(guān)的問(wèn)題。雖然它確實(shí)使用了幾個(gè)時(shí)鐘周期,但好處遠(yuǎn)遠(yuǎn)超過(guò)了性能成本。




  技巧5——優(yōu)化每個(gè)任務(wù)堆棧



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



  技巧 6–啟用RTOS感知調(diào)試



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



  技巧7——仔細(xì)選擇任務(wù)優(yōu)先級(jí)



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



  結(jié)論



  使用RTOS對(duì)嵌入式開(kāi)發(fā)人員來(lái)說(shuō)是非常有益的,并且有助于加快開(kāi)發(fā)周期。許多中間件、庫(kù)和框架依賴于RTOS,在當(dāng)今物聯(lián)網(wǎng)設(shè)備的大力推動(dòng)下,裸機(jī)已經(jīng)過(guò)時(shí),掌握RTOS是強(qiáng)制性的。




關(guān)鍵詞: RTOS 嵌入式

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉