FreeRTOS 项目剖析

FreeRTOS 应用程序与非 RTOS 应用程序的启动和执行方式并无二致, 如果调用 vTaskStartScheduler() 的话,另当别论。vTaskStartScheduler() 通常从应用程序的 main() 函数调用。RTOS 仅控制 调用 vTaskStartScheduler() 后的执行顺序。

我们强烈建议您确保代码在选择的目标上正确执行 (正确的启动代码、正确的链接器配置等), 然后再开始尝试使用 RTOS 功能。

一、源文件

FreeRTOS 作为标准 C 源文件提供, 与项目中的其他 C 文件共同构建。FreeRTOS 源文件 以 zip 文件形式分发。RTOS 源代码组织页面 介绍了 zip 文件夹中的文件结构。 

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

  • FreeRTOS/Source/tasks.c
  • FreeRTOS/Source/queue.c
  • FreeRTOS/Source/list.c
  • FreeRTOS/Source/portable/[compiler]/[architecture]/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(请注意,协程已弃用, 不推荐用于新设计)。

 三、头文件

 

以下目录必须位于编译器的 include 路径中(必须告知编译器在这些目录中搜索 头文件):

  • FreeRTOS/Source/include
  • FreeRTOS/Source/portable/[compiler]/[architecture]。
  • 无论哪个目录包含要使用的 FreeRTOSConfig.h 文件,请参阅下文“配置文件”段落。

根据移植的不同,也可能需要将相同的目录放在汇编器的 include 路径中。

四、配置文件 

每个项目还需要一个名为 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 移植所提供的中断处理程序的安装方法取决于 所使用的移植和编译器。请参阅针对所使用移植提供的官方演示应用程序, 必要时也可复制。另请参阅官方演示应用程序配套的文档页面。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值