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


1、必要的准備工作

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

  • 測試環境:我准備在STM32F103平台上移植和測試FreeRTOS系統
  • 准備FreeRTOS系統源碼,從官網下載最新版本的程序包,最新為v9.0.0,地址:https://sourceforge.net/projects/freertos/
  • 從官網查看FreeRTOS每個函數的API說明,以及相應的例子。根據以往的經驗,在學習過程中應該會經常查看,地址: http://www.freertos.org/a00106.html

                    

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目錄結構如下所示:

  • include        FreeRTOS內核代碼頭文件。
  • portable              面向特定環境的接口描述。
  • 以及前面所述的6個文件。

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

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

如果FreeRTOS在IAR環境下移植到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簡單學習一下,在IAR EWARM開發環境中打開\FreeRTOS\Demo\CORTEX_STM32F103_IAR目錄下的RTOSDemo.eww工程。

 

該項目打開后的文件組織形式如下:

 

編譯該工程,該Demo項目在IAR EWARM V6.4平台下編譯無錯誤:

 

下載到STM32F103VET6目標MCU運行正確。至此,測試Demo項目正確。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM