RTOS專欄 目錄

2021-08-18 13:44:50 字數 1760 閱讀 5920

使用乙個實際專案的案例來引出使用rtos的必要性,然後總結出μcos的核心內容以及理解這些內容需要的前提知識,做出專欄的詳細章節目錄。

真正理解使用rtos的好處還得是經歷過實際的project,說乙個我工作以後接觸到的第乙個project吧。該專案是乙個嵌入式控制器,需要做的工作有:讀取a/d資料、根據讀取到的a/d資料計算結果、和上位機通訊、顯示、使用者按鍵。詳細一點的技術要求,對實時性要求比較高的乙個任務是讀取a/d資料,需要精確的10ms 級別interval的讀取。這樣的系統從直覺上來看,有很多任務要去做,而且任務之間從重要性、緊迫性方面比較的話還不能一視同仁。如果不使用rtos的話,經典的做法是使用前後臺系統設計方法,後台系統作為乙個大的loop檢測各種event,前台是各種外部事件的中斷,比如讀取到a/d資料、檢測到外部按鍵等等。這種系統要想實現特定事件的實時響應和不同事件的緊急度管理還是需要很多的額外工作需要做。其實說的直白點,乙個小型嵌入式系統的核心控制器一般都是乙個綜合了cpu和外設的片上系統。這個核心控制器一般cpu是單core的,只能提供乙個執行流,再加上interrupt,可以說整體就有了兩個可管理的執行流,且中斷的執行流優先順序要大於cpu提供的執行流。這就是前後臺系統設計的自然性,硬體提供了兩個執行流,我就利用這兩個執行流設計了前後臺系統。前台是各種中斷事件,後台利用cpu提供的計算資源做邏輯處理。

如果利用軟體管理手段能把cpu上的執行流管理起來,勢必能加速整體的吞吐量和實時響應能力。因為cpu上的執行流從巨集觀上來看利用cpu進行運算的時間是間隔的,這個也很好理解,因為cpu運算能力是很強的,但是乙個任務一般會涉及到等待外部事件,外部事件發生後才去做邏輯處理或者數值運算。在等待外部相對於cpu運算來說慢的多的多的事件時,如果能把cpu讓給其他任務來用,那cpu的整體利用率就很高了。真是不錯的想法。乙個嵌入式產品不可能不與外部互動,畢竟科技產品是為人服務的。

使用rtos後,設計上述project就可以比較輕鬆地管理各個任務,還能很容易根據任務的緊迫性、實時性來區分對待。這樣一來,對降低嵌入式軟體的設計複雜度很有幫助,後期除錯、維護也比較容易。這樣也比較自然,本來不同的任務被劃分出來也是根據這個任務做的工作具有高內聚的特點,和其他任務互動具有低耦合的特點,把乙個任務作為乙個管理單元確實比較自然。使用rtos後,每乙個任務都認為自己獨佔一整個cpu,實際上只是各個任務分時復用cpu資源。各個任務既然劃分出來了,必然涉及到各個任務之間通訊的問題,rtos也提供了各種ipc通訊的方法。這樣設計出來的嵌入式軟體確實符合「高內聚、低耦合」的設計原則。

rtos核心就是管理cpu,管理cpu的意思就是能抽象出多個執行流(task/thread)。rtos提供的其他服務都和外部io有關係,你像fs(file system)、device manegement等等。

rtos提供了乙個對程式設計師來說更好用的抽象的計算機,這個抽象的計算機遮蔽了底層硬體細節並提供了很多基礎服務。這就是使用rtos的原因,相信你使用過rtos設計產品後,你就不會再使用前後臺系統設計產品了。

何為作業系統?何為實時作業系統?

rtos 中硬體平台無關性**和硬體平台有關性**

既然都有了高階語言,為什麼組合語言還存在?rtos源**中組合語言的作用主要是什麼?

程式設計師編寫的程式從源**到實際執行都經歷了什麼?(源**—目標映像—實際執行)

重新認識下棧[stack]。(棧和c語言的關係、棧和thread執行環境的關係)

感謝μcos的作者jean j.labrosse

硬體執行環境和μcos版本說明

(源**—目標映像—實際執行)

(棧和c語言的關係、棧和thread執行環境的關係)

Python專欄目錄

1.python基礎語法 2.python基本資料型別 3.python運算子 4.python數字 number 5.python字串 6.python列表 7.python元組 8.python字典 9.python集合 10.python條件控制 11.python迴圈語句 12.python...

MySQL江湖路 專欄目錄

毛竹 只生長在中國最東邊,4年也只不過長高3cm。但5年後,以每天足足30cm的速度生長著。這樣只用6周就可以長到15公尺了!或許看起來6週間好像發生了不可思議的變化,但之前的四年間,毛竹將根在土壤裡延伸了數百平公尺。我想這真是對很多程式設計師的寫照。保持每天都能進步一點,五年後你會感謝現在的自己。...

Docsify 的邊欄目錄如何設定

如下圖中的文件中的 docsify 邊欄是如何設定的?在你的專案的 index.html 檔案中,新增引數 loadsidebar true然後再在專案中新增乙個 sidebar.md 檔案,這個檔案的格式為 cwikius 文件概述 文件介紹和快速鏈結 readme.md 公眾平台 contact...