FreeRTOS学习笔记—基础知识

news2024/9/24 13:23:10

文章目录

  • 一、什么是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.coloradmin.cn/o/696711.html

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

相关文章

git查看/切换远程仓库

文章目录 一、查看远程仓库地址二、切换远程仓库地址三、整体演示 一、查看远程仓库地址 命令&#xff1a; git remote -v二、切换远程仓库地址 命令&#xff1a; git remote set-url <新的远程仓库地址>三、整体演示

pg报错attempted to delete invisible tuple

问题描述 postgresql数据库执行delete报错&#xff1a;attempted to delete invisible tuple&#xff0c;执行同样条件的select不报错 delete from lzltab1; select count(*) from lzltab1;执行全表删除和全表查询的结果&#xff1a; M# delete from lzltab1; ERROR: 5500…

有一个三位数,他的各个位数的阶乘相加得到这个数

有一个三位数,他的各个位数的阶乘相加得到这个数 1.描述 有一个三位数,它的各个位数的阶乘相加得到这个数 2.代码 输入数据 依次对个位&#xff0c;十位和百位进行拆解计算阶乘 然后相加看看是不是和原来的数据是相等 public class Mian4 {public static void main(String[…

ROS系列报错与解决方法

6.28 一、问题描述 ROS运行roscore命令后发现提示log文件(日志文件)大小超过1G,需要清理 Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt WARNING: disk usage in log directory [/home/wht/.ros/log] is over 1GB. Its recom…

红外线探测防盗报警器电路设计

该报警器能探测人体发出的红外线&#xff0c;当人进入报警器的监视区域内&#xff0c;即可发出报警声&#xff0c;适用于家庭、办公室、仓库、实验室等比较重要场合防盜报警。 一、电路工作原理 电路原理如图4所示。 该装置由红外线传感器、信号放大电路、电压比较器、延时…

这可能是最简单的Page Object库

做过web自动化测试的同学&#xff0c;对Page object设计模式应该不陌生。 Page object库应该根据以下目标开发&#xff1a; Page object应该易于使用 清晰的结构 PageObjects 对于页面对象 PageModules对于页面内容 只写测试&#xff0c;而不是基础。 在可能的情况下防止样…

【AI 充电】KServe + Fluid 加速大模型推理

作者&#xff1a;黄驰琳、露营、车漾 背景 KServe 是 Kubernetes 上的标准模型推理平台&#xff0c;专为高度可扩展的场景而构建&#xff0c;支持现代 Serverless 推理工作负载&#xff0c;用于在任意框架上提供机器学习&#xff08;ML&#xff09;模型服务。它提供高性能、高…

菜鸡shader:L5 fresnel、matcap和cubemap

文章目录 Fresnelshader forge实现UE4蓝图实现 Matcapshader forge实现UE4蓝图实现 CubeMapSD和PS制作所需的贴图shader forge实现unity代码实现UE4蓝图实现(未实现) Fresnel shader forge实现 个人理解是&#xff0c;使用观察方向和法向方向点乘&#xff0c;那就相当于我们的视…

adb-命令大全

目录 一、ADB简介 二、为什么要用ADB 三、ADB架构和原理 四、ADB日志状态 五、ADB常用命令 &#x1f381;更多干货 完整版文档下载方式&#xff1a; 一、ADB简介 ADB全称Android Debug Bridge&#xff0c;起到调试桥的作用&#xff0c;是一个客户端-服务端程序。其中客…

C++数据结构X篇_06_C++单向循环链表实现

本篇参考C单向循环链表实现整理&#xff0c;先搞懂结构框架&#xff0c;后期根据视频利用c对内容实现&#xff0c;也可以对c有更高的提升。 文章目录 1. 链表定义2. 链表插入3. 链表打印(注意打印过程是跳过头节点head的)4. 实验 单向循环链表与单向链表十分相似&#xff0c;具…

ST - NUCLEO-H723ZG ITM不生效的问题

文章目录 ST - NUCLEO-H723ZG ITM不生效的问题概述CubeMX配置点END ST - NUCLEO-H723ZG ITM不生效的问题 概述 在用NUCLEO-H723ZG官方板子做实验, 想用ITM打印一些调试信息出来. 不好使啊. 后来查问题, 发现 NUCLEO-H723ZG上的HSE, LSE的晶振无效, 等于是不能用外部的HSE, LS…

如何找到更多音视频开发学习资料和资源?

如果你对学习音视频开发感兴趣&#xff0c;以下是一些建议&#xff0c;可以帮助你获取更多相关的资料和资源&#xff1a; 在线学习平台&#xff1a;参考一些知名的在线学习平台&#xff0c;如Coursera、Udemy、edX等&#xff0c;搜索他们的课程目录&#xff0c;看是否有与音视频…

【SWAT水文模型】SWAT水文模型建立及应用第六期:SWAT模型率定(SWAT CUP)

SWAT模型率定&#xff08;SWAT CUP&#xff09; 1 准备工作2 水文模型率定&#xff08;SWAT CUP&#xff09;数据准备运行流程 参考 SWAT CUP的下载及安装参见另一博客-【SWAT水文模型】SWAT-CUP安装及使用 下面将具体介绍基于实测水文站数据进行水文模型的率定。 1 准备工作…

【Centos系统故障】虚拟机断电后centos7无法正常启动 XFS(sda3)

1. 背景&#xff1a; 虚拟机断电后centos7无法正常启动 XFS(sda3)&#xff0c;通常都是断电以及非法关机&#xff0c;杀掉虚拟机等突然中断系统的情况&#xff0c;会导致内存数据损坏&#xff0c;从而导致linux操作系统无法启动。 2. 解决办法&#xff1a; 清理掉内存数据&a…

windows10 安装wsl2+docker+php+nginx+mysql

第一步在windows10 上安装docker(可视化桌面) 第二步确定本地电脑开启虚拟化&#xff0c;同时确认下方图内容已经勾选 在cmd下使用命令&#xff1a;wsl --install 安装wsl2。因 wsl2 默认安装ubuntu系统。如果安装wsl2后没有安装ubuntu系统&#xff0c;则需要去谷歌商店里搜索…

AutoJs案例---登录界面

"ui";showLoginUI(); ui.statusBarColor("#000000") //顶部颜色为黑色//显示登录界面 function showLoginUI(){ui.layout(<frame><vertical h"auto" align"center" margin"0 50"><linear><text w"…

Nextcloud实现协同办公 -V2

V1在这里&#xff1a;https://blog.csdn.net/philosophyatmath/article/details/130594037。V2没有继续使用onlyoffice而是使用nextcloud office Nextcloud 安装 LAMP&#xff08;LinuxApacheMySQLPHP&#xff09;方式。局域网单机模式。 安装环境&#xff1a; OS:ubuntu 2…

【Redis】Redis配置以及常用命令

文章目录 一、关系型数据库 与 非关系型数据库1. 关系型数据库的概念2. 非关系型数据库的概念3. 关系型数据库和非关系型数据库区别3.1 数据存储方式不同3.2 扩展方式不同3.3 对事务性的支持不同 4. 非关系型数据库产生背景5. 总结5.1 两组区别5.2 创建实例过程 二、Redis 的概…

【玩转Linux操作】详细讲解Shell的判断,循环语句

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;判断语句⭐单层if&#x1f388;示例 ⭐…

什么是动态住宅代理?

随着网络的迅速发展&#xff0c;许多人对代理IP已经有了比较深刻的认识&#xff0c;并且广泛地运用到了各自的业务中&#xff0c;尤其在跨境的相关业务中表现尤其卓越。对于代理IP的类别&#xff0c;也需要根据自己的业务类型具体选择最合适的&#xff0c;那么今天就给大家具体…