FreeRTOS学习笔记—基础知识

文章目录

  • 一、什么是RTOS
  • 二、前后台系统
  • 三、实时内核(可剥夺型内核)
  • 四、RTOS系统
  • 五、FreeRTOS系统简介
  • 六、FreeRTOS源码下载

一、什么是RTOS

RTOS全称为:Real Time OS,就是实时操作系统核心在于实时性。实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。在实时操作系统中,我们可以把要实现的功能划分为多个任务,每任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是个死循环。

RTOS操作系统并不是单指FreeRTOS,它包括很多种,比如FreeRTos,UCOS,RTX,RT-Thread,DJYOS等。采用实时操作系统可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。

二、前后台系统

前后台系统就是我们做嵌入式开发时常用的,一个while(1)轮询,搭配一些中断服务函数。中断服务函数就是前台部分,while(1)轮询是后台部分。如果没有中断请求,软件按照顺序执行while(1)轮询中的各个业务,如果有中断请求。先暂停while(1)中的业务,转去处理中断服务函数内容。处理完成中断后,再继续轮询执行while(1)中的业务。前后台系统有一个很严重的问题,它的业务都是在while(1)中轮流执行的,对于一些紧急任务,无法实时响应,而且任务管理也不方便。但是对于利用单片机进行简单的项目开发,前后台系统足以应付。对于一些业务比较庞大,实时性要求高的项目中,就需要用到RTOS实时操作系统。

前后台系统示意图

三、实时内核(可剥夺型内核)

RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。多任务管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。

Freeos的内核是可剥夺型的。可剥夺内核顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。剥夺其他任务的使用权,是由任务调度器来完成的。任务调度器是实时操作系统的核心部分,它会根据任务优先级来分配COU使用权。优先级高的任务处于就绪态时,会告诉任务调度器,请求CPU使用权。

四、RTOS系统

RTOS也会划分许多任务,每一个任务都有自己的任务优先级。高优先级的任务,优先运行。但是中断依旧向前后台系统一样,可以打断任何一个任务。如果在运行低优先级任务时,有一个高优先级的任务就绪,任务调度器就会把CPU使用权转交给高优先级的任务。高优先级任务执行时,可以被中断或者更高优先级的任务打断。

在前后台系统中,中断打断某一个任务,处理完中断后,会接着执行该任务。但是在实时操作系统中,如果某一个任务被中断打断,在处理完中断后,会再执行一次任务调度,会判断当前处于就绪状态的最高优先级的任务是否比中断之前的任务优先级高,如果是的话,会转而执行高优先级任务。总结来说,RTOS系统运行的永远都是处于就绪态的优先级最高的任务。

RTOS系统示意图

五、FreeRTOS系统简介

RTOS上面介绍了,是实时操作系统。Free,是免费的意思。FreeRTOS有以下特点

  • 可裁剪、可剥夺型的多任务内核
  • 没有任务数限制
  • 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等
  • 绝大部分都是用C语言编写,只有极少数的与处理器密切相关的部分代码才是用汇编写的
  • 结构简洁,可读性强

FreeRTOS有许多优点

  • FreeRTOS开源
  • FreeRTOS免费
  • FreeRTOS是许多第三方组件使用的系统

六、FreeRTOS源码下载

可以去下面这两个网站下载FreeRTOS的源码

FreeRTOS官网
FreeRTOS代码托管网站

进入代码托管网站

代码托管网站

这里因为看到其他博主说,V9.0.0 虽然不是最新版本的源码包,但是因为内核很稳定, 并且网上资料很多,所以这里也选择下载V9.0.0。

V9.0.0下载

下载完解压即可。

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

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

相关文章

Servlet

1.Servlet是什么 Servlet是一种实现动态页面的技术。是一组Tomcat提供给程序员的API,帮助程序员简单高效的开发一个web app 回顾 动态页面 VS 静态页面 静态页面也就是内容固定的页面,即使 用户不同/时间不同/输入参数不同,页面的内容也不…

LVS负载均衡群集

目录 企业集群的应用 1、什么是集群 2、集群使用在哪个场景 3、集群分类(三种 )集群类型 负载均衡 高可用 高性能运算 4、负载均衡集群的架构 5、负载均衡集群工作模式 6、LVS虚拟服务器 LVS ipvsadm LVS和nginx比较 7、LVS负载调度算法 8、案例LVS-NAT部署实战 企…

数学建模——曲线拟合

一、曲线拟合简介 1、曲线拟合问题的提法 已知一组数据(二维),即平面上n个点 (xi,yi)(i1,2,…,n), xi互不相同。寻求一个函数yf(x),使得f(x)在某种准则下与所有的数据点最为接近,即拟合得最好。 2、…

【雕爷学编程】Arduino动手做(149)---MAX9814咪头传感器模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

docker框架02docker的安装

01.这次的docker是在centos版本下的Linux系统中安装的。 02.输入命令 01.先去卸载就得版本 02.安装工具包,和设置镜像仓库 03.由于网络的问题,访问国内的阿里云镜像 修改: 04.更新索引和安装社区版的docker 05.启动docker 06.用命令d…

postman不能进行并发测试

1.按照网上文档的配置 2.在登录接口里睡眠5s,如果是并发的话,所有的请求都会一起睡眠5s 3.测试结果:请求是每隔5s串行执行的

Microsoft遭遇DDoS攻击,3000万客户数据遭窃

6月初,微软部分服务遭遇严重中断,包括Outlook电子邮件、OneDrive文件共享应用程序和云计算基础设施Azure。 一个名为”匿名苏丹”的(又名“风暴-1359”)的组织声称对此次DDoS攻击负责。 匿名苏丹组织自2023年1月以来一直活动频繁,声称其目标…

反向代理缓存服务器 Squid 、Nginx、CDN部署讲解

目录 一、Squid 反向代理1.1 概念1.2 工作机制1.3 搭建 二、 Nginx 反向代理缓存 一、Squid 反向代理 1.1 概念 如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 Web 服务器请求资源&a…

pytorch 的matmult()函数详解

torch.matmul()也是一种类似于矩阵相乘操作的tensor连乘操作。但是它可以利用python中的广播机制,处理一些维度不同的tensor结构进行相乘操作。 matmul 就是矩阵求 叉乘 如果是二维矩阵,两个矩阵的大小应该为m*n ,n*m。 一维向量的乘积&…

数据结构之队列

1.队列的定义 队列(Queue):也是一种运算受限的特殊线性表。其插入和删除操作分别在线性表的两端进行(只允许在表的一端进行插入,而在另一端进行删除)。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear) …

python读取广州-湛江天气csv文件并做可视化仪表盘

1.读取广-湛.csv文件 import pandas as pd data pd.read_csv(广-湛天气.csv) data 2.去除多余字符 #去除多余字符 data[[最高温度,最低温度]] data[[最高温度,最低温度]].apply(lambda x: x.str.replace(,).replace(, 0)) data.head() 3.删除2023年数据,并计算平均温度保存到…

全网最全,Pytest自动化测试框架 assert 断言使用实战,快速通关

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Pytest与Unittest…