FreeRTOS源码文件结构

目录

定义: FreeRTOS端口       

构建FreeRTOS

FreeRTOSConfig.h

FreeRTOS文件结构

所有端口共有的FreeRTOS源文件

特定于端口的FreeRTOS源文件

包含路径

头文件


本文主要内容对应FreeRTOS参考手册第一章的1.2小节的内容,改了一小部分并增加了实例图片。


定义:FreeRTOS端口

        FreeRTOS可以使用大约20种不同的编译器来构建,并且可以在30多种不同的处理器架构上运行每个受支持的编译器和处理器的组合都被认为是一个单独的FreeRTOS端口


构建FreeRTOS

        FreeRTOS可以被认为是一个库,它为裸机程序提供了多任务功能。

        FreeRTOS是作为一组C源文件提供的。有些源文件对所有端口都是通用的,而其他源文件是特定于端口的。将这些源文件作为项目的一部分来构建,以便应用程序可以使用FreeRTOS API。为了方便我们做到这一点,每个官方的FreeRTOS端口都提供了一个演示应用程序。演示程序被预配置为构建正确的源文件,并包含正确的头文件。


FreeRTOSConfig.h

        FreeRTOS是由一个名为FreeRTOSConfig.h的头文件配置的。我们可以根据具体需求来修改这个头文件的内容,以实现对FreeRTOS的裁剪。例如,FreeRTOSConfig.h包含像configUSE_PREEMPTION这样的常量,它的设置定义了是使用合作式调度算法还是抢占式调度算法。由于FreeRTOSConfig.h包含特定于应用程序的定义,因此它应该位于用户自己的应用程序的目录中,而不是位于包含FreeRTOS源代码的目录中也就是说FreeRTOSConfig.h需要由我们自己创建和编写,根据自身需求定义对应的常量,但还是更建议从官方提供的例程中复制FreeRTOSConfig.h进行修改,尽量避免不必要的错误。在官方发提供的源码中,有FreeRTOS.h这个头文件,它会#include FreeRTOSConfig.h,并通过 #if 判断对应常量是否被定义,来决定是否启用对应的功能。部分常量必须被定义,以保证系统的基本运行,否则编译过程会报错。


FreeRTOS文件结构

我们可以在https://www.freertos.org下载最新的FreeRTOS源码文件,下载下来的是一个zip文件,解压后里面是FreeRTOS源码和官方资源。

主要文件如下:

现在主要学习FreeRTOS,Plus先不了解,Source目录下是FreeRTOS源码,Demo目录下是不同硬件平台、开发环境下的例程。


所有端口共有的FreeRTOS源文件

核心的FreeRTOS源代码仅包含在两个C文件中,这是所有FreeRTOS端口通用的,即task.c和list.c。

  • queue.c:queue.c提供队列和信号量服务,queue.c基本是必需的。
  • timers.c :time.c提供了软件计时器功能,只有要使用软件计时器,才需要把它包含在工程中。
  • event_groups.c:event_groups.c提供事件组功能,只有要使用事件组功能时,才需要把它包含在工程中。
  • croutine.c:croutine.c实现了FreeRTOS的协程功能。只有要使用协程功能时,才需要把它包含在工程中。协同例程原本打算用于非常小的微控制器,现在很少使用,因此没有维护到与其他FreeRTOS特性相同的级别。官方参考手册中也没有对于它的描述。

文件名可能会导致名称空间冲突,因为我们自己创建的工程可能已经包含了具有相同名称的文件。这时我们应重命名自己创建的重名文件,不要更改FreeRTOS的文件名,因为这样做会破坏与数千个使用FreeRTOS、自动化工具和IDE插件的项目的兼容性。


特定于端口的FreeRTOS源文件

特定于FreeRTOS端口的源文件包含在FreeRTOS/Source/portable目录中。可移植目录被安排为一个层次结构,首先是编译器,然后是处理器架构。如下图:

  • portable:该目录包含所有端口特定的源文件
  • MemMang:该目录包含5个可选的堆分配源文件
  • compiler1:该目录包含特定于编译器1的端口文件
  • architecture1:该目录包含针对编译器1中体系结构3端口的文件

 ​​

 

 


包含路径

FreeRTOS要求在编译器的包含路径中包含三个目录。它们分别是:

  • FreeRTOS的核心头文件路径,总是FreeRTOS/Source/include
  • 特定于正在使用的FreeRTOS端口的源文件的路径,如前面所述,应该为:FreeRTOS/Source/portable/[compiler]/[architecture]
  • FreeRTOSConfig.h头文件的路径

头文件

使用FreeRTOS API的源文件必须#include “FreeRTOS.h”,然后再#include 包含有要使用API函数的原型的头文件,如:‘task.h’, ‘queue.h’, ‘semphr.h’, ‘timers.h’ 或者 ‘event_groups.h’。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值