FreeRTOS——创建新的项目

FreeRTOS 基础系列文章

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

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

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


概要

FreeRTOS 旨在简单易用:只需要 3 个所有 RTOS 端口通用的源文件和一个特定于微控制器的源文件,其 API 设计简单直观。

FreeRTOS 被移植到许多不同的微控制器架构和许多不同的编译器。每个官方移植都有一个官方演示,无需任何修改即可在其开发的硬件平台上编译和执行。

提供演示项目是为了确保新用户可以在尽可能短的时间内开始使用 FreeRTOS,并且不会手忙脚乱。

始终建议通过从提供的预配置演示之一开始,然后调整来创建新的 FreeRTOS 项目 。这样做可确保新项目包含所有必要的源文件和头文件,并安装必要的中断服务程序,项目创建者无需付出任何努力。

一些 FreeRTOS 用户还想知道如何通过改编现有项目以外的方式来创建 FreeRTOS 项目。执行此操作的过程记录如下。


FreeRTOS 项目剖析

在调用 vTaskStartScheduler() 之前,FreeRTOS 应用程序将像非 RTOS 应用程序一样启动和执行。vTaskStartScheduler() 通常从应用程序的 main() 函数中调用。RTOS 仅在调用 vTaskStartScheduler() 后控制执行顺序。

强烈建议在尝试使用任何 RTOS 功能之前,确保所选目标上的代码正在正确执行(正确的启动代码,正确的链接器配置,等等)。

源文件

FreeRTOS 是作为标准的 C 源文件提供的,与项目中的所有其他 C 文件一起构建。FreeRTOS 源文件以 zip 文件的形式分发。FreeRTOS——源代码组织一文描述了 zip 文件中的文件结构。

至少,以下源文件必须包含在您的项目中:

  • FreeRTOS/Source/tasks.c
  • FreeRTOS/Source/queue.c
  • FreeRTOS/Source/list.c
  • FreeRTOS/Source/portable/[编译器]/[架构]/port.c
  • FreeRTOS/Source/portable/MemMang/heap_x.c 其中 ‘x’ 为 1, 2, 3, 4 或 5

如果包含 port.c 文件的目录还包含汇编语言文件,则也必须使用汇编语言文件。

可选源文件

如果您需要软件计时器功能,请将 FreeRTOS/Source/timers.c 添加到您的项目中。

如果您需要事件组功能,请将 FreeRTOS/Source/event_groups.c 添加到您的项目中。

如果您需要流缓冲区或消息缓冲区功能,请将 FreeRTOS/Source/stream_buffer.c 添加到您的项目中。

如果您需要协程功能,请将 FreeRTOS/Source/croutine.c 添加到您的项目中(注意协程已被弃用,不推荐用于新设计)。

头文件

以下目录必须在编译器的包含路径中(必须告诉编译器在这些目录中搜索头文件):

  • FreeRTOS/Source/include
  • FreeRTOS/Source/portable/[编译器]/[架构]
  • 包含要使用的 FreeRTOSConfig.h 文件的目录 —— 请参阅下面的配置文件段落。

根据端口的不同,可能还需要将相同的目录放在汇编器的包含路径中。

配置文件

每个项目还需要一个名为 FreeRTOSConfig.h 的文件。FreeRTOSConfig.h 根据正在构建的应用程序定制 RTOS 内核。因此,它特定于应用程序,而不是 RTOS,并且应该位于应用程序目录中,而不是位于 RTOS 内核源代码目录之一中。

如果您的项目中包含 heap_1、heap_2、heap_4 或 heap_5,则 FreeRTOSConfig.h 定义的 configTOTAL_HEAP_SIZE 将标注 FreeRTOS 堆的尺寸。如果 configTOTAL_HEAP_SIZE 设置得太高,您的应用程序将无法链接。

FreeRTOSConfig.h 定义 configMINIMAL_STACK_SIZE 设置空闲任务使用的栈大小。如果 configMINIMAL_STACK_SIZE 设置得太低,那么空闲任务将产生栈溢出。建议从为相同微控制器架构提供的官方 FreeRTOS 演示中复制 configMINIMAL_STACK_SIZE 设置。FreeRTOS 演示项目存储在 FreeRTOS/Demo 目录的子目录中。请注意,一些演示项目是旧的,因此不包含所有可用的配置选项。

中断向量

每个 RTOS 端口都使用一个定时器来产生一个周期性的滴答中断。许多端口使用额外的中断来管理上下文切换。RTOS 端口所需的中断由提供的 RTOS 端口源文件提供服务。

用于安装 RTOS 端口提供的中断处理程序的方法取决于所使用的端口和编译器。请参阅并在必要时复制所使用的端口的官方演示应用程序。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值