FreeRTOS学习 -- 再识

news/2024/4/29 14:44:14

工作中一直使用FreeRTOS进行着开发,但是没有进行过系统的总结过。现在将快速使用几天时间将FreeRTOS相关知识点加以总结。
官网:
https://www.freertos.org/zh-cn-cmn-s/
参看资料:
正点原子 STM32F1 FreeRTOS开发手册_V1.2.pdf
The FreeRTOS™Reference Manual.pdf
USING THE FREERTOSREAL TIME KERNEL

一、什么是FreeRTOS

Free即免费的意思,RTOS全称是Real Time Operating System,中文名就是实时操作系统。FreeRTOS就是一个免费的RTOS类系统。RTOS不是指某一个确定的系统,而是指一类系统。比如,uC/OS,FreeRTOS,RXT,RX-Thread等这些都是RTOS类操作系统。

操作系统允许多个任务同时运行,这个叫做多任务,一个处理器核心在某一时刻只能运行一个任务。操作系统中任务调度器的责任就是决定在某一时刻究竟运行哪个任务,任务 调度在各个任务之间切换非常快。这就给人们造成了同一时刻有多个任务同时运行的错觉。

操作系统的分类方式可以有任务调度器的工作方式决定,比如有的操作系统给每个任务分配同样的运行时间,时间到了就轮到下一个任务,Unix操作系统就是这样的。RTOS的任务调度器被设计为可预测的,而这正是嵌入式实时操作系统所需要的,实际环境中要求操作系统必须对某一个事件做出实时的响应,因此系统任务调度器的行为必须可预测。像FreeRTOS这种传统的RTOS类操作系统是由用户给每个任务分配一个任务优先级,任务调度器就可以根据此优先级来决定下一刻应该运行哪个任务。

FreeRTOS是RTOS系统中的一种,FreeRTOS十分的小巧,可以在资源有限的微控器中使用,当然FreeRTOS不仅仅局限于在微控器中使用,但从文件数中来说FreeRTOS要比uc/OS小的多。

二、为什么选择FreeRTOS

RTOS类系统有很多,为什么要选择FreeRTOS呢?
1、FreeRTOS免费!做产品的话要考虑成本。
2、许多其他半导体厂商产品的SDK包就使用FreeRTOS作为其从操作系统,尤其是WIFI、蓝牙这些带协议栈的芯片或模块。
3、许多软件厂商也使用FreeRTOS做本公司软件的操作系统。比如,ST公司的所有要使用到RTOS系统的例程均采用了FreeRTOS。
4、FreeRTOS的文件数量很少,相对简单。
5、文档相对齐全,在 FreeRTOS 的官网(www.freertos.org)上可以找到所需的文档和源码。
6、FreeRTOS 被移植到了很多不同的微处理器上,比如STM32,F1、F3、F4 和最新的 F7 都有移植,这个极大的方便了我们学习和使用。
7、社会占有量很高,据统计的 2015 年 RTOS 系统占有量中 FreeRTOS 已经跃升至第一位。

三、FreeRTOS的特点

FreeRTOS是一个可裁剪的小型RTOS系统,其特点包括:

  • FreeRTOS的内核支持抢占式,合作式和时间片调度。
  • 提供了一个用于低功耗的Tickless模式。
  • 系统的组件在创建时可以选择动态或者静态的RAM,比如任务、消息队列、信号量、软件定时器等。
  • FreeRTOS-MPU支持Corex-M系列中的MPU单元,比如STM32F429。
  • FreeRTOS系统简单、小巧、易用,通常情况下内核占用4k-9k字节的空间。
  • 高可移植性,代码主要以C语言编写。
  • 支持实时任务和协程(co-routines 也有称为合作式、协同程序,本教程均成为协程)。
  • 任务与任务、任务与中断之间可以使用任务通知、消息队列、二值信号量、数值型信号量、递归互斥信号量和互斥信号量 进行通信和同步。
  • 创新的事件组(或者事件标志)。
  • 具有优先级继承特性的互斥信号量。
  • 高效的软件定时器。
  • 强大的跟踪执行功能。
  • 堆栈溢出检测功能。
  • 任务数量不限。
  • 任务优先级不限。

四、FreeRTOS官网

官网:
https://www.freertos.org/zh-cn-cmn-s/

源码下载:
在这里插入图片描述
在这里插入图片描述
重点在于上面那两个文件夹:FreeRTOS 和 FreeRTOS-Plus,这两个文件夹里面的东西就是 FreeRTOS 的源码。

FreeRTOS 文件夹

可以看到里面有四个文件夹:
在这里插入图片描述

Demo文件夹

Demo文件夹里面就是FreeRTOS针对不同的MCU提供的相关例程,进行程序移植的时候可以参考这些例程。
在这里插入图片描述

License文件夹

License文件夹里面的就是相关许可信息。

Source文件夹

Source文件夹里面就是FreeRTOS的源代码文件,include文件夹是一些头文件,移植的时候也是需要的,下面这些c文件就是FreeRTOS的源代码文件,移植的时候也是需要的。
在这里插入图片描述
在这里插入图片描述
重点来看一下portable这个文件夹,FreeRTOS是个系统,归根结底是软件的东西,它是怎么和硬件联系在一起的呢?那么中间就必须有一个桥梁,portable文件夹里面的东西就是FreeRTOS系统和具体的硬件之间的连接桥梁。不同的编译环境,不同的MCU,其桥梁是不同的,打开portable文件夹,如下图所示:
在这里插入图片描述
MemMang这个文件夹就是跟内存管理相关的,我们移植的时候是必须的。Keil文件夹里面的东西也是必须的,但是我们打开keil文件夹以后里面只有一个文件:See-also-the-AVDS-directory.txt,意思是参考RVDS文件夹里面的东西!
在这里插入图片描述
RVDS 文件夹针对不同的架构的MCU 做了详细的分类,STM32F429 就参考 ARM_CM4F,打开 ARM_CM4F 文件夹。
在这里插入图片描述
ARM_CM4F 有两个文件,这两个文件就是我们移植的时候所需要的!

FreeRTOS-Plus 文件夹

在这里插入图片描述
FreeRTOS-Plus 也有 Demo 和 Source,Demo 就不看了,肯定是一些例程。我们看一下 Source。
在这里插入图片描述
可以看出,FreeRTOS-Plus 中的源码其实并不是 FreeRTOS 系统的源码,是在这个 FreeRTOS系统上另外增加的一些功能代码,比如 CLI、FAT、Trace 等等。就系统本身而言,和 FreeRTOS里面的一模一样的,所以我们如果只是学习 FreeRTOS 这个系统的话,FreeRTOS-Plus 就没必要看了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11771.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

linuxday05

1、makedile原理(增量编译生成代码) # (注释符) 目标------依赖 目标不存在//目标比依赖旧才会执行命令; makefile的实现 1、命名要求(Makefile/makefile) 2、规则的集合 目标文件&#…

最新在线工具箱网站系统源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 系统内置高达72种站长工具、开发工具、娱乐工具等功能。此系统支持本地调用API,同时还自带免费API接口, 是一个多功能性工具程序,支持后台管理、上…

docker进行jenkins接口自动化测试持续集成实战

文章目录 一、接口功能自动化测试项目源码讲解二、接口功能自动化测试运行环境配置1、下载jdk,maven,git,allure并配置对应的环境变量2、使用docker安装jenkins3、配置接口测试的运行时环境选择对应节点4、jenkins下载插件5、jenkins配置环境…

promise.all方式使用

romise.all( ).then( ) 处理多个异步任务,且所有的异步任务都得到结果时的情况。 比如:用户点击按钮,会弹出一个弹出对话框,对话框中有两部分数据呈现,这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…

Vue3学习笔记+报错记录

文章目录 1.创建Vue3.0工程1.1使用vue-cli创建1.2 使用vite创建工程1.3.分析Vue3工程结构 2.常用Composition2.1 拉开序幕的setup2.2 ref函数_处理基本类型2.3 ref函数_处理对象类型2.4 ref函数使用总结 1.创建Vue3.0工程 1.1使用vue-cli创建 查看vue/cli版本,确保…

Java-运算符

运算符 Java语言支持如下运算符&#xff1a; 算术运算符&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;%&#xff0c;&#xff0c;--复制运算符&#xff1a;关系运算符&#xff1a;>, <, >, <, , !instanceof逻辑运算符&#xff1a;&&…