FreeRTOS各个目录的功能简介
1. Demo目录:这个目录下主要包含了大量官方支持的微控制器和不同平台上的项目,包括常用的stm32和keil平台下进行开发的项目。我主要使用的是CORTEX_STM32F103_Keil和common两个目录,对系统进行精简的话可以只保留这两个目录,其他大量的目录都可以删除。在删除前一定要选择好自己的微控制器和平台。
2. Source目录:这个目录包含了FreeRTOS内核的源代码。
include-包含FreeRTOS内核的头文件,这是使用FreeRTOS的API和数据类型的必要文件。
portable-包含针对特定处理器体系结构的移植层代码,每个处理器体系结构一般都有对应的子目录,如ARM、MIPS、Xilinx等。这是将FreeRTOS移植到特定平台的必要文件。里面选择开发的微处理器内核和工具,选用RVDS和选用的是stm32f103选用的是ARM-M3架构,所以只需保留这个RVDS里面的ARM_CM3目录就行。另外一个目录是MenMang,是进行内存管理的,里面包含的文件有heap,五个heap分别为:
- heap_1 —— 最简单,不允许释放内存。
- heap_2—— 允许释放内存,但不会合并相邻的空闲块。
- heap_3 —— 简单包装了标准 malloc() 和 free(),以保证线程安全。
- heap_4 —— 合并相邻的空闲块以避免碎片化。 包含绝对地址放置选项。
- heap_5 —— 如同 heap_4,能够跨越多个不相邻内存区域的堆。
3. Tools目录:这个目录包含一些工具和脚本,用于构建、调试和测试FreeRTOS应用,可以删除。
4. FreeRTOS-Plus目录:是生态文件可以删除的
FreeRTOS移植文件
FreeRTOS的最核心文件只有2个: FreeRTOS/Source/tasks.c和 FreeRTOS/Source/list.c
其他文件有:
FreeRTOS/Source/下的文件 | 作用 |
tasks.c | 必需,任务操作 |
list.c | 必须,列表 |
queue.c | 基本必需,提供队列操作、信号量(semaphore)操作 |
timer.c | 可选,software timer |
event_groups.c | 可选,提供event group功能 |
croutine.c | 可选,过时 |
FreeRTOS需要3个头文件目录:
- FreeRTOS本身的头文件:FreeRTOS/Source/include
- 移植时用到的头文件:FreeRTOS/Source/portable/[compiler]/[architecture]
- 含有配置文件FreeRTOSConfig.h的目录
头文件 | 作用 |
FreeRTOSConfig.h | FreeRTOS的配置文件,比如选择调度算法:configUSE_PREEMPTION 每个demo都必定含有FreeRTOSConfig.h 建议去修改demo中的FreeRTOSConfig.h,而不是从头写一个 |
FreeRTOS.h | 使用FreeRTOS API函数时,必须包含此文件。 在FreeRTOS.h之后,再去包含其他头文件,比如: task.h、queue.h、semphr.h、event_group.h |
Demo目录下是预先配置好的、没有编译错误的工程。目的是让你可以基于它进行修改,以适配你的单板。 这些Demo还可以继续精简:
Demo/Common 中的文件可以完全删除
main函数中只需要保留2个函数:
prvSetupHardware()
vTaskStartScheduler()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?