日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FreeRTOS 教程指南 学习笔记 第一章 简介

發(fā)布時(shí)間:2023/12/14 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FreeRTOS 教程指南 学习笔记 第一章 简介 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

FreeRTOS 教程指南 學(xué)習(xí)筆記 第一章 簡介

?

本章包含的內(nèi)容有:

  • 幫助用戶使用FreeRTOS文件和目錄,提供FreeRTOS目錄結(jié)構(gòu)的頂級(jí)視圖。
  • 描述任何特定的FreeRTOS項(xiàng)目實(shí)際上需要哪些文件。
  • 介紹了演示應(yīng)用程序。
  • 提供有關(guān)如何創(chuàng)建新項(xiàng)目的信息。
  • 一、了解FreeRTOS

    FreeRTOS可以使用大約20種不同的編譯器來構(gòu)建,并且可以在30多種不同的處理器架構(gòu)上運(yùn)行。每個(gè)受支持的編譯器和處理器的組合都被認(rèn)為是一個(gè)單獨(dú)的FreeRTOS分支。FreeRTOS可以被認(rèn)為是一個(gè)能為裸代碼程序提供多任務(wù)功能的庫文件。

    二、了解FreeRTOS版本

    FreeRTOSConfig.h頭文件是FreeRTOS的主要配置文件,由于FreeRTOSConfig.h包含特定于應(yīng)用程序的定義,因此它應(yīng)該位于正在構(gòu)建的應(yīng)用程序的一部分的目錄中,而不是位于包含F(xiàn)reeRTOS源代碼的目錄中。
    FreeRTOS的目錄結(jié)構(gòu)
    FreeRTOS
    │ │
    │ ├─Source 系統(tǒng)內(nèi)核源文件
    │ │
    │ └─Demo 各分支的實(shí)例代碼

    FreeRTOS-Plus

    ├─Source 第三方庫的源文件,如TCP/IP,JASON等

    └─Demo 實(shí)例代碼
    FreeRTOS內(nèi)核總,最核心的兩個(gè)文件是task.c和list.c文件,只有這兩個(gè)文件是必須的。他們被放在FreeRTOS/Source文件夾下,在相同文件夾下還有:


    └─Source

    ├─tasks.c FreeRTOS source file - always required
    ├─list.c FreeRTOS source file - always required
    ├─queue.c 使系統(tǒng)支持隊(duì)列和信號(hào)量 - nearly always required
    ├─timers.c 使系統(tǒng)支持軟計(jì)時(shí)器 - optional
    ├─event_groups.c 使系統(tǒng)支持事件組等 - optional
    └─croutine.c 使系統(tǒng)支持協(xié)程 - optional
    對(duì)于分支的支持:如果您在使用編譯器“編譯器”的具有架構(gòu)“架構(gòu)”的處理器上運(yùn)行FreeRTOS,那么除了核心的FreeRTOS源文件外,您還必須構(gòu)建位于FreeRTOS/Source/portable/[compiler]/[architecture]目錄中的文件

    正如將在第2章,堆內(nèi)存管理中描述的,FreeRTOS還將堆內(nèi)存分配視為可移植層的一部分。使用早于V9.0.0的FreeRTOS版本的項(xiàng)目必須包含一個(gè)堆內(nèi)存管理器。在FreeRTOS V9.0.0中,只有當(dāng)configSUPPORT_DYNAMIC_ALLOCATION在FreeRTOSConfig.h中設(shè)置為1,或者當(dāng)configSUPPORT_DYNAMIC_ALLOCATION未定義時(shí),才需要堆內(nèi)存管理器。FreeRTOS提供了5個(gè)堆分配方案示例。這五種方案分別命名為heap_1到heap_5,并分別由源文件heap_1.c到heap_5.c實(shí)現(xiàn)。堆分配方案包含在FreeRTOS/Source/portable/MemMang目錄中。如果您已將FreeRTOS配置為使用動(dòng)態(tài)內(nèi)存分配,那么就必須在項(xiàng)目編譯中包含這五個(gè)源文件中的一個(gè),除非您的應(yīng)用程序提供了一個(gè)替代實(shí)現(xiàn)。

    FreeRTOS要求在編譯器的包含路徑中包含三個(gè)目錄。他們是:

  • FreeRTOS內(nèi)核頭文件的路徑,它始終是FreeRTOS/Source/include/。
  • 特定于正在使用的FreeRTOS分支的源文件的路徑。這是FreeRTOS/Source/portable/[compiler]/[architecture]。
  • 指向FreeRTOSConfig.h頭文件的路徑。
  • 如果代碼文件中使用了FreeRTOS API,則必須包含F(xiàn)reeRTOS.h文件,后面緊跟著task.h,timer.h等。例如:
  • /* Scheduler includes. */ #include "FreeRTOS.h" #include "task.h" #include "queue.h" #include "timer.h" #include "event_groups.h"

    三、示例程序

    int main( void ) {/* Perform any hardware setup necessary. */prvSetupHardware();/* --- APPLICATION TASKS CAN BE CREATED HERE --- */vUserTask1();vUserTask2(); vUserTask3();/* Start the created tasks running. */vTaskStartScheduler();/* Execution will only reach here if there was insufficient heap to start the scheduler. */for( ;; );return 0; }

    四、從頭開始創(chuàng)建項(xiàng)目

    建議從現(xiàn)有的演示項(xiàng)目中創(chuàng)建新的項(xiàng)目。如果不需要這樣做,則可以使用以下過程創(chuàng)建一個(gè)新項(xiàng)目:

  • 使用您所選擇的工具鏈,創(chuàng)建一個(gè)尚未包含任何FreeRTOS源文件的新項(xiàng)目。
  • 確保可以編譯新項(xiàng)目,下載到目標(biāo)硬件并執(zhí)行。
  • 只有當(dāng)您確定已經(jīng)有了一個(gè)可以正常在目標(biāo)硬件工作的項(xiàng)目時(shí),才能將FreeRTOS源文件添加到該項(xiàng)目中。
  • 將為正在使用的分支提供的演示項(xiàng)目所使用的FreeRTOSConfig.h頭文件復(fù)制到項(xiàng)目目錄中。
  • 將以下目錄添加到項(xiàng)目將搜索的路徑中,以查找頭文件:
    FreeRTOS/Source/include
    FreeRTOS/Source/portable/[compiler]/[architecture]
    包含F(xiàn)reeRTOSConfig.h文件的目錄
  • 從相關(guān)的演示項(xiàng)目中復(fù)制編譯器設(shè)置。
  • 安裝可能是必要的任何FreeRTOS中斷處理程序。使用相關(guān)資源提供的示例
  • FileLocation
    tasks.cFreeRTOS/Source
    queue.cFreeRTOS/Source
    list.cFreeRTOS/Source
    timers.cFreeRTOS/Source
    event_groups.cFreeRTOS/Source
    event_groups.cFreeRTOS/Source
    All C and assembler filesFreeRTOS/Source/portable/[compiler]/[architecture]
    heap_n.c(n是1~5)FreeRTOS/Source/portable/MemMang

    五、數(shù)據(jù)類型和代碼規(guī)范

    數(shù)據(jù)類型:

    FreeRTOS的每個(gè)分支都有一個(gè)唯一的portmacro.h頭文件,該文件包含兩種端口特定數(shù)據(jù)類型的定義:TickType_t和BaseType_t。
    TickType_t :FreeRTOS配置了一個(gè)被稱為tick interrupt的周期性中斷。自FreeRTOS應(yīng)用程序啟動(dòng)以來發(fā)生的tick interrupt總數(shù)數(shù)稱為tick count。兩次tick interrupt之間的時(shí)間稱為tick period。TickType_t 用于保存周期性中斷的tick count,并確定時(shí)間的數(shù)據(jù)類型。
    TickType_t可以是unsigned 16-bit ,也可以是unsigned 32-bit ,這取決于在FreeRTOSConfig.h中對(duì)configUSE_16_BIT_TICKS的設(shè)置。如果configUSE_16_BIT_TICKS被設(shè)置為1,則TickType_t被定義為uint16_t。如果configUSE_16_BIT_TICKS被設(shè)置為0,則TickType_t被定義為uint32_t。
    使用uint16_t類型可以極大地提高8位和16位處理器的效率,但嚴(yán)重限制了可以指定的最大塊周期。沒有理由在32位處理器上使用uint16_t。
    BaseType_t :總是被定義為處理器中最有效的數(shù)據(jù)類型。通常,這是在32位處理器上的32位類型,在16位體系結(jié)構(gòu)上的16位類型,以及在8位體系結(jié)構(gòu)上的8位類型。BaseType_t通常用于只能取非常有限的值范圍的返回類型,以及pdTRUE/pdFALSE類型的布爾類值。
    一些編譯器把所有所有不合格的字符變量列為無符號(hào),而另一些則使它們列為有符號(hào)。出于這個(gè)原因,FreeRTOS源代碼顯式地限定了“有符號(hào)”或“無符號(hào)”的字符使用,除非字符用于保存ASCII字符,或者指向char的指針用于指向字符串。

    變量命名規(guī)范:

    所有變量命名都有前綴如:
    ‘c’ for char, ‘s’ for int16_t (short), ‘l’ int32_t (long), and ‘x’ for BaseType_t和其他非標(biāo)準(zhǔn)類型 (structures, task handles, queue handles, etc.)
    如果一個(gè)變量為無符號(hào),則它也以“u”作為前綴。如果變量是指針,它也以“p”作為前綴。例如,類型為uint8_t的變量將以“uc”為前綴,類型為字符指針的變量將以“pc”為前綴。
    函數(shù)命名規(guī)范:
    函數(shù)命名的前綴包含了返回類型和它定義在哪里,如:
    vTaskPrioritySet() 返回void定義在task.c中。
    xQueueReceive() 返回BaseType_t定義在queue.c中。
    pvTimerGetTimerID() 返回一個(gè)pointer to void定義在timers.c中。
    文件范圍(private)函數(shù)以“prv”為前綴。

    宏命名:

    大多數(shù)宏都是用大寫寫的,并用小寫字母作為前綴,表示宏的位置。表3提供了一個(gè)前綴的列表。

    PrefixLocation of macro definition
    port (for example, portMAX_DELAY)Location of macro definition
    task (for example, taskENTER_CRITICAL())task.h
    pd (for example, pdTRUE)projdefs.h
    config (for example, configUSE_PREEMPTION)FreeRTOSConfig.h
    err (for example, errQUEUE_FULL)projdefs.h

    請(qǐng)注意,信號(hào)量API幾乎完全是作為一組宏編寫的,但它遵循函數(shù)命名約定,而不是宏命名約定。
    表4中定義的宏在整個(gè)FreeRTOS源代碼中都在使用

    MacroValue
    pdTRUE1
    pdFALSE0
    pdPASS1
    pdFAIL0

    總結(jié)

    以上是生活随笔為你收集整理的FreeRTOS 教程指南 学习笔记 第一章 简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。