FreeRTOS简介

FreeRTOS简介


文章目录

  • FreeRTOS简介
  • 前言
  • 一、什么是FreeRTOS?
  • 二、FreeRTOS的特点
  • 三、FreeRTOS的版本和参考资料
    • 1、FreeRTOS版本
    • 2、FreeRTOS源码获取
    • 3、FreeRTOS参考资料
  • 四、FreeRTOS源码简介


前言

FreeRTOS是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,在一段学习后留个笔记简单记录下相关知识欢迎大佬指正!!!!


一、什么是FreeRTOS?

Free 和 RTOS,Free 就是免费的、自由的、不受约束的意思,RTOS 全称是 Real Time Operating System,中文名就是实时操作系统。可以看出 FreeROTS 就是一个免费的 RTOS 类系统,FreeRTOS 是 RTOS 系统的一种,FreeRTOS 十分的小巧,可以在资源有限的微控制器中运行,当然了,FreeRTOS 不仅局限于在微控制器中使用。但从文件数量上来看 FreeRTOS 要比UCOSII 和 UCOSIII 小的多。

二、FreeRTOS的特点

FreeRTOS是一个可裁剪、可固化到 ROM 的抢占式实时内核,并且可管理任务的数量不受限制,具有以下几个重要的特性:

免费、开源且小巧:FreeRTOS 免费!这是最重要的一点,UCOS 是要收费的, 并且FreeRTOS 系统简单、小巧、易用,通常情况下内核占用 4k-9k 字节的空间。
支持多种不同架构的不同型号的处理器: ARM架构系列,例如STM32和GD32的 F1、 F4、 F7 和 H7 等型号的 MCU 都可支持,已经在超过 30 种架构的芯片上进行了移植。,非常方便
资料齐全:文档相对齐全,在 FreeRTOS 的官网:https://www.freertos.org/zh-cn-cmn-s/上可以找到所需的文档和源码,但是所有的文档都是英文版本的,而且下载 pdf 文档的时候是要收费的。
应用范围广:高可移植性,代码主要 C 语言编写,因此许多软件厂商也使用 FreeRTOS 做本公司软件的操作系统,比如著名的 TouchGFX,其所有的例程都是基于 FreeRTOS 操作系统的。ST 公司的所有要使用到 RTOS 系统的例程也均采用了 FreeRTOS,由此可见免费的力量啊!
内部资源丰富:持抢占式,合作式和时间片调度、任务数量不限、任务优先级不限、软件定时器、创新的事件组(或者事件标志)、消息队列、多种信号量、任务通知、内存管理、时间戳等;还包括强大的跟踪执行功能和堆栈溢出检测功能。

三、FreeRTOS的版本和参考资料

1、FreeRTOS版本

FreeRTOS 衍生出来了另外两个系统:OpenRTOS 和 SafeTROS,FreeRTOS 开源许可协议允许在商业应用中使用 FreeRTOS 系统
,两者特征比较如下表所示:
在这里插入图片描述

2、FreeRTOS源码获取

在移植FreeRTOS 时候还需要用到FreeRTOS官方提供的两个额外的库源码文件,中文官方地址:https://freertos.org/zh-cn-cmn-s/,提供了大量的 µC/OS-III 相关的资料和不同版本的源代码,现在的目标就是要获取 FreeRTOS的源代码,打开后如下图所示:
在这里插入图片描述

点击下载FreeRTOS ,可直接下载FreeRTOS。也可以从 Git 获取 RTOS 库 ,但最简单的入门方式是下载 FreeRTOS .zip 文件,因为此文件还包括针对每一个官方移植的演示项目 ,如果点击入门指南,跳转如下图所示:
在这里插入图片描述

3、FreeRTOS参考资料

在线参考资料在顶部导航栏“内核” ,就能看到FreeRTOS的详情页了,打开后如下图所示对内核的描述:
在这里插入图片描述
点击左侧FreeRTOS书籍,可以看到FreeRTOS的相关离线资料,FreeRTOS 官方有两份 PDF 文档,一份是 FreeRTOS 的指导手册,
一份是 FreeRTOS 的 API 函数参考手册。相比 uC/OS,FreeRTOS 的官方文档确实有点少
在这里插入图片描述
FreeRTOS 还有一个在线文档,可以直接在官网浏览,点击左侧开发者文档,里面可以看到FreeRTOS的各种资源介绍和使用方法,例如队列、任务通知、软件定时器等…,此处打开队列一项,显示如下:
在这里插入图片描述
点击左侧辅助文档,里面可以看到FreeRTOS的各种辅助工具使用方法,例如钩子函数、内存保护、跟踪调试等…
在这里插入图片描述
点击左侧辅助文档,可以看到一些能够适配受支持的微控制器系列中平台以及移植演示,的此页面仅列出了官方 RTOS 移植,仅供参考.
在这里插入图片描述
点击左侧API引用,详细地介绍了FreeRTOS中各个 API 的使用说明,包括 API 函数的参数说明、返回值说明以及 API 用法举例
在这里插入图片描述

四、FreeRTOS源码简介

FreeRTOS源代码已经下载完成,不过显示为:FreeRTOSv9.0.0.exe,直接双击,然后选择源码保存位置即可获取FreeRTOS源码
在这里插入图片描述
打开那么这三个文件分别是做什么用的呢?所示:
在这里插入图片描述
重点在于上面那两个文件夹:FreeRTOS 和 FreeRTOS-Plus, Plus 比普通的功能多一点,配置强大一点。点击FreeRTOS
在这里插入图片描述
● Demo 文件夹 :Demo 文件夹里面就是 FreeRTOS 的相关例程,是 FreeRTOS 针对不同的 MCU 提供了非常多的 Demo
● License 文件夹:这个文件夹里面就是相关的许可信息,要用 FreeRTOS 做产品的得仔细看看,尤其是要出口的产品。
● Source 文件夹 :看名字就知道了,这个就是 FreeRTOS 的源码了,点击如下
在这里插入图片描述
include 文件夹是一些头文件,移植的时候是需要的,下面的这些.C 文件就是 FreeRTOS 的源码文件了,移植的时候肯定也是需要的。
主要看一下portable 文件夹,里面的东西就是 FreeRTOS系统和具体的硬件之间的连接桥梁!不同的编译环境,不同的 MCU,其桥梁应该是不同的,打开 portable 文件夹:
在这里插入图片描述


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

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

相关文章

Photoshop最新版PS2024安装使用 Ver25.0.0

Photoshop,这个是长红了几十年的软件,我大概从它的3.0版本开始用,目前已迭代到25.0,但一直还在用CS4/11.0版本,一直秉持着够用即可的原则,因为不是专业的平面设计人员,能够简单PP图片就行。&…

C++智能指针及简单实现

C智能指针 堆内存、栈内存与静态内存静态内存栈内存堆内存 动态内存管理new、delete运算符智能指针实现智能指针 shared_ptr智能指针的线程安全问题解决 unique_ptrweak_ptr循环引用 思维导图本模块思路 动态内存管理 - cppreference.com 堆内存、栈内存与静态内存 静态内存 …

视觉测量基础

1. 相机模型 1.1 坐标系转换原理 世界坐标系(world Coords):点在真实世界中的位置,描述相机位置。 相机坐标系(Cameras Coords):以相机光学系统中心(镜头中心)为原点,建立相机坐标系。 图像物理坐标系(Film Coords):经过小孔成…

21 俄罗斯套娃信封问题

问题描述,给你一个二维数组envelopes,其中envelopes[i][wi,hi].表示第i个信封的宽度和高度,当另一个信封的宽度和噶度都比这个信封大的时候就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一套“俄罗…

Debugging Application Engine Programs 调试应用程序引擎程序

Debugging Application Engine Programs 调试应用程序引擎程序 This section discusses how to: 本节讨论如何: Enable the Application Engine debugger.启用应用程序引擎调试器。Set debugging options.设置调试选项。 Enabling the Application Engine Debu…

Java数组面试题

Java数组面试题 1. 创建一个包含多个元素的数组,并打印输出数组的内容。 public class Main {public static void main(String[] args) {String[] array {"apple", "banana", "orange"};for (String element : array) {System.out…

微服务实战系列之J2Cache

前言 经过近几天陆续发布Cache系列博文,博主已对业界主流的缓存工具进行了基本介绍,当然也提到了一些基本技巧。相信各位盆友看见这么多Cache工具后,在选型上一定存在某些偏爱: A同学说:不管业务千变万化,我对Redis的…

【华为OD题库-070】数列描述-java

题目 题目描述: 有一个数列A[n],从A[0]开始每一项都是一个数字,数列中A[n1]都是A[n]的描述,其中A[0]1,规则如下; A[0]:1 A[1]:11 含义其中A[0]1是1个1即11,表示A[0]从左到右连续出现了1次1 A[2]:21 含义其中A[1]11是2个…

企业如何制定精准营销策略?

在当今的数字化时代,位置数据已经成为企业营销策略中不可或缺的一部分。通过收集和分析客户的位置数据,企业可以更好地了解客户的行为和需求,制定更精准的营销策略,从而提高营销效率。 首先,利用IP地址位置数据可以帮助…

手搓图片滑动验证码_JavaScript进阶

手搓图片滑动验证码 背景代码效果图展示网站 背景 在做前端项目开发的时候,少不了登录注册部分,既然有登录注册就少不了机器人验证,验证的方法有很多种,比如短信验证码、邮箱验证码、图片滑动、图片验证码等。 由于鄙人在开发中…

9个Logo素材超多的Logo网站!

Logo 虽然看起来很简单,但是设计过程中的每一个细节都很精致。因为 Logo 作为品牌的象征,应该一目了然地传达给人们品牌的理念和形象。本文给大家整理了 7 个 Logo 素材网站和 2 个 Logo 在线制作网站。可以收集很多关 Logo 设计的内容和技巧&#xff01…

吉他初学者学习网站搭建系列(5)——如何做一个在线节拍器

文章目录 背景实现TransportLoop代码 在线尝试 背景 我们看吉他谱时,经常看到拍号,例如6/8。它的含义是一拍是一个八分音符,一小节有六拍。四分音符的时长是一秒,即60拍/分钟。基于这样的背景知识,我们就可以根据一些…

决策树 C4.5算法

C4.5算法 C4.5算法 C4.5 算法是 Ross 对ID3 算法的改进用信息增益率来选择属性。ID3选择属性用的是子树的信息增益而C4.5用的是信息增益率在决策树构造过程中进行剪枝对非离散数据也能处理能够对不完整数据进行处理 信息增益比(C4.5) g R ( D , A ) …

Leetcode 第 110 场双周赛 Problem D 2809. 使数组和小于等于 x 的最少时间(DP+贪心+正难则反)

Leetcode 第 110 场双周赛 Problem D 2809. 使数组和小于等于 x 的最少时间&#xff08;DP 好题&#xff09;题目 给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒&#xff0c;对于所有下标 0 < i < nums1.length &#xff0c;nums1[i] 的值都增加 num…

supervisor管理python进程

前言 平时开发调试中使用conda环境&#xff0c;项目比较多环境多&#xff0c;而且命令繁杂&#xff0c;每一次启动项目都可能会因为忘记启动方式而频繁报错。现在可以通过supervisor来管理&#xff0c;只需要配置几个文件&#xff0c;就可以轻松通过简单一致的命令启动工程&…

C++ day55 判断子序列 不同的子序列

题目1&#xff1a;392 判断子序列 题目链接&#xff1a;判断子序列 对题目的理解 判断字符串s是否为t的子序列 字符串s和字符串t的长度大于等于0&#xff0c;字符串s的长度小于等于字符串t的长度&#xff0c;本题其实和最长公共子序列的那道题很相似&#xff0c;相当于找两…

HashMap相关专题

前置知识&#xff1a;异或运算 异或运算介绍 异或有什么神奇之处&#xff08;应用&#xff09;&#xff1f; &#xff08;1&#xff09;快速比较两个值 &#xff08;2&#xff09;我们可以使用异或来使某些特定的位翻转&#xff0c;因为不管是0或者是1与1做异或将得到原值的相…

IntelliJ IDEA 2023.2新特性详解第三弹!Docker、Kubernetes等支持!

9 Docker 在 Docker 镜像层内预览文件 现在可以在 Services&#xff08;服务&#xff09;工具窗口中轻松访问和预览 Docker 镜像层的内容。 从列表选择镜像&#xff0c;选择 Show layers&#xff08;显示层&#xff09;&#xff0c;然后点击 Analyze image for more informati…

ES6对象

1.对象简写 ES6中规定可以直接在对象中写入变量和函数作为对象的属性和方法&#xff0c;此时属性名为变量名, 属性值为变量的值。对象简写在未来的使用频率极其高。 let namelarry;let age12;let obj{name,age,//es5 sayName:function(){}// sayName(){// console.log(t…

<软考>软件设计师-2操作系统(总结)

(一) 进程管理 1 操作系统概述 1-1 操作系统定义: 能有效地组织和管理系统中的各种软/硬件资源&#xff0c;合理地组织计算机系统工作流程&#xff0c;控制程序的执行&#xff0c;并且向用户提供一个良好的工作环境和友好的接口。 1-2 操作系统的作用: 1 通过资源管理提高计…