網(wǎng)站首頁 編程語言 正文
?FreeRTOS可以被移植到很多不同架構(gòu)的處理器和編譯器。每一個RTOS移植都附帶一個已經(jīng)配置好的演示例程,可以方便快速啟動開發(fā)。更好的是,每個演示例程都附帶一個說明網(wǎng)頁,提供如何定位RTOS演示工程源代碼、如何編譯演示例程、如何配置硬件平臺的全部信息。
? ? ? 演示例程說明網(wǎng)頁還提供基本的RTOS移植細節(jié)信息,包括如何編寫FreeRTOS兼容的中斷服務例程,不同架構(gòu)的中斷處理會稍有不同。
? ? ? 通過下面的簡單說明,可以在幾分鐘內(nèi)運行RTOS。
1.查找相關文檔頁
FreeRTOS具有詳細的開發(fā)說明文檔,可以在其官方網(wǎng)站上查看。首先打開官方網(wǎng)站,目前的網(wǎng)站地址是:http://www.freertos.org。在首頁左側(cè)的導航欄中,展開"Supported Devices & Demos"菜單項,單擊"OfficiallySupported Demos"鏈接,去查看FreeRTOS支持的微控制器制造商列表。單擊微控制器制造商名稱,進入具體的制造商文檔頁面列表。
2.獲取RTOS源代碼
到FreeRTOS官方網(wǎng)站下載源碼,下載包包含RTOS內(nèi)核源碼和官方移植演示工程。解壓縮后放到合適的目錄下。(如果你不想訪問慢吞吞的國外網(wǎng)站,我在CSDN做了一個鏡像,可以 點擊此處 ,這篇文章中有最新的大部分FreeRTOS源碼包下載鏈接)
? ? ? ?每一個RTOS移植包都附帶有預先配置好的演示例程 ,已經(jīng)創(chuàng)建好了所有必須的RTOS源文件并包含了必須的RTOS頭文件。推薦在提供的演示例程的基礎上進行自己的FreeRTOS應用編程。
3.FreeRTOS源碼目錄結(jié)構(gòu)
FreeRTOS下載包中包含每個處理器移植和演示例程的源碼。將所有移植包放入一個下載文件中大大簡化了分類處理,但是下載包中的文件數(shù)量也多的驚人!無論如何,目錄結(jié)構(gòu)還是非常簡單的,并且FreeRTOS實時內(nèi)核僅僅只有3個文件(如果需要,還有一些附加文件,比如軟件定時器、事件組以及協(xié)程)。
? ? ? 下載包目錄包含兩個子目錄:FreeRTOS和FreeRTOS-Plus。
FreeRTOS-Plus ? ? ? ? ?包含F(xiàn)reeRTOS+組件和演示例程;
FreeRTOS ? ? ? ? ? ? ? ? ? 包含F(xiàn)reeRTOS實時內(nèi)核源文件和演示例程。
FreeRTOS-Plus目錄樹包含多個自述文件(Readme)。接下來本文只描述FreeRTOS內(nèi)核的核心源文件和演示例程,它們又被分成兩個主要的子目錄,如下所示:
? ? FreeRTOS
? ? ? |+-- Demo ? ? 包含演示例程工程;
? ? ? |+-- Source ? 包含實時內(nèi)核源文件。? ??
RTOS代碼的核心包含在三個文件中:tasks.c、queue.c、list.c。這三個文件位于FreeRTOS/Source目錄。在該目錄下還包含三個可選的文件:timers.c、event_groups.c、croutine.c,分別實現(xiàn)軟件定時、事件組和協(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)存堆實現(xiàn)范例? ? ??
每個支持的處理器架構(gòu)需要一小段與處理器架構(gòu)相關的RTOS代碼。這個是RTOS移植層,它位于FreeRTOS/Source/Portable/[相應編譯器]/[相應CPU架構(gòu)]子目錄。
對于FreeRTOS,堆棧設計也屬于移植層。FreeRTOS/Source/portable/MemMang目錄下heap_x.c文件給出了多種堆棧方案,后續(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ù)的演示例程代碼對所有移植都是通用的,位于FreeRTOS/Demo/Common/Minimal目錄。FreeRTOS/Demo/Common/Full目錄下的是歷史遺留代碼,僅用于PC。
? ? ? FreeRTOS/Demo目錄結(jié)構(gòu)如下所示:
? ? FreeRTOS
? ? ? |+-- Demo
? ? ? | ?|+-- Common ? ? ? ? ?所有例程都可以使用的演示例程文件
? ? ? | ?|+-- Dir x ? ? ? ? ? 用于x平臺的演示例程工程文件
? ? ? | ?|+-- Dir y ? ? ? ? ? 用于y平臺的演示例程工程文件? ? ?
FreeRTOS/Demo目錄下剩余的子目錄包含預先配置好的工程,可以用于構(gòu)建個人演示例程。子目錄的命名與移植平臺和編譯器相關。每一個RTOS移植包都有自己的說明文檔。
演示例程目錄舉例:
如果以英飛凌TriBoard開發(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)說明的RTOS演示工程的所在的位置,打開并編譯演示工程。
5.運行演示例程
演示例程附帶的說明網(wǎng)頁會介紹如何配置硬件、下載程序和執(zhí)行演示例程。說明網(wǎng)頁還會提供演示例程的功能信息,這樣你就可以判斷演示例程執(zhí)行是否正確。
原文鏈接:https://freertos.blog.csdn.net/article/details/49819309
相關推薦
- 2022-12-29 解決React?hook?'useState'?cannot?be?called?in?a?clas
- 2022-11-02 Go?語言簡單實現(xiàn)Vigenere加密算法_Golang
- 2022-11-22 ubuntu20.04中vscode使用ROS的詳細方法_C 語言
- 2022-07-21 python logging模塊使用介紹
- 2022-11-16 python中內(nèi)置類型添加屬性問題詳解_python
- 2022-04-25 Golang將Map的鍵值對調(diào)的實現(xiàn)示例_Golang
- 2022-11-27 Python?OpenCV實現(xiàn)圖像增強操作詳解_python
- 2022-11-14 C#中對集合排序的三種方式_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支