首先,應(yīng)該介紹什么是FreeRtos,他于單片機(jī)而言就是一個(gè)管理器,作為管理者管理嵌入式芯片中的任務(wù),堆棧,中斷,隊(duì)列等等資源,對(duì)于操作系統(tǒng)而言,又分為實(shí)時(shí)操作系統(tǒng)和非實(shí)時(shí)操作系統(tǒng),實(shí)時(shí)操作系統(tǒng)代表任務(wù)或者某個(gè)功能必須在指定的運(yùn)行時(shí)間內(nèi)完成,保證設(shè)備想要執(zhí)行的功能能立即得到執(zhí)行,F(xiàn)reeRtos就是一個(gè)迷你型的實(shí)時(shí)操作系統(tǒng)內(nèi)核。
FreeRtos作為輕量級(jí)的操作系統(tǒng)活躍于嵌入式行業(yè)當(dāng)中。它占用的資源非常少,是為數(shù)不多的能夠在小型單片機(jī)上移植的操作系統(tǒng),并且是完全免費(fèi)的。包括在飛機(jī)、航天器上,也在使用一些特別定制的實(shí)時(shí)嵌入式操作系統(tǒng),來保證設(shè)備的正常運(yùn)轉(zhuǎn)。
作為嵌入式實(shí)時(shí)操作系統(tǒng),F(xiàn)reeRtos具有搶占式實(shí)時(shí)操作系統(tǒng)內(nèi)核,也就是說任務(wù)之間有優(yōu)先級(jí)的區(qū)分,比如一些需要實(shí)時(shí)響應(yīng)的功能部分,可以把優(yōu)先級(jí)設(shè)置得高一些,這樣當(dāng)需要執(zhí)行的時(shí)候,高優(yōu)先級(jí)別的任務(wù)可以打斷別的低優(yōu)先級(jí)任務(wù),率先得到CPU資源,得到執(zhí)行的機(jī)會(huì)。作為體量而言,他本身占用的rom空間與ram空間就非常小了,它還支持再往下地裁剪,可以將功能裁剪一部分,最小能夠只占用10kb左右的rom空間和大約10kb的ram空間。
互斥鎖—避免死鎖
同時(shí)FreeRtos內(nèi)部就有互斥鎖,互斥鎖的作用在于避免死鎖的情況發(fā)生,由于任務(wù)運(yùn)行可能會(huì)用到一部分的參數(shù)資源,CPU資源等等,當(dāng)一個(gè)任務(wù)占用這些資源并且不釋放的時(shí)候,其他的任務(wù)是無法調(diào)用這些資源的。那么試想,當(dāng)兩個(gè)任務(wù)分別在執(zhí)行的時(shí)候,雖然由于單核的原因,任務(wù)肯定有掛起的時(shí)候,但是掛起并沒有代表任務(wù)就釋放了這些資源,當(dāng)兩個(gè)任務(wù)分別擁有對(duì)方想要使用的資源,所以都等待著對(duì)方釋放,當(dāng)雙方都不釋放的時(shí)候,就會(huì)造成死鎖,兩個(gè)任務(wù)都將徹底卡死不再繼續(xù)執(zhí)行,同時(shí)對(duì)于一些關(guān)鍵的代碼段而言,由于任務(wù)之間的調(diào)度,可能被多個(gè)任務(wù)執(zhí)行過甚至更改過參數(shù),這種情況也是需要避免的,這就是互斥鎖的意義,它保證在同一時(shí)刻,只能有一個(gè)線程去操作關(guān)鍵性的共享數(shù)據(jù),保證數(shù)據(jù)不被多任務(wù)調(diào)用執(zhí)行,保證任務(wù)的正確調(diào)度和數(shù)據(jù)的安全性。
信號(hào)量和消息隊(duì)列
FreeRtos還有信號(hào)量和消息隊(duì)列的功能。一個(gè)任務(wù)可以向消息隊(duì)列中添加信息,添加的多條信息按照FIFO先入先出的形式(這種形式也更適合數(shù)據(jù)信息處理)的方式被別的任務(wù)接收到,接收到后判定是否執(zhí)行相關(guān)操作,這樣可以防止多任務(wù)的訪問沖突,也解決了中斷服務(wù)程序與任務(wù)之間的消息傳遞的問題。
總結(jié)
其實(shí)對(duì)于單片機(jī)或者嵌入式設(shè)備而言,F(xiàn)reeRtos并不是百利而無一害,既然作為管理者,肯定是需要CPU資源支持管理調(diào)度的,同時(shí)還有rom和ram的消耗,所以對(duì)于嵌入式設(shè)備而言,是否要上FreeRtos系統(tǒng)是一種權(quán)衡,如果小型的簡(jiǎn)單邏輯設(shè)備,沒有必要舍近求遠(yuǎn)去移植操作系統(tǒng),直接裸奔就是最好的選擇,本身簡(jiǎn)單的邏輯也不需要太多的管理支持。
但是隨著邏輯的增多,功能的增多,F(xiàn)reeRtos的必要性就會(huì)越來越高,因?yàn)檫壿嫷脑龆啵覀兏枰獙⒕杏诠δ懿糠值拈_發(fā)而不是這些功能任務(wù)間的調(diào)度。任務(wù)的運(yùn)行、掛起、就緒態(tài)之間的轉(zhuǎn)換,也正是FreeRtos的核心,要在眾多任務(wù)間做好這件事,并不容易,感謝有這么一種開源免費(fèi)的操作系統(tǒng),來幫助開發(fā)者精力集中地進(jìn)行開發(fā),讓設(shè)備的運(yùn)行更穩(wěn)定、更加科學(xué)。
原文:FreeRtos于嵌入式環(huán)境的應(yīng)用
MCGS嵌入軟件配置教程
MCGS用戶程序云端授權(quán)系統(tǒng)設(shè)計(jì)
審核編輯黃昊宇
-
嵌入式
+關(guān)注
關(guān)注
5175文章
19973瀏覽量
324401 -
FreeRTOS
+關(guān)注
關(guān)注
14文章
496瀏覽量
65733
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式達(dá)到什么水平才能就業(yè)?
Linux嵌入式和單片機(jī)嵌入式的區(qū)別?
運(yùn)行在嵌入式系統(tǒng)上的emApps

OPENRTOS為FreeRTOS提供商業(yè)許可證
嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式
如何成為一名嵌入式軟件工程師?
飛凌嵌入式「2025嵌入式及邊緣AI技術(shù)論壇」議程公布

嵌入式去哪個(gè)城市好?
奕斯偉計(jì)算亮相2025年德國(guó)紐倫堡嵌入式展覽會(huì)

嵌入式機(jī)器學(xué)習(xí)的應(yīng)用特性與軟件開發(fā)環(huán)境

嵌入式主板的概述與發(fā)展

ARM架構(gòu)嵌入式主板特點(diǎn)

ARM嵌入式實(shí)時(shí)操作系統(tǒng)比較
新手怎么學(xué)嵌入式?
什么是嵌入式人工智能

評(píng)論