FreeRTOS学习 -- 再识

工作中一直使用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.hqwc.cn/news/600652.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LangChain入门:15.Sequential Chain:顺序链的使用

Sequential Chain是LangChain库中的一个强大工具,它允许我们将多个LLMChain按照特定的顺序连接起来,形成一个处理流程。这种链式结构使得我们可以将一个大任务分解为几个小任务,并依次执行,每个任务的输出成为下一个任务的输入。 …

linux:du和df区别

文章目录 1. 概述2. du 命令2. df 命令3. 区别总结 1. 概述 du 和 df 都是 Linux 系统中用于查看磁盘空间使用情况的命令,但它们的功能和用法有所不同。 2. du 命令 du 是 “disk usage” 的缩写,用于显示文件或目录的磁盘使用情况。du 命令用于查看指…

如何用matplotlib画图像的时候使用中文标签名

Matplotlib 中文显示不是特别友好,要在 Matplotlib 中显示中文,我们可以通过两个方法: 下载使用支持中文的字体库。设置 Matplotlib 的字体参数。 下载使用支持中文的字体库: Matplotlib 默认情况不支持中文,我们可以使用以下简…

Disk Drill Enterprise for Mac v5.5.1515数据恢复软件中文版

Disk Drill 是 Mac 操作系统固有的Mac数据恢复软件:使用 Recovery Vault 轻松保护文件免遭意外删除,并从 Mac 磁盘恢复丢失的数据。支持大多数存储设备,文件类型和文件系统。 软件下载:Disk Drill Enterprise for Mac v5.5.1515激…

博士推荐 | 拥有超过10年的数据解决方案经验,数据驱动的决策者

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态,用科技解决职业领域问题,提升行业数字化服务水平,提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

jupyter python paramiko 网络系统运维

概述 通过使用jupyter进行网络运维的相关测试 设备为H3C 联通性测试 import paramiko import time import getpass import re import os import datetimeusername "*****" password "*****" ip "10.32.**.**"ssh_client paramiko.SSHCli…

【明道云】设置默认值时,发现单选项目无法与文本项目比较

【背景】 新建表单,其中字段B的默认值通过使用字段A在另一张表单B中搜索获得。 字段A在当前表的填写形式是下拉框,而用于比较的表单B的相应字段A1则是文本。因此在建立条件时发现由于组件类型不同,无法选到字段A作为比较条件。 【解决办法】…

基于Difussion图像、视频生成综述

2024年大年初七(02.16)OpenAI 发布视频生成模型 Sora 在各大平台转疯了,和2022年发布ChatGPT3.5时一样的疯狂。在开工第一天,我就去官网上看了 Sora 的技术报告,遗憾的是,在这份技术报告中只披露了一些模型…

rsync+inotify的实时同步

目录 一、inotify 二、rsyncinotify实时同步搭建 1. 实验环境配置 2. 配置 服务端192.168.91.103 1. 修改rsync源服务器配置文件 3. 配置 客户端192.168.91.102 1. 创建文件夹 ​编辑 2. 调整 inotify 内核参数 3. 安装inotify-tools 4. inotify对文件进行监控 5. 测…

新手创业三大法则!2024创业赚钱项目 2024做什么行业前景好!2024适合普通人创业的项目!

第一、寻找痛点。成功的创业项目往往解决了某个现实生活中的痛点。作为新手小白,需要关注自己周围的人们所遇到的问题,并思考通过何种方式来解决这些问题。这样做不仅能提供实际需求,还能使创业项目更有长期性。只有真正了解人们的需求和痛点…

蓝桥杯练习笔记(十八)

蓝桥杯练习笔记(十八) 一、用辅助栈来优化递归深度过大的问题 输入示例 0000100010000001101010101001001100000011 0101111001111101110111100000101010011111 1000010000011101010110000000001011010100 0110101010110000000101100100000101001001 0…

配置 施耐德 modbusTCP 分布式IO子站 PRA0100

模块官方介绍:https://www.schneider-electric.cn/zh/product/BMXPRA0100 1. 总体步骤 2. 软件组态:在 Unity Pro 软件中创建编辑 PRA 模块工程 2.1 新建项目 模块箱硬件型号如下 点击 Unity Pro 软件左上方【新建】按钮,选择正确的 DIO …