FreeRTOS快速入门-初探FreeRTOS

学向勤中得,萤窗万卷书。这篇文章主要讲述FreeRTOS快速入门-初探FreeRTOS相关的知识,希望能为你提供帮助。
对于 RTOS 入门系列文章,已经更新完一款(RT-Thread):
助你快速入门 RT-Thread
这个系列的文章结合 RT-Thread,介绍过 RTOS 相关的核心知识。
接下来,开始另外一款 RTOS -- FreeRTOS 入门系列,希望能够帮助初学者快速掌握 FreeRTOS,帮助老手回顾基础内容。
一起学习、一起进步。加油~
FreeRTOS简介先来看看官网介绍,官方网址

https://freertos.org/

FreeRTOS快速入门-初探FreeRTOS

文章图片

FreeRTOS 合作过的部分 IC 厂商:
FreeRTOS快速入门-初探FreeRTOS

文章图片

特点
FreeRTOS 的主要特点如下:
  • 支持抢占式调度、协作式调度、时间片调度
  • 灵活、快速、轻量级的任务通知机制。
  • 支持消息队列、二值信号量、计数信号量、互斥量、递归互斥、软件定时器、事件标志组等功能
  • 时钟节拍钩子函数
  • 空闲钩子函数
  • 栈溢出检测
  • 任务运行时统计信息收集
  • 可选的商业许可和支持
  • 全中断嵌套模型(对于某些体系结构)
  • 极低功耗应用的无滴答功能
  • 软件管理的中断堆栈(这有助于节省RAM)
  • 支持 40 多个体系结构。
  • 模块化库。
  • ........
为什么选择 FreeRTOS
列举几个选择 FreeRTOS 用于项目开发的几点原因:
  • 为许多不同的体系结构和开发工具提供单一且独立的解决方案。
  • 众所周知,它是可靠的。
  • 功能丰富,仍在持续积极发展。
  • 具有最小的 ROM、RAM 和 处理器开销。RTOS 内核二进制映像通常在 6K 到 12K 字节的范围内。
  • 非常简单——RTOS内核的核心只包含在 3 个 C 文件中。
  • 在商业应用中真正免费使用(详见许可证条件)。
  • 我们的合作伙伴WITTENSTEIN high integrity systems以OPENRTOS的形式提供商业许可、专业支持和移植服务。
  • 拥有通往 SafeRTOS 的迁移路径,其中包括医疗、汽车和工业部门的认证。
  • 拥有庞大且不断增长的用户群。
  • 包含每个端口的预配置示例。
  • 拥有一个优秀的、活跃的免费支持论坛。
  • 保证在需要时提供商业支持。
  • 提供了大量的文档。
  • 非常可扩展,简单易用。
  • ......
源码文件结构官方源码的下载地址为:
https://www.freertos.org/a00104.html

FreeRTOS快速入门-初探FreeRTOS

文章图片

源码下载后,是一个压缩包 FreeRTOSv202112.00.zip,解压后如下图所示
FreeRTOS快速入门-初探FreeRTOS

文章图片

FreeRTOS 的源码在 FreeRTOS 和 FreeRTOS-Plus 这两个文件夹中。tools 文件夹存放的是一些脚本工具。剩下的文件,看名字就知道是干什么用的了。
FreeRTOS文件夹
这个文件夹里放的是 FreeRTOS 内核相关的文件,打开 FreeRTOS 文件,来看看里面的内容
FreeRTOS快速入门-初探FreeRTOS

文章图片

Demo 文件夹里包含 FreeRTOS 官方为各种单片机移植好的示例工程代码。
Source 文件夹里存放的是 FreeRTOS 的内核源码文件。
Demo文件夹
这个文件夹里面存放的是 FreeRTOS 针对不同的 MCU 平台提供的例程 Demo。开发者可以参考这些 Demo 搭建自己的工程项目。如下图所示,官方提供的示例工程是非常全面的,几乎覆盖了常见的 MCU 平台。
FreeRTOS快速入门-初探FreeRTOS

文章图片

Source 文件夹
这个文件夹里存放的是 FreeRTOS 的内核源码文件。也就是我们使用 FreeRTOS 必须用到的文件。下图中标示出各个部分的用途
FreeRTOS快速入门-初探FreeRTOS

文章图片

include 文件夹是一些头文件,下面的这些 .c 文件就是 FreeRTOS 的源码文件。这两部分是不可或缺的,不必多说。
接下来看看 portable 文件夹,里面包含的是跟编译器相关的文件夹,使用不同的编译平台,选择对应的支持文件。
FreeRTOS快速入门-初探FreeRTOS

文章图片

我们比较常用的是 keil,这个目录下只有一个文件,文件名字为 See-also-the-RVDS-directory.txt。即这个目录下的内容和 RVDS 目录相同。使用 RVDS 文件夹内的文件即可,具体如下所示
FreeRTOS快速入门-初探FreeRTOS

文章图片

这里边的关联文件是连接 FreeRTOS 和具体硬件平台的桥梁。编写这些接口文件就是真正的移植过程,这部分工作已经由 FreeRTOS 官方完成了,我们直接拿来用就可以了。
MemMang 文件夹下存放的是跟内存管理相关的文件,共有 5 个 heap_x.c 文件和 1 个 ReadMe 文件。在移植时,根据选用的内存堆分配算法,选用其中一个即可。
License 文件夹
该文件夹下只有一个文件 license.txt,该文件描述的是相关的许可信息。用 FreeRTOS 做产品时需要看看。对于个人学习,暂时不需要关心。
FreeRTOS-Plus 文件夹
FreeRTOS-Plus 文件夹里存放的是第三方产品。
FreeRTOS快速入门-初探FreeRTOS

文章图片

该文件里面也有 Demo 和 Source 文件夹。Source 文件夹里存放的是一些扩展功能源码文件,例如 CLI、TCP、Trace等等。Demo 文件夹里存放的是扩展功能的示例工程。
如果只是学习和使用 FreeRTOS 系统内核,这部分内容就没必要看了。
学习资料官方的资料还是丰富的,打开官网即可获取到
FreeRTOS快速入门-初探FreeRTOS

文章图片

FreeRTOS快速入门-初探FreeRTOS

文章图片

可以看在线的资料文档,当然也可以下载官方 PDF 文件
FreeRTOS快速入门-初探FreeRTOS

文章图片

两个 PDF 文件,一个是手把手入门教程,一个是 API 参考手册。
不过,这些资料都是英文的。
最后本篇文章简单介绍了 FreeRTOS 的一些基本情况,以及源码文件存放结构等。源码获取和资料获取都做了简单介绍说明。
为了方便学习,我将官方 PDF 资料和源码已经下载,并且搜集了一些 FreeRTOS 的学习资料,一起打包放在网盘里了。在公众号后台回复【freertos】 即可获取。
【FreeRTOS快速入门-初探FreeRTOS】今天先到这,下次继续。加油~

    推荐阅读