1. 程式人生 > >FreeRTOS學習及移植筆記之一:開始FreeRTOS之旅

FreeRTOS學習及移植筆記之一:開始FreeRTOS之旅



1、必要的準備工作

工欲善其事,必先利其器,在開始學習和移植之前,相應的準備工作必不可少。所以在開始我們寫要準備如下:

  • 測試環境:我準備在STM32F103平臺上移植和測試FreeRTOS系統

  • 從官網檢視FreeRTOS每個函式的API說明,以及相應的例子。根據以往的經驗,在學習過程中應該會經常檢視,地址:

2、瞭解FreeRTOS原始檔的目錄結構

下載的FreeRTOS下載包是一個自解壓的檔案,解壓後包含的內容比較豐富,不過不露結構很清晰,主要包含兩個子目錄:FreeRTOSFreeRTOS-Plus。如下所示:

  • FreeRTOS-Plus包含FreeRTOS+元件和演示例程;

  • FreeRTOS包含FreeRTOS實時核心原始檔和演示例程。

我們學習的FreeRTOS核心部分在FreeRTOS目錄之下,開啟FreeRTOS資料夾它又被分成兩個主要的子目錄,如下所示:

  • Demo包含演示例程工程;

  • Source包含實時核心原始檔。

RTOS程式碼的核心包含在三個檔案中:tasks.cqueue.clist.c。這三個檔案位於FreeRTOS/Source目錄。在該目錄下還包含三個可選的檔案:timers.cevent_groups.ccroutine.c,分別實現軟體定時、事件組和協程功能。

開啟Source資料夾,FreeRTOS/Source

目錄結構如下所示:

  • includeFreeRTOS核心程式碼標頭檔案。

  • portable面向特定環境的介面描述。

  • 以及前面所述的6個檔案。

應用平臺的不同,所以每個支援的處理器架構都有一段與處理器架構相關的RTOS程式碼。這個是RTOS移植層,它位於FreeRTOS/Source/Portable/[相應編譯器]/[相應CPU架構]子目錄。

對於FreeRTOS,堆疊設計也屬於移植層。FreeRTOS/Source/portable/MemMang目錄下heap_x.c檔案給出了多種堆疊方案,後續文章將會詳細介紹堆疊操作。

如果FreeRTOSIAR環境下移植到STM32F103平臺則為需要移植

\FreeRTOS\Source\portable\IAR\ARM_CM3目錄下的檔案,除此之外位於\FreeRTOS\Source\portable\MemMang目錄之下的堆疊設計檔案也需要移植。其他部分則可忽略。

開啟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專案正確。