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