大家好,我是專注分享職業(yè)規(guī)劃/技術(shù)科普/智能改變生活有關(guān)原創(chuàng)文章的allen康哥。
很多關(guān)注公眾號(hào)的朋友想入門嵌入式,很大可能都是從Arduino、STM32這些單片機(jī)開始的。如果你只是點(diǎn)個(gè)燈,那裸機(jī)直接用main循環(huán)干就完事了!但是如果你想同時(shí)讀取傳感器、控制LED、發(fā)送數(shù)據(jù)這些事一起做。是不是有點(diǎn)難受了?
這個(gè)時(shí)候,今天的主角就登場(chǎng)了——FreeRTOS。你可以簡(jiǎn)單的理解它是嵌入式單片機(jī)開發(fā)中的“超級(jí)管家”,下邊就帶大家了解下這家伙的厲害之處。
首先第一個(gè)問題,大家可能會(huì)想知道,什么是操作系統(tǒng)?
我們之所以可以用手機(jī)同時(shí)聊微信、聽歌、刷網(wǎng)頁,這其實(shí)就是后臺(tái)的操作系統(tǒng)在干活。操作系統(tǒng)非常忙,它會(huì)一邊管理像CPU、內(nèi)存、屏幕、鍵盤、網(wǎng)卡等這種硬件。另一邊處理瀏覽器、游戲等等這種軟件應(yīng)用。操作系統(tǒng)讓軟件亂流是用這些硬件資源,讓我們感覺就像軟件在同時(shí)運(yùn)行。這種能力叫多任務(wù)處理。正是這種多任務(wù)處理能力,讓我們不用直接面對(duì)復(fù)雜的硬件細(xì)節(jié),開發(fā)軟件更快、更簡(jiǎn)單、更容易維護(hù)。
然后就是第二個(gè)問題,為什么嵌入式單片機(jī)開發(fā)需要操作系統(tǒng)?
單片機(jī)芯片對(duì)比我們?nèi)粘J褂玫氖謾C(jī)來說性能是相當(dāng)弱的,資源也很緊張,flash基本都是KB這種級(jí)別!所以嵌入式硬件某種程度來說就是做專一事件的定制硬件,比如控制智能鎖、監(jiān)測(cè)心率、驅(qū)動(dòng)電機(jī)等等。所以這種設(shè)備就對(duì)實(shí)時(shí)性有很強(qiáng)的要求,不能說可快可慢那還得了。
所以一般的通用系統(tǒng)就不適合嵌入式開發(fā)了,因?yàn)檫@些系統(tǒng)更在意用戶體驗(yàn),所以專家們就設(shè)計(jì)了一款專為實(shí)時(shí)性設(shè)計(jì)的操作系統(tǒng)——RTOS ,翻譯過來就是Real Time Operating System,實(shí)時(shí)操作系統(tǒng)。這個(gè)系統(tǒng)的強(qiáng)項(xiàng)就在于“調(diào)度器”RTOS的調(diào)度器核心目標(biāo)就是:確保任務(wù)執(zhí)行的順序和時(shí)間可預(yù)測(cè)!
第三個(gè)問題,那怎么實(shí)現(xiàn)時(shí)間可預(yù)測(cè)呢?沒錯(cuò),靠“優(yōu)先級(jí)”!
在RTOS開發(fā)中,你要把要做的任務(wù)都定義好,這種我們叫他“task”。然后給每一個(gè)task分配一個(gè)優(yōu)先級(jí),比如緊急的剎車任務(wù)優(yōu)先級(jí)最高,閃個(gè)狀態(tài)燈的任務(wù)優(yōu)先級(jí)低調(diào)度器時(shí)刻盯著:哪個(gè)“就緒”的Task優(yōu)先級(jí)最高??jī)?yōu)先級(jí)最高的Task馬上獲得CPU執(zhí)行權(quán)!它不主動(dòng)讓出(比如等待事件、延時(shí))或者被打斷(被更高優(yōu)先級(jí)Task搶占),就占著CPU不放!
然后就是第四個(gè)問題,也是今天的主題,F(xiàn)reeRTOS是個(gè)啥?
簡(jiǎn)單來說,F(xiàn)reeRTOS就是剛才說的嵌入式操作系統(tǒng)中的一種,而且是比較優(yōu)秀的一種。除了具備上述操作系統(tǒng)的功能外,它是完全免費(fèi)開源的,無論個(gè)人學(xué)習(xí)、做項(xiàng)目、甚至拿去開發(fā)商業(yè)產(chǎn)品賣錢,都不用交任何費(fèi)用!
而且,它是一個(gè)經(jīng)過商業(yè)考驗(yàn)的可靠系統(tǒng),比如NXP恩智浦、意法半導(dǎo)體ST、英飛凌Infineon、瑞薩Renesas、TI德州儀器、英偉達(dá)NVIDIA這些企業(yè)都和FreeRTOS的開發(fā)團(tuán)隊(duì)緊密合作。
還一個(gè)得天獨(dú)厚的優(yōu)勢(shì),它被集成在這些大廠的芯片參考設(shè)計(jì)和開發(fā)工具里,包括國(guó)內(nèi)同學(xué)最熟悉的STM32CubeMX。另外FreeRTOS還有龐大的社區(qū),各種學(xué)習(xí)資料豐富,很適合學(xué)習(xí)。