正文
實時操作系統已經成為許多嵌入式系統中的關鍵組件,從裸機調度過渡到RTOS可能是一件棘手的事情。這里有七個小技巧可以幫助嵌入式開發人員更輕松地完成過渡。
1
首先規劃你的架構
如果你從未使用過UML或者對軟件架構不感興趣,現在是時候學習一下了。 使用RTOS時,開發人員仔細考慮每項任務、同步和通信機制是至關重要的。這些細節不能僅僅存儲在工程師的頭腦中,而是需要以圖表的形式記錄下來,以便在需要時可以查看和更新。開發一個基于RTOS的應用程序會很快變得復雜,考慮清楚應用程序的行為是很重要的。
2
仔細跟蹤內存的使用情況
與開發裸機應用程序不同,RTOS任務和同步結構會很快耗盡資源受限設備中的內存。開發人員需要非常小心地監控內存,并跟蹤內存的去向。
創建幾個任務、幾個信號量和互斥體,卻發現malloc因為所有堆空間都已被使用而失敗,這種情況并不罕見。
3
預先創建所有的任務
RTOS為嵌入式開發人員提供了廣泛的功能,例如創建任務和銷毀任務的能力。關心內存使用的開發人員可能傾向于只在需要時創建任務,然后在任務完成后銷毀它們。雖然這在概念上很棒,但在資源受限的系統中,通常沒有復雜的堆管理器可以處理堆碎片。結果可能是一個碎片堆,在程序執行過程中的某個時刻突然沒有內存可以分配。 建議在系統初始化期間創建所有使用堆的對象。結果似乎是靜態分配的對象,如果存在內存問題,該問題將在系統啟動時顯現出來。
4
盡量不要關閉堆棧保護
裸機開發者通常癡迷于編寫盡可能高效的代碼。意識到存在使用時鐘周期的堆棧監視器成為優化和移除的誘人目標。盡量不要這樣做!
堆棧監視器用于檢測堆棧溢出和其他與堆棧相關的問題。雖然它確實使用了幾個時鐘周期,但好處遠遠超過了性能成本。
5
優化任務堆棧
不要依賴默認的堆棧大小。在許多RTOS中,任務的默認堆棧大小大約是0x200。這通常是堆棧深度,而不是使用的字節數!僅僅是一個閃爍的LED的任務就可能使用了整整千字節的堆空間! 嵌入式開發人員確保執行最壞情況堆棧分析,并適當地確定每個任務堆棧的大小。從長遠來看,這將有助于節省內存!
6
啟動RTOS感知調試
現代微控制器有一些非常酷的調試功能,如實時跟蹤和RTOS感知調試。在微控制器和RTOS中啟用這些功能。它們將允許開發人員跟蹤哪些任務運行了多長時間,以什么順序運行,并且可以幫助識別許多與RTOS相關的常見問題。
7
仔細選擇任務優先級
預先開發一個軟件非常有用的一個原因是,它提供了系統中發生的所有事情的大畫面。有了這個大圖,決定系統中每個任務的優先級就變得更容易了。必須仔細選擇優先級,以確保任務不會耗盡CPU時間,并確保系統中不會出現優先級反轉等問題。
8
最后
使用RTOS對嵌入式開發人員來說是非常有益的,并且有助于加快開發周期。許多中間件、庫和框架依賴于RTOS,掌握RTOS確實是非常有必要的一件事。原文轉載于: 網絡,直接來源電子產品世界
-
內存
+關注
關注
8文章
3025瀏覽量
74056 -
RTOS
+關注
關注
22文章
813瀏覽量
119643 -
裸機
+關注
關注
0文章
39瀏覽量
6377
原文標題:嵌入式裸機過渡到RTOS七點建議~
文章出處:【微信號:最后一個bug,微信公眾號:最后一個bug】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論