FreeRTOS筆記篇:第一章 描述
FREERTOSY一級目錄解釋
下載的版本為10.4.1
包含一個原始碼+程式碼案例
程式碼結構
-
tasks.c && list.c
-
queue.c 提供佇列和訊號量服務
-
timers.c 提供了軟體計時器功能
-
event_groups.c 提供了事件組功能
-
croutine.c 實現了FreeRTOS協同例程功能 (很少使用)
因為檔案多了會有衝突 ,所以將C和H放在一個資料夾裡面。
portable
特定於FreeRTOS埠的原始檔包含在FreeRTOS/Source/portable目錄中。
MemMang–FreeRTOS 記憶體分配案例
例項堆分配方案包含在FreeRTOS\Source\portable\MemMang
編譯必須要包含的3個頭檔案
- FreeRTOS/Source/include.(核心FreeRTOS標頭檔案的路徑)
- FreeRTOS/Source/portable/[compiler]/[architecture].(你所使用晶片編譯器+架構)
- FreeRTOSConfig.h(配置標頭檔案)
程式碼案例
- 提供一個工作和預配置專案的示例,其中包含正確的檔案,並設定了正確的編譯器選項。
- 以最小的設定或先驗知識進行“開箱即用”實驗。
- 以演示FreeRTOS API的使用方法
- 作為建立實際應用程式的基礎。
FreeRTOS/Demo/Common/Minimal directory
常見的演示任務純粹是為了演示如何使用FreeRTOS API——它們沒有實現任何特別有用的功能
如何建一個新的工程-和linux的很像
建議通過調整其中一個現有專案來建立新的專案
可以從一下幾個步驟
-
開啟提供的演示專案,確保按照預期構建和執行。
-
刪除定義演示任務的原始檔。目錄中的任何檔案演示/公共目錄可以從專案中刪除。
-
刪除main()中的所有函式呼叫,prvSetupHardware()vTaskStartScheduler()除外,如清單1所示。
-
檢查仍在構建的專案(再編譯一下)。
創造一個全新的專案
- 使用您選擇的工具鏈,建立一個尚未包含任何工具鏈的新專案
FreeRTOS原始檔 - 確保可以構建、下載到目標硬體並執行新專案。
- 只有當您確定您已經有一個工作專案時,才將表1中詳細說明的FreeRTOS原始檔新增到專案中。
- 將演示專案為使用中的埠提供的FreeRTOSConfig.h標頭檔案複製到專案目錄中。
- 新增標頭檔案資訊
1 。 FreeRTOS/Source/include
2 。 FreeRTOS/Source/portable/[compiler]/[architecture] (where [compiler] and [architecture] are correct for your chosen port)
3。The directory containing the FreeRTOSConfig.h header file - 從相關的參考程式碼專案複製編譯器設定。
- 安裝任何FreeRTOS中斷處理程式可能是必要的。使用描述正在使用的埠的web頁面,以及為正在使用的埠提供的演示專案作為參考。
注意!!!版本比9.0要老的必須要建立heap.c 檔案
資料型別和程式設計風格
TickType_t
時鐘資料型別 可以定義為16(short) 或者是32位(int)的型別
上面的定義取決於 configUSE_16_BIT_TICKS
這個的資料型別配置是在
source -》portable-> xxx ->prtmacro.h
使用16位型別可以大大提高8位和16位架構的效率但是嚴重限制了可以指定的最大塊週期。沒有理由在32位架構上使用16位型別.
BaseType_t
BaseType_t通常用於返回型別,這些型別只能佔用非常有限的值範圍,並且用於pd TRUE/pd FALSE型別Booleans。
變數名稱定義規則
- 變數是無符號的 就是用u 作為字首
- 如果變數是指標,那麼就是使用p作為字首
- 如果是uint8_t 就已uc作為字首
- 如果是有符號的 就pc作為字首。
函式名稱定義規則
函式的字首包括它們返回的型別和定義它們的檔案
- vTaskPrioritySet() returns a void and is defined within task.c
- xQueueReceive() returns a variable of type BaseType_t and is defined within queue.c.
- pvTimerGetTimerID() returns a pointer to void and is defined within timers.c
- 檔案作用域(私有)函式的字首是’ prv ’
- 一個選項卡總是設定為等於四個空格。
- 巨集命令規則: 大多數巨集都以大寫形式編寫,並以小寫字母作為字首,這些字母指示巨集定義的位置。
陌生單詞
aims
orientate
structure
approximately
compilers
implements
clashes
allocation
respectively
dynamic
Occasionally
hierarchy
mentioned
prefixed
semaphore
陌生語句
- Each supported combination of compiler and processor is considered to be a separate FreeRTOS port.
注意:of 的話要先翻譯後面的 編譯器處理器的結合
每個支援的編譯器和處理器組合都被認為是一個獨立的FreeRTOS埠