【Free RTOS简介】

article/2025/8/20 8:44:33

free rtos学习笔记之整体简介

简介

free rtos实际上是分为两个部分,即freertos,其中free是免费的意思,rtos(Real Time Operating System)则是实时操作系统的意思,连在一起是,这个实时操作系统是开源的,能够免费使用。

那么什么是实时操作系统呢
如果操作系统能使计算机系统及时的响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能在一个规定的时间内完成对事件的处理,那么这种系统就称为实时操作系统(RTOS)。

FreeRTOS 又能够为我们提供什么功能,或者说我们用它能够干什么呢
FreeRTOS 提供的功能包括:任务管理时间管理信号量消息队列内存管理记录功能等,可基本满足较小系统的需要。FreeRTOS 内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU 总是让处于就绪态的、优先级最高的任务先运行。FreeRT0S 内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU 的使用时间。

任务管理

在FreeRTOS 中,每个执行线程都被称为”任务”即该线程要做的事情,类似于上级给下级分活,每个活就是一个任务。

应用程序可以包含多个任务。如果运行应用程序的微控制器只有一个核(core),那么在任意给定时间,实际上只会有一个任务被执行。这就意味着一个任务可以有一个或两个状态,即运行状态和非运行状态,实际上非运行状态又分为阻塞态、挂起态和就绪态。下面是对几个状态的解释:

运行态:如果系统正在执行任务A,那么我们称任务A当前处于运行态。
阻塞态:如果一个任务正在等待某个事件,则称这个任务处于”阻塞态(blocked)”。
挂起态:处于挂起状态的任务对调度器而言是不可见的,我们可以理解为,我们把任务A给暂时隐藏起来,后面还可以恢复。
就绪态:如果任务处于非运行状态,但既没有阻塞也没有挂起,则这个任务处于就绪(ready,准备或就绪)状态。处于就绪态的任务能够被运行,但只是”准备(ready)”运行,而当前尚未运行。
下图是几个状态的状态机:
在这里插入图片描述

队列

FreeRTOS 的应用程序实际上是由一组独立的任务构成。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS 中所有的通信与同步机制都是基于队列实现的。

中断管理

嵌入式实时系统需要对整个系统环境产生的事件作出反应。他们需要处理来自各种源头产生的事件,这些事件对处理时间和响应时间都有不同的要求。在各种情况下,都需要作出合理的判断,以达到最佳事件处理的实现策略:
1、事件如何被检测到
通常采用中断方式,但是事件输入也可以通过查询获得。
2、什么时候采用中断方式?中断服务例程(ISR)中的处理量有多大?以及ISR 外的任务量有多大
通常情况下,ISR 应当越短越好。

资源管理

在多任务系统中,实际上存在一种潜在的风险。当一个任务在使用某个资源的过程中,即还没有完全结束对资源的访问时,便被切出运行态,使得资源处于非一致,不完整的状态。如果这个时候有另一个任务或者中断来访问这个资源,则会导致数据损坏或是其它相似的错误。举个例子如下:
考虑如下情形,有两个任务都试图往一个LCD 中写数据:
任务A 运行,并往LCD 写字符串”Hello world”。

任务A 被任务B 抢占,但此时字符串才输出到”Hello w”。

任务B 往LCD 写”Abort, Retry, Fail?”,然后进入阻塞态。

任务A 从被抢占处继续执行,完成剩余的字符输出——“orld”。

现在LCD 显示的是被破坏了的字符串”Hello wAbort, Retry, Fail?orld”。

那么怎么解决上述的问题呢
访问一个被多任务共享,或是被任务与中断共享的资源时,需要采用”互斥”技术以保证数据在任何时候都保持一致性。这样做的目的是要确保任务从开始访问资源就具有排它性,直至这个资源又恢复到完整状态。
FreeRTOS 提供了多种特性用以实现互斥,但是最好的互斥方法(如果可能的话,任何时候都当如此)还是通过精心设计应用程序,尽量不要共享资源,或者是每个资源都通过单任务访问。

总结

该篇文章主要就是简单的介绍下rtos,让自己简单理解rtos能够干什么,有什么功能。

整体来说就是,rtos里面的调度系统可以帮我们处理任务,然而,我们知道单个任务只是实现某一个功能,这显然不是我们想要的,我们需要多个任务互相配合来实现更加强大的功能,而如何让这些任务进行互通信息呢?答案就是队列。我们知道不同任务怎么互通后,那么新的问题就来了,在多任务系统中,实际上存在一种潜在的风险。当一个任务在使用某个资源的过程中,如果这个时候有另一个任务或者中断来访问这个资源,则会导致数据损坏或是其它相似的错误。那么rtos是有对应的处理的,即资源管理,而这种管理的方式就是采用互斥的技术。


http://chatgpt.dhexx.cn/article/Pmc3jVtN.shtml

相关文章

缺陷检测~Anomalib

这里说说如何应用Anomalib在数据集不平衡的情况下检测缺陷 Paula Ramos,英特尔 AI 软件布道师,美国 武卓,英特尔 AI 软件布道师,中国 Samet Akcay,英特尔人工智能研究工程师/科学家 在《如何应用Anomalib在数据集不平…

MS-RTOS正式发布啦!!!

仓库地址 GitHub:https://github.com/ms-rtos?fromtimeline GiTee:https://gitee.com/ms-rtos 一、MS-RTOS 简介 MS-RTOS(Micro Safe RTOS) 是翼辉信息全新设计的一款面向未来的安全实时操作系统,其最大的特点是开创…

15. RDMA之RoCE Soft-RoCE

转自:https://zhuanlan.zhihu.com/p/361740115 阅读本文前建议温习“RDMA概述”一文,了解下RDMA领域的基本概念。 我已经在基本概念篇里面跟大家对本领域的基本知识进行了科普,在对于基本的宏观概念有了认识之后,我们就可以开始更…

用firadisk+grub4dos实现的RAMOS的方法

论坛里有很多Ramos的教程,不过大多数大是MS自己的Ramdisk驱动用Ntldr引导方式实现的,最近新兴一个驱动叫firadisk,这个是Grub4DOSMap --mem虚拟出来的硬盘在WIN下的驱动,通过这种方式也能做出Ramos,而且限制很少&#…

基于 PyTorch 的目标检测和跟踪(无敌版)

一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055qq.com Time of completion:2023.2.1 Last edited: 2023.2.1 目录 图像中的目标检测 视频中的目标跟踪 作者有言 在文章《基于 PyTorch 的图像分类器》中,介绍…

CMSIS-RTOS是什么?

关注星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang CMSIS:Cortex Microcontroller Software Interface Standard,Cortex微控制器软件接口标准。它包含的内容比较多: CMSIS-RTOS:主要用于…

RAM Sequential

前段时间,在公众号上偶然看到一篇很不错的技术分享文章:《南湖处理器DFT设计范例》。文中详细介绍了中科院计算所的RISC-V处理器实施的DFT设计。 去年,也基于一款处理器应用过Share Test Bus技术,但在memory界面fault测试的问题&a…

monoSLAM

单目相机的优点(和双目相机相比):双目相机测得的深度距离收到基线长度的限制,单目相机就可以解决这个问题。 参考博客:http://blog.csdn.net/heyijia0327/article/details/50758944 (一定要看&#xff0c…

Linux一键实现ramos打造自己的livecd

软件名:remastersys作者:nerun个人亲测可用,kali和ubuntu下都成功了,直接一键将当前使用的系统打包成iso,启动测试如下:1:iso直接加载启动成功进入ramos2:iso解压文件到根目录&#…

RAMOS系统简介及制作

同步发布在个人博客上:https://www.zhyong.cn ,可通过搜索文章名称找到该文章! RAMOS系统简介 内存操作系统(RAMOS)是全内存运行,启动后不依赖硬盘的Windows系统。它的原理是利用特殊的软件把多余的内存虚拟为内存盘,然…

如何打造内存操作系统RAMOS?

如何打造内存操作系统RAMOS?添加链接描述 把系统放进内存里 自己打造高速RAMOS 所谓内存操作系统就是全内存运行,系统将不再依赖硬盘。如今科技这么发达,电脑内存也越来越大,如果我们可以利用剩余内存来制作虚拟磁盘&#xff0c…

RAMOS(全内存操作系统)初识----仅供测试

内存操作系统(RAMOS)是全内存运行,启动后不依赖硬盘的Windows系统。它的原理是利用特殊的软件把多余的内存虚拟为内存盘,然后将制作好的操作系统镜像释放到这个虚拟内存盘中运行,让Windows操作系统和应用软件完全工作于内存之中,从…

英语拼读规则

前言: 想学英语就要用英语的思维去学。不能用某国某人指定的方法。误人子弟呀!! 一、就英语就要像学汉语一样要学会拼音,拼音会了汉字自然就会读了。 第一步:26个字母的【音标】要记牢。不只会写字母 也要会写字母对应…

英语名词复数s的发音规则

目录 1. 英语名词复数s的发音规则 1. 在清辅音后发/s/,[p], [t], [k], [h]; [f], [x], [s], [𝛉], [ꭍ]; [ts], [tr], [tꭍ]。记忆顺口溜:婆婆有位特殊的客户 ,她叫福西施,t前缀 2. 在浊辅音和元音后发/z/音&#x…

英语口语中的音变现象及读音规则

英语口语中的音变现象是指再说英语的过程中出于“省力” 的原因,在读英语的时候唇舌处于放松的状态,可以让我们更轻松地说英语。音变现象包括:连读,弱读,缩读,浊化,异化。这五大音变现象最具有代…

英语语法---读音规则

一、48个音标(音素)简表(18大语音语变现象) 单元音又分为前元音、中元音和后元音,其区分点在于发音时舌身是在口腔的前部、中部还是后部 音素发音链接:https://en-yinbiao.xiao84.com/ 18大语音语变现象&…

链表之头指针、头结点、首元结点、空链表

链表之头指针、头结点、首元结点、空链表 文章目录 链表之头指针、头结点、首元结点、空链表前言疑问整理头指针,头结点,首元结点定义首元结点定义头指针定义头结点定义 疑问回答 前言 最近在用力扣刷链表的题,总是写不出来,对这…

求二叉树指定结点到根结点的路径c++ 非常详细。

看了很多 没有看见完整的代码 我喜欢喂饭喂到嘴边。 部分代码参考16 二叉树:以x为根的子树的深度_DHU杨骅麟(紫外线过敏)的博客-CSDN博客 面试经典(16)--二叉树根节点到指定节点的路径_nginux的博客-CSDN博客_二叉树根节点到目标节点路径 运…

二叉树的结点数

二叉树的结点数(*) (10分) 已知二叉树的结点结构定义如下: typedef struct _NODE_ {char data;struct _NODE_ *lch, *rch; } NODE; 说明:data 为数据域,均为英文大写字母。lch 和 rch 分别为指示左、右孩子的指针。 请编写函数,求二叉树的结点个数。 函数原型 // 结点…

求一个结点x在在二叉树中的双亲结点算法

1、算法思想 使用先序递归遍历思想完成算法设计。首先判断节点的左右孩子是否存在,若存在,并且左右孩子中有一个符合查找要求,则返回元素!否则,继续递归查找,直到成功或者找不到符合要求的结点&#xff01…