FreeRTOS系列第2篇---FreeRTOS入門(mén)指南
前言
FreeRTOS可以被移植到很多不同架構(gòu)的處理器和編譯器。每一個(gè)RTOS移植都附帶一個(gè)已經(jīng)配置好的演示例程,可以方便快速啟動(dòng)開(kāi)發(fā)。更好的是,每個(gè)演示例程都附帶一個(gè)說(shuō)明網(wǎng)頁(yè),提供如何定位RTOS演示工程源代碼、如何編譯演示例程、如何配置硬件平臺(tái)的全部信息。
演示例程說(shuō)明網(wǎng)頁(yè)還提供基本的RTOS移植細(xì)節(jié)信息,包括如何編寫(xiě)FreeRTOS兼容的中斷服務(wù)例程,不同架構(gòu)的中斷處理會(huì)稍有不同。
通過(guò)下面的簡(jiǎn)單說(shuō)明,可以在幾分鐘內(nèi)運(yùn)行RTOS。
1.查找相關(guān)文檔頁(yè)
FreeRTOS具有詳細(xì)的開(kāi)發(fā)說(shuō)明文檔,可以在其官方網(wǎng)站上查看。首先打開(kāi)官方網(wǎng)站,目前的網(wǎng)站地址是:http://www.freertos.org。在首頁(yè)左側(cè)的導(dǎo)航欄中,展開(kāi)"Supported Devices & Demos"菜單項(xiàng),單擊"OfficiallySupported Demos"鏈接,去查看FreeRTOS支持的微控制器制造商列表。單擊微控制器制造商名稱(chēng),進(jìn)入具體的制造商文檔頁(yè)面列表。
2.獲取RTOS源代碼
到FreeRTOS官方網(wǎng)站下載源碼,下載包包含RTOS內(nèi)核源碼和官方移植演示工程。解壓縮后放到合適的目錄下。(如果你不想訪(fǎng)問(wèn)慢吞吞的國(guó)外網(wǎng)站,我在CSDN做了一個(gè)鏡像,可以 點(diǎn)擊此處 ,這篇文章中有最新的大部分FreeRTOS源碼包下載鏈接)
每一個(gè)RTOS移植包都附帶有預(yù)先配置好的演示例程 ,已經(jīng)創(chuàng)建好了所有必須的RTOS源文件并包含了必須的RTOS頭文件。推薦在提供的演示例程的基礎(chǔ)上進(jìn)行自己的FreeRTOS應(yīng)用編程。
3.FreeRTOS源碼目錄結(jié)構(gòu)
FreeRTOS下載包中包含每個(gè)處理器移植和演示例程的源碼。將所有移植包放入一個(gè)下載文件中大大簡(jiǎn)化了分類(lèi)處理,但是下載包中的文件數(shù)量也多的驚人!無(wú)論如何,目錄結(jié)構(gòu)還是非常簡(jiǎn)單的,并且FreeRTOS實(shí)時(shí)內(nèi)核僅僅只有3個(gè)文件(如果需要,還有一些附加文件,比如軟件定時(shí)器、事件組以及協(xié)程)。
下載包目錄包含兩個(gè)子目錄:FreeRTOS和FreeRTOS-Plus。如下所示:
-
FreeRTOS-Plus 包含F(xiàn)reeRTOS+組件和演示例程; -
FreeRTOS 包含F(xiàn)reeRTOS實(shí)時(shí)內(nèi)核源文件和演示例程。
FreeRTOS-Plus目錄樹(shù)包含多個(gè)自述文件(Readme)。接下來(lái)本文只描述FreeRTOS內(nèi)核的核心源文件和演示例程,它們又被分成兩個(gè)主要的子目錄,如下所示:
FreeRTOS
|+-- Demo 包含演示例程工程;
|+-- Source 包含實(shí)時(shí)內(nèi)核源文件。
RTOS代碼的核心包含在三個(gè)文件中:tasks.c、queue.c、list.c。這三個(gè)文件位于FreeRTOS/Source目錄。在該目錄下還包含三個(gè)可選的文件:timers.c、event_groups.c、croutine.c,分別實(shí)現(xiàn)軟件定時(shí)、事件組和協(xié)程功能。
「FreeRTOS/Source目錄結(jié)構(gòu)如下所示:」
FreeRTOS
| +-- Source FreeRTOS內(nèi)核代碼文件
| |+-- include FreeRTOS內(nèi)核代碼頭文件
| |+-- Portable 處理器特定代碼
| | |+--Compiler x 支持編譯器x的所有移植包
| | |+--Compiler y 支持編譯器y的所有移植包
| | |+--MemMang 內(nèi)存堆實(shí)現(xiàn)范例
每個(gè)支持的處理器架構(gòu)需要一小段與處理器架構(gòu)相關(guān)的RTOS代碼。這個(gè)是RTOS移植層,它位于FreeRTOS/Source/Portable/[相應(yīng)編譯器]/[相應(yīng)CPU架構(gòu)]子目錄。
對(duì)于FreeRTOS,堆棧設(shè)計(jì)也屬于移植層。FreeRTOS/Source/portable/MemMang目錄下heap_x.c文件給出了多種堆棧方案,后續(xù)文章將會(huì)詳細(xì)介紹堆棧操作。
「移植層目錄舉例:」
-
如果在GCC編譯器下使用TriCore1782:TriCore特定文件(port.c)位于FreeRTOS/Source/Portable/GCC/TriCore_1782目錄下。FreeRTOS/Source/Portable 子目錄下的所有文件,除了FreeRTOS/Source/Portable/MemMang目錄外都可以忽略或刪除。 -
如果在IAR編譯器下使用Renesas RX600:RX600特定文件(port.c)位于FreeRTOS/Source/Portable/IAR/RX600目錄下。FreeRTOS/Source/Portable 子目錄下的所有文件,除了FreeRTOS/Source/Portable/MemMang目錄外都可以忽略或刪除。
FreeRTOS下載包中還包含各種處理器架構(gòu)和編譯器的演示例程。大多數(shù)的演示例程代碼對(duì)所有移植都是通用的,位于FreeRTOS/Demo/Common/Minimal目錄。FreeRTOS/Demo/Common/Full目錄下的是歷史遺留代碼,僅用于PC。
「FreeRTOS/Demo目錄結(jié)構(gòu)如下所示:」
FreeRTOS
|+-- Demo
| |+-- Common 所有例程都可以使用的演示例程文件
| |+-- Dir x 用于x平臺(tái)的演示例程工程文件
| |+-- Dir y 用于y平臺(tái)的演示例程工程文件
FreeRTOS/Demo目錄下剩余的子目錄包含預(yù)先配置好的工程,可以用于構(gòu)建個(gè)人演示例程。子目錄的命名與移植平臺(tái)和編譯器相關(guān)。每一個(gè)RTOS移植包都有自己的說(shuō)明文檔。
「演示例程目錄舉例:」
-
如果以英飛凌TriBoard開(kāi)發(fā)板硬件構(gòu)建TriCoreGCC演示例程:TriCore演示例程工程文件位于FreeRTOS/Demo/TriCore_TC1782_TriBoard_GCC目錄。目錄FreeRTOS/Demo下的所有子目錄(Common目錄除外)都可以忽略或刪掉。 -
如果以RX62N硬件構(gòu)建Renesas RX600 IAR演示例程:IAR工程文件位于FreeRTOS/Demo/RX600_RX62N-RDK_IAR目錄。目錄FreeRTOS/Demo下的所有子目錄(Common目錄除外)都可以忽略或刪掉。
4.編譯工程
根據(jù)上一節(jié)FreeRTOS源碼目錄結(jié)構(gòu)說(shuō)明的RTOS演示工程的所在的位置,打開(kāi)并編譯演示工程。
5.運(yùn)行演示例程
演示例程附帶的說(shuō)明網(wǎng)頁(yè)會(huì)介紹如何配置硬件、下載程序和執(zhí)行演示例程。說(shuō)明網(wǎng)頁(yè)還會(huì)提供演示例程的功能信息,這樣你就可以判斷演示例程執(zhí)行是否正確。
本文已獲取「CSDN」作者獨(dú)家授權(quán),請(qǐng)勿二次轉(zhuǎn)載,請(qǐng)獲取作者授權(quán)。 聲明:本公眾號(hào)授權(quán)轉(zhuǎn)載本文僅傳播相關(guān)知識(shí),無(wú)任何盈利和商業(yè)行為,部分內(nèi)容有刪改。 原文地址:https://blog.csdn.net/zhzht19861011/article/details/49819309 作者:zhzht19861011
推薦閱讀
(點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)
【編程之美】用C語(yǔ)言實(shí)現(xiàn)狀態(tài)機(jī)(實(shí)用)
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀(guān)點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!