FreeRTOS系列|FreeRTOS简介
生活随笔
收集整理的這篇文章主要介紹了
FreeRTOS系列|FreeRTOS简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
FreeRTOS簡介
1. RTOS簡介
RTOS全稱為 Real Time Operation System,即實時操作系統。RTOS強調的是實時性,又分為硬實時和軟實時。硬實時要求在規定的時間內必須完成操作,不允許超時;而軟實時里對處理過程超時的要求則沒有很嚴格。RTOS的核心就是任務調度
RTOS的多個工作流如下圖示:
RTOS工作原理如下圖示:
RTOS通用組件如下圖示:
RTOS的特點:
- 更好的事件實時處理機制
- 更高效利用CPU資源
- 通用的任務管理框架
2. FreeRTOS介紹
FreeRTOS是RTOS的一種,尺寸非常小,可運行于微控制器上。微控制器是尺寸小,資源受限的處理器,它在單個芯片上包含了處理器本身、用于保存要執行的程序的只讀存儲器(ROM或Flash)、所執行程序需要的隨機存取存儲器(RAM),一般情況下程序直接從只讀存儲器執行
微控制器用于深度嵌入式應用,一般都有非常明確、專門的工作。尺寸的限制以及專用的終端應用等性質,令其很少能使用完整的RTOS實現。因此FreeRTOS僅為內核提供了實時調度功能、任務間通信、時序和同步原語。更準確地說,它是一個實時內核,或實時執行器。命令控制臺界面、網絡棧等額外的功能可作為附加組件
在實際使用FreeRTOS的時候我們需要根據自已的需求來配置FreeRTOS,不同架構的MCU在使用的時候配置也不同,下面介紹FreeRTOS配置文件詳解
- 內核配置一
| USE_PREEMPTION | 定義調度器模式 |
| CPU_CLOCK_HZ | 定義CPU的主頻 |
| TICK_RATE_HZ | 定義系統時鐘節拍數 |
| MAX_PRIORITIES | 定義可供用戶使用的最大優先級數 |
| MINIMAL_STACK_SIZE | 定義空閑任務的??臻g大小 |
| MAX_TASK_NAME_LEN | 定義任務名最大的字符數 |
| USE_16_BIT_TICKS | 系統時鐘節拍計數使用TickType_t數據類型定義 |
| IDLE_SHOULD_YIELD | 用于使能與空閑任務同優先級的任務 |
- 內核配置二
| USE_MUTEXES | 用于使能互斥鎖 |
| USE_RECURSIVE_MUTEXES | 用于使能遞歸互斥鎖 |
| USE_COUNTING_SEMAPHORES | 用于使能計數信號量 |
| QUEUE_REGISTRY_SIZE | 用于設置可以注冊的信號量和消息隊列個數 |
| USE_APPLICATION_TASK_TAG | 用于使能任務標記 |
| ENABLE_BACKWARD_COMPATIBILITY | 用于使能新版本對老版本的兼容特性 |
| USE_PORT_OPTIMISED_TASK_SELECTION | 用于優化優先級列表中藥執行的最高優先級任務的算法 |
| USE_TICKLESS_IDLE | 用于使能tickless低功耗模式 |
| USE_TASK_NOTIFICATIONS | 使能任務間直接的消息傳遞,包括信號量、事件標志組和消息郵箱 |
- 內存管理
| MEMORY_ALLOCATION | 定義內存分配模式 |
| TOTAL_HEAP_SIZE | 定義動態內存分配總長度 |
| HEAP_NUMBER | 定義動態內存管理方式 |
- 任務運行信息獲取配置
| GENERATE_RUN_TIME_STATS | 用于使能任務運行狀態參數統計 |
| USE_TRACE_FACILITY | 使能此配置將添加額外的結構體成員和函數 |
| USE_STATS_FORMATTING_FUNCTIONS | 用戶配置宏定義 configUSE_TRACE_FACILITY 和configUSE_STATS_FORMATTING_FUNCTIONS都為 1 的時候,將使能函數 vTaskList() 和 vTaskGetRunTimeStats(),如果兩者中任何一個為 0,那么這兩個函數都將被禁能 |
- 軟件定時器
| USE_TIMERS | 用于使能軟件定時器 |
- 中斷優先級
| LIBRARY_LOWEST_INTERRUPT_PRIORITY | 用于配置 FreeRTOS 用到的 SysTick 中斷和 PendSV 中斷的優先級 |
| LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY | 定義了受 FreeRTOS 管理的最高優先級中斷 |
- 函數Include配置
| vTaskPrioritySet | 設置任務優先級 |
| uxTaskPriorityGet | 獲取任務優先級 |
| vTaskDelete | 任務刪除 |
| vTaskCleanUpResources | 清理任務資源 |
| vTaskSuspend | 任務掛起 |
| vTaskDelayUntil | 任務絕對延時 |
| vTaskDelay | 任務延時 |
| xTaskGetSchedulerState | 獲取調度器狀態 |
| xTaskResumeFromISR | 在中斷中恢復任務 |
| xQueueGetMutexHolder | 獲取互斥鎖持有者 |
| pcTaskGetTaskName | 獲取任務名稱 |
| uxTaskGetStackHighWaterMark | 獲取任務堆棧信息 |
| xTaskGetCurrentTaskHandle | 獲取當前任務句柄 |
| eTaskGetState | 獲取任務狀態 |
| xEventGroupSetBitFromISR | 在中斷中設置事件標志組 |
| xTimerPendFunctionCall | 定時器掛起后回調函數 |
| xTaskAbortDelay | 終止任務延時 |
| xTaskGetHandle | 獲取任務句柄 |
總結
以上是生活随笔為你收集整理的FreeRTOS系列|FreeRTOS简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绕过微软WGA正版验证(蓝色五角星)的几
- 下一篇: SQL Server研习录(08)——L