FreeRTOS,全稱Free Real Time Operating System,即免費的實時操作系統。相比於計算機中用到的Windows,MacOS,Linux等操作系統,實時操作系統(RTOS)是一種輕量級的操作系統,適用於嵌入式硬件中,用於解決單片機類裸機輪詢方式在處理多個任務時的實時性不高的問題。
目前的實時操作系統有好多種,除FreeRTOS外,還有μCOS、RT-Thread、RTX、Alios Things、Huawei LiteOS等。
實時操作系統(RTOS)的主要特點是可以實現多任務,與多任務系統相對的是裸機系統。
裸機系統就是最初我們學習單片機編程時接觸的那種編程方式,main函數中一個while大循環依次處理各個模塊的任務,對於需要及時檢測的事件會使用中斷。這種使用大循環的程序運行方式也叫輪詢系統,加上中斷處理函數後又稱前後臺系統,中斷處理稱作前臺,無限循環稱作後臺。
多任務系統是將各個處理模塊編寫爲單獨的任務,每個任務本身是個無限循環,程序運行初期會創建各個子任務,通過任務調度的方式,利用各任務的阻塞時刻不斷切換運行各個任務,達到一種看起來是多個任務在同時運行的一種效果。並且,通過中斷標誌以及任務間通信的相關機制,可以實現任務之間的快速響應。
這裏以FreeRTOS v9.0.0版本爲例,代碼包含FreeRTOS和FreeRTOS-Plus文件夾,後者是一些補充文件,初學者用不到,可以先忽略。在FreeRTOS文件夾中主要關注source文件夾,這裏是FreeRTOS的全部源碼,包括6個c文件和include文件夾下的多個h文件。另外,在portable文件夾下,是針對不同硬件平臺的單獨區分使用的代碼,目前考慮使用Keil開發STM32F407,所以portable文件夾只需使用RVDS的ARM_CM4F以及MemMang。
關於各個c文件的主要用途:
另外在Demo文件夾下還需要用到一個FreeRTOSConfig.h,該文件中通過各種宏定義的方式來配置FreeRTOS需要使用哪些資源。
FreeRTOS v9.0.0源碼鏈接: