10.1.1. FreeRTOS概述

10.1.1.1. FreeRTOS目录结构

../../_images/tree_0.png ../../_images/tree_1.png
  • Demo: 工程文件,以”芯片和编译器”组成一个名字

  • Source

    • 根目录下是核心文件,这些文件是通用的

    • portable: 目录下是移植时需要实现的文件

10.1.1.2. 核心文件

FreeRTOS最核心的文件有两个

  • FreeRTOS/Source/tasks.c

  • FreeRTOS/Source/list.c

Source目录文件

作用

tasks.c

必需,任务操作

list.c

必需,列表

queue.c

基本必需,提供队列操作,信号量操作

timer.c

可选,software timer

event_groups.c

可选,提供event group功能

croutine.c

可选,已过时

10.1.1.3. 移植时涉及的文件

移植FreeRTOS时涉及的文件放在 FreeRTOS/Source/portable/[compiler]/[architecture] 目录下

需要关注 port.c portmacro,h

10.1.1.4. 头文件

  • FreeRTOS本身的头文件: FreeRTOS/Source/include

  • 移植时用到的头文件: FreeRTOS/Source/portable/[compiler]/[architecture]

  • 含有配置文件FreeRTOSConfig.h目录

头文件

作用

FreeRTOSConfig.h

FreeRTOS配置文件,比如选择调度算法

FreeRTOS.h

使用FreeRTOS API函数时,必须包含此文件,然后再去包含其他头文件,如task.h queue.h

10.1.1.5. 内存管理

文件在 FreeRTOS/Source/portable/MemMang ,它也是放在 portable 目录下,表示你可以提供自己的函数.源码中默认提供了 5个文件,对应内存管理的5种方法

文件

优点

缺点

heap_1.c

分配简单,时间确定

只分配,不回收

heap_2.c

动态分配,最佳匹配

碎片,时间不确定

heap_3.c

调用标准库函数

速度慢,时间不定

heap_4.c

相邻空闲内存可合并

可解决碎片问题,时间不定

heap_5.c

在heap_4基础上支持分割的内存块

可解决碎片问题,时间不定

10.1.1.6. Demo

Demo目录下是预先配置好的,没有编译错误的工程,目的是让你可以基于它进行修改,以适配你的单板