FreeRTOS是一個(gè)實(shí)時(shí)操作系統(tǒng)(real-time operation system),那么什么是實(shí)時(shí)呢?
實(shí)時(shí),【釋義】[real time] 事物發(fā)生過(guò)程中的實(shí)際時(shí)間;在某事發(fā)生、發(fā)展過(guò)程中的同一時(shí)間:進(jìn)行~報(bào)道|~傳遞股市行情|~測(cè)量,實(shí)時(shí)計(jì)算。
但在IT行業(yè)里面它有它自己的含義:
實(shí)時(shí)(real time)是一個(gè)計(jì)算機(jī)響應(yīng)的水平,用戶感覺足夠及時(shí)或者是計(jì)算機(jī)與外部過(guò)程(例如,當(dāng)天氣不斷變化時(shí),可以清楚地把天氣表現(xiàn)出來(lái))保持同步。實(shí)時(shí)是一個(gè)關(guān)于實(shí)時(shí)運(yùn)轉(zhuǎn)得的計(jì)算機(jī)或者程序的形容詞。實(shí)時(shí)描述的是一個(gè)人而不是機(jī)器對(duì)時(shí)間的感覺。
我們知道,由于產(chǎn)品變得越來(lái)越復(fù)雜,在單片機(jī)上運(yùn)行的任務(wù)數(shù)量就越來(lái)越多,但大部分單片機(jī)都是單核的,同一時(shí)間只能運(yùn)行一個(gè)任務(wù),那么當(dāng)一個(gè)任務(wù)在運(yùn)行時(shí),另一個(gè)任務(wù)只能在等待執(zhí)行,這就導(dǎo)致任務(wù)的滯后,影響產(chǎn)品的使用。
比如說(shuō)我有三個(gè)任務(wù):
1、按鍵檢測(cè)任務(wù),要一直檢測(cè)用戶按鍵的輸入狀態(tài);
2、電機(jī)運(yùn)行任務(wù),要控制電機(jī)的轉(zhuǎn)速;
3、顯示任務(wù),要一直顯示當(dāng)前電機(jī)的狀態(tài)和按鍵的狀態(tài)。
如果單純的用一個(gè)while(1)來(lái)循環(huán)執(zhí)行這些任務(wù),不做其他任務(wù)調(diào)度的處理,這些任務(wù)依次執(zhí)行,那么就會(huì)出現(xiàn)顯示檢測(cè)不到按鍵,或者電機(jī)轉(zhuǎn)一下又停下來(lái),或者顯示卡頓。
所以,必須加上任務(wù)調(diào)度的算法去管理這些任務(wù)。關(guān)于任務(wù)調(diào)度的算法,我將來(lái)會(huì)繼續(xù)講到,不完全理解沒關(guān)系,先有個(gè)概念。
FreeRTOS所干的活就是完成系統(tǒng)中所有任務(wù)的任務(wù)調(diào)度。
實(shí)時(shí)操作系統(tǒng)又分為軟實(shí)時(shí)和硬實(shí)時(shí)。那么什么是軟實(shí)時(shí),什么是硬實(shí)時(shí)。
官方提供的《Mastering the FreeRTOS? Real Time Kernel》書中舉了兩個(gè)例子,并給出了答案:
軟實(shí)時(shí):是那些規(guī)定了一個(gè)時(shí)間期限內(nèi)完成的任務(wù)——但是超過(guò)這個(gè)期限并不會(huì)使系統(tǒng)變得無(wú)用。例如,對(duì)鍵盤按下按鍵反應(yīng)太慢可能會(huì)使系統(tǒng)看起來(lái)反應(yīng)遲鈍,令人惱火,但還是可以使用。
硬實(shí)時(shí)功能必須在給定的時(shí)間限制之內(nèi)完成——如果無(wú)法做到即意味著整個(gè)系統(tǒng)無(wú)法使用。汽車的安全氣囊觸發(fā)機(jī)制就是一個(gè)硬實(shí)時(shí)功能的例子。安全氣囊在撞擊發(fā)生后給定時(shí)間限制內(nèi)必須彈出。如果響應(yīng)時(shí)間超出了這個(gè)時(shí)間限制,會(huì)使得駕駛員受到傷害,而這原本是可以避免的。
FreeRTOS是一個(gè)實(shí)時(shí)內(nèi)核(或?qū)崟r(shí)調(diào)度程序),可以在它上面構(gòu)建嵌入式應(yīng)用程序來(lái)滿足其硬實(shí)時(shí)需求。