FreeRTOS——源代码组织

FreeRTOS 基础系列文章

 基本对象
  FreeRTOS——任务
  FreeRTOS——队列
  FreeRTOS——信号量
  FreeRTOS——互斥量
  FreeRTOS——任务通知
  FreeRTOS——流和消息缓冲区
  FreeRTOS——软件定时器
  FreeRTOS——事件组

 内存管理
  FreeRTOS——静态与动态内存分配
  FreeRTOS——堆内存管理
  FreeRTOS——栈溢出保护

 代码组织
  FreeRTOS——源代码组织
  FreeRTOS——创建新的项目
  FreeRTOS——配置文件


每个 RTOS 端口都带有一个预配置的演示应用程序,该应用程序已经构建了必要的 RTOS 源文件,并包括了必要的 RTOS 头文件。强烈建议将提供的演示用作所有基于 FreeRTOS 的新应用程序的基础。提供此页面是为了帮助定位和理解所提供的项目。FreeRTOS 源代码可以从官网下载。

基本目录结构

FreeRTOS下载包括每个处理器端口和每个演示应用程序的源代码。将所有端口放在一次下载中大大简化了分发,但文件的数量似乎令人生畏。然而,目录结构非常简单,FreeRTOS 实时内核仅包含在 3 个文件中(如果需要软件计时器、事件组或协程功能,则需要其他文件)。

从顶部开始,下载分为两个子目录;FreeRTOSFreeRTOS-Plus。这些如下所示:

  • FreeRTOS-Plus  包含FreeRTOS+组件和演示项目。
    |
  • FreeRTOS     包含FreeRTOS实时内核源代码文件和演示项目

FreeRTOS-Plus目录树包含多个描述其内容的 readme 文件。


FreeRTOS 内核目录结构

核心 FreeRTOS 内核源文件和演示项目包含在两个子目录中,如下所示:

  • FreeRTOS
    |
    • Demo   包含演示应用程序项目。
      |
    • Source  包含实时内核源代码。

核心 RTOS 代码包含在三个文件中,分别称为tasks.cqueue.clist.c。这三个文件位于FreeRTOS/Source目录中。同一目录包含两个名为timers.ccroutine.c的可选文件,它们分别实现软件计时器协程功能。

每个受支持的处理器架构都需要少量特定于架构的 RTOS 代码。这是 RTOS 可移植层,它位于FreeRTOS/Source/Portable/[compiler]/[architecture]子目录中,其中[compiler][architecture]分别是用于创建端口的编译器,以及端口运行的架构

由于Free RTOS——堆内存管理一文所述的原因,示例堆分配方案也位于可移植层。各种示例 heap_x.c 文件位于FreeRTOS/Source/portable/MemMang目录中。

可移植层目录示例:

  • 如果将 TriCore 1782 端口与 GCC 编译器一起使用:

    TriCore 特定文件 (port.c) 位于FreeRTOS/Source/Portable/GCC/TriCore_1782目录中。除了FreeRTOS/Source/Portable/MemMang之外的所有其他 FreeRTOS/Source/Portable 子目录都可以忽略或删除。

  • 如果将 Renesas RX600 端口与 IAR 编译器一起使用:

    RX600 特定文件 (port.c) 位于FreeRTOS/Source/Portable/IAR/RX600目录下。除了FreeRTOS/Source/Portable/MemMang之外的所有其他FreeRTOS/Source/Portable子目录都可以忽略或删除。

  • 所有其他的端口都是如此……

FreeRTOS/Source目录的结构如下所示。

  • FreeRTOS

    |

    • Source   核心FreeRTOS内核文件
      |
      • include   核心FreeRTOS内核头文件
        |
      • Portable  特定于处理器的代码
        |
        • Compiler x  编译器x支持的所有端口
        • Compiler y  编译器y支持的所有端口
        • MemMang  示例堆实现

FreeRTOS 下载还包含每个处理器架构和编译器端口的演示应用程序。大多数演示应用程序代码对所有端口都是通用的,并包含在FreeRTOS/Demo/Common/Minimal目录中(位于FreeRTOS/Demo/Common/Full目录中的代码是遗留代码,仅供 PC 端口使用)。

其余的FreeRTOS/Demo子目录包含用于构建单个演示应用程序的预配置项目。目录的命名表明了它们所使用的端口。

演示目录示例:

  • 如果构建面向英飞凌 TriBoard 硬件的 TriCore GCC 演示应用程序:

    TriCore 演示应用程序项目文件位于FreeRTOS/Demo/TriCore_TC1782_TriBoard_GCC目录中。FreeRTOS/Demo目录中包含的所有其他子目录(Common目录除外)都可以忽略或删除。

  • 如果构建面向 RX62N RDK 硬件的 Renesas RX6000 IAR 演示应用程序:
    IAR 工作区文件位于FreeRTOS/Demo/RX600_RX62N-RDK_IAR目录中。FreeRTOS/Demo目录中包含的所有其他子目录(Common目录除外)都可以忽略或删除。

  • 所有其他的端口都是如此……

FreeRTOS/Demo目录的结构如下所示。

  • FreeRTOS
    |
    • Demo
      |
      • Common  所有演示都使用的演示应用程序文件。
      • Dir x    演示应用程序为端口x构建文件
      • Dir y    演示应用程序为端口y构建文件

创建自己的应用程序

提供预先配置的演示应用程序是为了确保项目已经包含了正确的RTOS内核源文件,并设置了正确的编译器选项,从而以最少的用户工作量进行构建。因此,强烈建议通过修改现有的预配置演示应用程序来创建新的应用程序。要做到这一点,可以先构建一个现有的演示应用程序,以确保可以实现干净的构建(没有警告,没有错误),然后用您自己的应用程序源文件逐步替换FreeRTOS/demo目录中包含的文件。


主要目录结构图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值