首发,公众号【一起学嵌入式

对于 RTOS 入门系列文章,已经更新完一款(RT-Thread):

助你快速入门 RT-Thread

这个系列的文章结合 RT-Thread,介绍过 RTOS 相关的核心知识。

接下来,开始另外一款 RTOS – FreeRTOS 入门系列,希望能够帮助初学者快速掌握 FreeRTOS,帮助老手回顾基础内容。

一起学习、一起进步。加油~

FreeRTOS简介

先来看看官网介绍,官方网址

https://freertos.org/

FreeRTOS 是一种面向微控制器和小型微处理器的市场领先实时操作系统(RTOS),与世界领先的芯片公司合作开发了18年,现在每 170 秒下载一次。

FreeRTOS根据麻省理工学院开放源码许可证免费发布,包括一个内核和一组越来越多的物联网库,适用于所有行业。FreeRTOS强调可靠性和易用性。

FreeRTOS 合作过的部分 IC 厂商:

特点

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

源码下载后,是一个压缩包 FreeRTOSv202112.00.zip,解压后如下图所示

FreeRTOS 的源码在 FreeRTOS 和 FreeRTOS-Plus 这两个文件夹中。tools 文件夹存放的是一些脚本工具。剩下的文件,看名字就知道是干什么用的了。

FreeRTOS文件夹

这个文件夹里放的是 FreeRTOS 内核相关的文件,打开 FreeRTOS 文件,来看看里面的内容

Demo 文件夹里包含 FreeRTOS 官方为各种单片机移植好的示例工程代码。

Source 文件夹里存放的是 FreeRTOS 的内核源码文件。

Demo文件夹

这个文件夹里面存放的是 FreeRTOS 针对不同的 MCU 平台提供的例程 Demo。开发者可以参考这些 Demo 搭建自己的工程项目。如下图所示,官方提供的示例工程是非常全面的,几乎覆盖了常见的 MCU 平台。

Source 文件夹

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

include 文件夹是一些头文件,下面的这些 .c 文件就是 FreeRTOS 的源码文件。这两部分是不可或缺的,不必多说。

接下来看看 portable 文件夹,里面包含的是跟编译器相关的文件夹,使用不同的编译平台,选择对应的支持文件。

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

这里边的关联文件是连接 FreeRTOS 和具体硬件平台的桥梁。编写这些接口文件就是真正的移植过程,这部分工作已经由 FreeRTOS 官方完成了,我们直接拿来用就可以了。

MemMang 文件夹下存放的是跟内存管理相关的文件,共有 5 个 heap_x.c 文件和 1 个 ReadMe 文件。在移植时,根据选用的内存堆分配算法,选用其中一个即可。

License 文件夹

该文件夹下只有一个文件 license.txt,该文件描述的是相关的许可信息。用 FreeRTOS 做产品时需要看看。对于个人学习,暂时不需要关心。

FreeRTOS-Plus 文件夹

FreeRTOS-Plus 文件夹里存放的是第三方产品。

该文件里面也有 Demo 和 Source 文件夹。Source 文件夹里存放的是一些扩展功能源码文件,例如 CLI、TCP、Trace等等。Demo 文件夹里存放的是扩展功能的示例工程。

如果只是学习和使用 FreeRTOS 系统内核,这部分内容就没必要看了。

学习资料

官方的资料还是丰富的,打开官网即可获取到

可以看在线的资料文档,当然也可以下载官方 PDF 文件

两个 PDF 文件,一个是手把手入门教程,一个是 API 参考手册。

不过,这些资料都是英文的。

最后

本篇文章简单介绍了 FreeRTOS 的一些基本情况,以及源码文件存放结构等。源码获取和资料获取都做了简单介绍说明。

为了方便学习,我将官方 PDF 资料和源码已经下载,并且搜集了一些 FreeRTOS 的学习资料,一起打包放在网盘里了。
在公众号后台留言【freertos

今天先到这,下次继续。加油~

公众号【一起学嵌入式】,精彩首先送达

FreeRTOS快速入门-初探FreeRTOS相关推荐

  1. Xilinx软件开发:FreeRTOS快速入门

    目录     第一章. 测试环境和软件版本     第二章. 创建hello world     第三章. 创建FreeRTOS2     第四章. 增加两个任务     1. 增加任务     2. ...

  2. 【FreeRTOS(一)】FreeRTOS新手入门——初识FreeRTOS

    初识FreeRTOS 一.实时操作系统概述 1.概念 2.RTOS的必要性 3.RTOS与裸机的区别 4.FreeRTOS的特点 二.FreeRTOS的架构 三.FreeRTOS的代码架构 一.实时操 ...

  3. 使用Amazon FreeRTOS快速和安全地连接设计到云

    传统的嵌入式系统开发人员通常在没有连接的设备上工作,但是IoT需要连接到Internet的系统.这要求嵌入式系统开发人员学习如何连接他们的设备和使用更高级别的操作系统,例如实时操作系统(RTOS). ...

  4. 在STM32Cube中使用FreeRTOS:入门体验

    文章目录 目的 基础说明 入门体验 基础配置 任务调度 消息队列 信号量 互斥量 定时器 其它补充 使用ST-LINK调试 中断嵌套 总结 目的 FreeRTOS是现在比较流行的主要应用于单片机等性能 ...

  5. freeRTOS自学入门教程速成版

    FreeRTOS介绍 什么是FreeRTOS? FreeRTOS是一款开源的实时操作系统(RTOS),它提供了一组API和软件库,帮助嵌入式设备的开发者实现任务管理.内存管理.中断处理.时间管理等功能 ...

  6. QT Creator快速入门读书笔记:窗口部件初探

    QWidget基础窗口部件 Qt把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏,就像程序中的widget和label一样.QMainWindow和大量的QDialog子类是最一般的窗口 ...

  7. Keil MDK 5.30来了,编译性能优化,快速入门Cortex-M55

    关注.星标公众号,不错过精彩内容 素材来源:Arm Keil 编辑整理:strongerHuang 早在ARM推出Cortex-M55内核的时候,就放出来一些关于Keil MDK V5.30的消息:C ...

  8. BeagleBone Black快速入门教程

    BeagleBone Black快速入门教程 试读样张下载地址:http://pan.baidu.com/s/1bnjJEnP 本教程是国内唯一BeagleBone Black中文教程.本教程全面讲解 ...

  9. SpringBoot约定大于配置的特性解读 SpringBoot快速入门

    SpringBoot约定大于配置 Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的 ...

  10. JSON数据结构(A、快速入门篇)(Yanlz+Data+JsonArray+JsonObject+JsonValue+JsonMapper.ToJson+JsonMapper.ToObject+)

    <JSON数据结构> 版本 作者 参与者 完成日期 备注 Data_JSON_V01_1.0 严立钻 2018.08.24 ++++一个好用的JSON在线编辑:http://www.kjs ...

最新文章

  1. LeetCode简单题之换酒问题
  2. Flask 启动配置
  3. w10连接不上网络问题_【问题解决】微软OneNote使用笔记,onenote无法连接网络无法同步解决方法...
  4. 哥伦比亚大学「机械手」无需提前了解抓握物体,也能灵活适应形状!
  5. VMware Workstations三种网卡模式
  6. python set()的用法
  7. java-逻辑运算符
  8. 她15岁中科大4门力学课满分无人能破,遭性别歧视无缘诺贝尔奖
  9. 【VB.NET】VB.NET程序设计学习指南
  10. OpenVINO 获取计算棒计算结果
  11. 是单向链表吗_一步一步教你从零开始写C语言链表
  12. 关于C语言,C程序员的我想说两句...
  13. springboot整合持久层技术(mysql驱动问题)
  14. Java中List与ArrayList的区别及用法
  15. 腾讯产品经理能力模型!
  16. Frosty the snowman(圣诞英文歌曲)铃声 Frosty the snowman...
  17. 西游记中车迟国的三位妖道
  18. HDU5855 Less Time, More profit(最大权闭合子图)
  19. 纯前端滑块拼图验证组件(多端兼容)
  20. 内网安全检测技术yyds!你还不会吗?

热门文章

  1. 最简单的Dubbo教程(springBoot纯注解版)
  2. MOOC下载器的文档整理
  3. 一天搞懂深度学习—学习笔记4(knowledge and tricks)
  4. nfc卡模式与标准模式_NFC相关标准
  5. WireShark抓包原理解析及抓包实战教程
  6. R7000刷梅林固件一个小结(变砖解决)
  7. 【vn.py学习笔记(七)】vn.py rqdata封装、datasbase等数据服务源码阅读
  8. js读取json文件
  9. 小米 redmibook 14 锐龙版 安装linux ubuntu 20 19 18 deepin 无线网卡驱动问题解决方案
  10. python 象棋算法接口_python输出国际象棋棋盘的实例分享