理解實時作業系統與裸機的區別-----Free RTOS 簡介
前面一篇文章介紹了一些命名規範之類的基礎知識,但是我覺得還缺少一定前言知識,就是裸機和作業系統有什麼區別,為什麼我們需要學freertos,因為招聘要求?那麼為什麼招聘網又會有這個要求呢?所以我們為什麼要去學習這個實時作業系統呢?
早期嵌入式開發沒有嵌入式作業系統的概念 ,直接操作裸機,在裸機上寫程式,比如用51微控制器基本就沒有作業系統的概念。通常把程式分為兩部分:前臺系統和後臺系統。 簡單的小系統通常是前後臺系統,這樣的程式包括一個死迴圈和若干個中斷服務程式:應用程式是一個無限迴圈,迴圈中呼叫API函式完成所需的操作,這個大迴圈就叫做後臺系統。中斷服務程式用於處理系統的非同步事件,也就是前臺系統。前臺是中斷級,後臺是任務級。
這裡就是平時我們裸機的執行結果,現在比如我在執行task3,突然又想馬上執行task1,這怎麼辦?前後臺程式就會讓後面的任務執行之後,再去執行task1,這樣實時性受到影響。如果是裸機,要實現也可以,用中斷,可是這樣會讓程式結構變得複雜,因為我想什麼時候跳過就跳過,想什麼時候執行就執行,所以固定的中斷觸發方式雖然也可以實現一些簡單的跳轉功能,但是當程式複雜之後,這樣的裸機程式難以閱讀和維護。這樣在有作業系統的任務排程之後,就會讓系統響應更具有實時性。
RTOS全稱為:Real Time OS,就是實時作業系統,強調的是:實時性。實時作業系統又分為硬實時和軟實時。硬實時要求在規定的時間內必須完成操作 ,硬實時系統不允許超時,在軟實時裡面處理過程超時的後果就沒有那麼嚴格。 在實時作業系統中,我們可以把要實現的功能劃分為多個任務,每個任務負責實現其中的一部分,每個任務都是一個很簡單的程式,通常是一個死迴圈。 RTOS作業系統:FreeRTOS,UCOS,RTX,RT-Thread,DJYOS等。 RTOS作業系統的核心內容在於:實時核心。
可剝奪型核心:
RTOS的核心負責管理所有的任務,核心決定了執行哪個任務,何時停止當前任務切換到其他任務,這個是核心的多工管理能力。多工管理給人的感覺就好像晶片有多個CPU,多工管理實現了CPU資源的最大化利用,多工管理有助於實現程式的模組化開發,能夠實現複雜的實時應用。
可剝奪核心顧名思義就是可以剝奪其他任務的CPU使用權,它總是執行就緒任務中的優先順序最高的那個任務。
FreeRTOS是一個可裁剪、可剝奪型的多工核心,而且沒有任務數限制。FreeRTOS提供了實時作業系統所需的所有功能,包括資源管理、同步、任務通訊等。 FreeRTOS是用C和彙編來寫的,其中絕大部分都是用C語言編寫的,只有極少數的與處理器密切相關的部分程式碼才是用匯編寫的,FreeRTOS結構簡潔,可讀性很強!最主要的是非常適合初次接觸嵌入式實時作業系統學生、嵌入式系統開發人員和愛好者學習。
為什麼需要學習這個作業系統:
4.
學習方法:
1、多練 不要只看書,或者只看資料,只“看”是沒有任何用的!一定要實際動手寫程式碼練習,多在開發板上練習。 2、遇到不懂的怎麼辦? FreeRTOS還是有一定難度的,在學習的過程中難免會遇到看不懂的東西,如果遇到不懂的就先不要管,先學會怎麼呼叫FreeRTOS的API函式。等以後有時間了在回過頭來重新學習一下。 3、對C語言的要求 需要了解指標、結構體、資料結構中的連結串列等。