登录后台

页面导航

本文编写于 256 天前,最后修改于 256 天前,其中某些信息可能已经过时。

FreeRTOS发布包

freertos通过一个zip文件发布,其中包含了所有离线的freeRTOS文件以及大量实例。

了解freeRTOS发布包

定义FreeRTOS接口

FreeRTOS可以使用大约20种不同的编译器编译,可以运行在不同架构芯片上。每个支持的编译器和架构组合组成一个特定版本接口的FreeRTOS。

编译FreeRTOS

FreeRTOS可以认为是一个库,相比于裸机程序它提供了多任务的能力。
FreeRTOS是以一些C源文件形式提供。有些源文件对所有版本接口都通用。将FreeRTOS源文件编译进你的项目,让FreeRTOS的函数可以在项目中使用。

为了让用户简单就能上手,每个离线的FreeRTOS版本接口都提供了具体实例。这些程序实例都已预配置,以便可以用于源代码编译,也包含了正确的头文件。
实例程序应该可以开箱即用,尽管可能有些实例比其他的要老旧些,有时候实例相关编译工具的改变会引起错误。

FreeRTOSConfig.h

FreeRTOS是通过FreeRTOSConfig.h头文件进行配置的。

用户可以使用FreeRTOSConfig.h告诉FreeRTOS指定特定的程序功能。比如,FreeRTOSConfig.h中包含一个configUSE_PREEMPTION的宏,这个设置就决定了调度器会用合作还是抢占模式。因为FreeRTOSConfig.h中包括了程序相关特定宏,它就应该包含在要被编译的具体项目中,而不是FreeRTOS的源代码目录下。
提供的每一个FreeRTOS版本接口中的每个实例程序都有一个具体的FreeRTOSConfig.h文件。因此不需要重新创建一个FreeRTOSConfig.h文件,推荐从已经有的实例或者项目中复制一个来做相应更改。

FreeRTOS顶层目录

源代码文件

# FreeRTOS发布包的顶层目录结构。
FreeRTOS
├── FreeRTOS
│   ├── Demo            # 包含特定版本接口的FreeRTOS实例项目和预配置文件
│   ├── License         # 许可证
│   ├── Source          # FreeRTOS源代码
├── FreeRTOS-Plus
│   ├── Demo            # 包含特定版本接口的FreeRTOS+生态系统的实例项目和预配置文件
│   ├── Source          # FreeRTOS+生态系统组件源文件

FreeRTOS内核源码文件只包含两个C语言的文件,它们是所有FreeRTOS版本接口共用的。它们就是task.c和list.c,它们位于FreeRTOS/Source目录中。为了扩展这两个文件,下面的源文件位于相同目录:

  • queue.c提供队列和信号量服务
  • timers.c提供软件定时任务
  • event_group.c提供事件组功能
  • croutine.c提供协同程序功能,只有在用到协同程序功能时才需要包含它。协同程序是用在非常小的微处理器上的,已经很少使用,因此不会和其他功能相同等级。
# FreeRTOS共用内核部分源码文件
FreeRTOS
├── Source
│   ├── croutine.c       # 选择可用,少用
│   ├── event_groups.c   # 选择可用
│   ├── list.c           # 必要
│   ├── queue.c          # 选择可用,常用
│   ├── stream_buffer.c  # 选择可用,新版功能
│   ├── tasks.c          # 必要
│   └── timers.c         # 选择可用,常用

特定版本接口的FreeRTOS源码

特定版本接口源代码文件位于FreeRTOS/Source/portable/目录。这个接口目录是按照层次排序的,首先是编译器,然后是处理器架构。
如果你在一个"architecture"架构的,用"compiler"编译器的接口上使用FreeRTOS,你就可以进入FreeRTOS/Source/portable/[compiler]/[architecture]目录中,进行编译。

# 特定版本接口源文件目录树。
FreeRTOS
|
|-Source
| |-portable
| | |-MemMang
| | |-[compiler 1]
| | | |-[architecture 1]
| | | |-[architecture 2]
| | | |-[architecture 3]
| | |-[compiler 2]
| | | |-[architecture 1]
| | | |-[architecture 2]
| | | |-[architecture 3]

头文件路径

FreeRTOS需要在编译器头文件目录中包含3个路径。它们是:

  • FreeRTOS内核的头文件,FreeRTOS/Source/include/
  • 特定版本接口源码文件目录,通常是FreeRTOS/Source/portable/[compiler]/[architecture]/
  • FreeRTOSConfig.h所在目录

使用FreeRTOS函数的源文件需要包含FreeRTOS.h,它包含了要使用的FreeRTOS函数原型,还包含了task.h,queue.h,semaphr.h,timer.h,event_group.h

博主已关闭本页面的评论功能