二、FreeRTOS目录文件概述

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
建议去修改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 目录下,表示你可以提供自己的函数。

(2)源码中默认提供了5个文件,对应内存管理的5种方法。

文件优点缺点
heap_1.c分配简单,时间确定只分配、不回收
heap_2.c动态分配、最佳匹配碎片、时间不定
heap_3.c调用标准库函数速度慢、时间不定
heap_4.c相邻空闲内存可合并可解决碎片问题、时间不定
heap_5.c在heap_4基础上支持分隔的内存块可解决碎片问题、时间不定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码织梦师小猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值