1、FreeRTOS目录结构
(1)官网下载FreeRTOS源码。
(2)FreeRTOS源码目录树。(由目录树生成工具zDirTree生成)
E:\RTOS\官方源码\FreeRTOSv202212.01
├FreeRTOS
│ ├Demo // 预先制作好的示例工程
│ │ ├CORTEX_STM32F103_Keil // STM32F103在keil环境下的工程文件
│ │ │ ├FreeRTOSConfig.h
│ │ │ ├...
│ ├License
│ ├Source
│ │ ├croutine.c // 核心文件
│ │ ├event_groups.c // 核心文件
│ │ ├list.c // 核心文件
│ │ ├queue.c // 核心文件
│ │ ├stream_buffer.c // 核心文件
│ │ ├tasks.c // 核心文件
│ │ ├timers.c // 核心文件
│ │ ├include
│ │ ├portable // 移植时需要实现的文件
│ │ │ ├MemMang // 内存管理
│ │ │ │ ├heap_1.c
│ │ │ │ ├heap_2.c
│ │ │ │ ├heap_3.c
│ │ │ │ ├heap_4.c
│ │ │ │ ├heap_5.c
│ │ │ │ ├ReadMe.url
│ │ │ ├RVDS // IDE为RVD或keil
│ │ │ │ ├ARM_CM3 // CortexM3架构
│ │ │ │ │ ├port.c
│ │ │ │ │ ├portmacro.h
│ ├Test
(3)Demo目录。
- Demo目录下是示例工程文件,以“芯片和编译器”组合成一个名字。
- 比如:CORTEX_STM32F103_Keil。
(4)Source目录。
- Source根目录下是核心文件,这些文件是通用的。
- Source/portable目录下是移植时需要实现的文件,目录名为:编译器/架构。比如:RVDS/ARM_CM3,这表示cortexM3架构在RVDS工具上的移植文件
2、核心文件
(1)FreeRTOS的最核心文件只有2个。
- FreeRTOS/Source/tasks.c
- FreeRTOS/Source/list.c
(2)其他文件的作用也一起列表如下:
FreeRTOS/Source/xx文件 | 作用 |
tasks.c | 必须,任务操作 |
list.c | 必须,列表 |
queue.c | 基本必需,提供队列操作、信号量(semaphore)操作 |
timer.c | 可选,software timer |
event_groups.c | 可选,提供event group功能 |
croutine.c | 可选,过时了 |
3、移植时涉及的文件
(1)移植FreeRTOS时涉及的文件放在 FreeRTOS/Source/portable/[compiler]/[architecture] 目录
下,比如:RVDS/ARM_CM3,这表示cortexM3架构在RVDS或Keil工具上的移植文件。
(2)里面有2个文件。
- port.c
- portmacro.h
4、头文件相关
4.1、头文件目录
(1)FreeFTOS需要3个头文件目录。
- FreeRTOS本身的头文件:FreeRTOS/Source/include
- 移植时用到的头文件:FreeRTOS/Source/portable/[compiler]/[architecture]
- 含有配置文件FreeRTOSConfig.h的目录
4.2、头文件作用
头文件 | 作用 |
FreeRTOSConfig.h | FreeRTOS的配置文件,比如选择调度算法:configUSE_PREEMPTION 每个demo都必定含有FreeRTOSConfig.h |
FreeRTOS.h | 用FreeRTOS API函数时,必须包含此文件。 在FreeRTOS.h之后,再去包含其他头文件,比如: task.h、queue.h、semphr.h、event_group.h |
5、内存管理
(1)文件在 FreeRTOS/Source/portable/MemMang 下,它也是放在 portable 目录下,表示你可以提供自己的函数。文章来源:https://www.toymoban.com/news/detail-657448.html
(2)源码中默认提供了5个文件,对应内存管理的5种方法。文章来源地址https://www.toymoban.com/news/detail-657448.html
文件 | 优点 | 缺点 |
heap_1.c | 分配简单,时间确定 | 只分配、不回收 |
heap_2.c | 动态分配、最佳匹配 | 碎片、时间不定 |
heap_3.c | 调用标准库函数 | 速度慢、时间不定 |
heap_4.c | 相邻空闲内存可合并 | 可解决碎片问题、时间不定 |
heap_5.c | 在heap_4基础上支持分隔的内存块 | 可解决碎片问题、时间不定 |
到了这里,关于二、FreeRTOS目录文件概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!