FreeRTOS學習及移植筆記之一:開始FreeRTOS之旅
1、必要的準備工作
工欲善其事,必先利其器,在開始學習和移植之前,相應的準備工作必不可少。所以在開始我們寫要準備如下:
-
測試環境:我準備在STM32F103平臺上移植和測試FreeRTOS系統
-
從官網檢視FreeRTOS每個函式的API說明,以及相應的例子。根據以往的經驗,在學習過程中應該會經常檢視,地址:
2、瞭解FreeRTOS原始檔的目錄結構
下載的FreeRTOS下載包是一個自解壓的檔案,解壓後包含的內容比較豐富,不過不露結構很清晰,主要包含兩個子目錄:FreeRTOS和FreeRTOS-Plus。如下所示:
-
FreeRTOS-Plus包含FreeRTOS+元件和演示例程;
-
FreeRTOS包含FreeRTOS實時核心原始檔和演示例程。
我們學習的FreeRTOS核心部分在FreeRTOS目錄之下,開啟FreeRTOS資料夾它又被分成兩個主要的子目錄,如下所示:
-
Demo包含演示例程工程;
-
Source包含實時核心原始檔。
RTOS程式碼的核心包含在三個檔案中:tasks.c、queue.c、list.c。這三個檔案位於FreeRTOS/Source目錄。在該目錄下還包含三個可選的檔案:timers.c、event_groups.c、croutine.c,分別實現軟體定時、事件組和協程功能。
開啟Source資料夾,FreeRTOS/Source
-
includeFreeRTOS核心程式碼標頭檔案。
-
portable面向特定環境的介面描述。
-
以及前面所述的6個檔案。
應用平臺的不同,所以每個支援的處理器架構都有一段與處理器架構相關的RTOS程式碼。這個是RTOS移植層,它位於FreeRTOS/Source/Portable/[相應編譯器]/[相應CPU架構]子目錄。
對於FreeRTOS,堆疊設計也屬於移植層。FreeRTOS/Source/portable/MemMang目錄下heap_x.c檔案給出了多種堆疊方案,後續文章將會詳細介紹堆疊操作。
如果FreeRTOS在IAR環境下移植到STM32F103平臺則為需要移植
開啟Demo資料夾,其中包含各種處理器架構和編譯器的演示例程。大多數的演示例程程式碼對所有移植都是通用的,位於FreeRTOS/Demo/Common/Minimal目錄。Demo目錄下剩餘的子目錄包含預先配置好的工程,可以用於構建個人演示例程。子目錄的命名與移植平臺和編譯器相關。如果我們檢視在IAR環境下STM32F103平臺演示工程,則可以檢視\FreeRTOS\Demo\CORTEX_STM32F103_IAR目錄。
3、開啟簡單的快樂之旅
有了以上的瞭解我們現在通過Demo簡單學習一下,在IAREWARM開發環境中開啟\FreeRTOS\Demo\CORTEX_STM32F103_IAR目錄下的RTOSDemo.eww工程。
該專案開啟後的檔案組織形式如下:
編譯該工程,該Demo專案在IAR EWARMV6.4平臺下編譯無錯誤:
下載到STM32F103VET6目標MCU執行正確。至此,測試Demo專案正確。