首页 > 其他分享 >FreeRTOS操作系统(详细速通篇)——— 第一章

FreeRTOS操作系统(详细速通篇)——— 第一章

时间:2024-07-19 11:26:38浏览次数:7  
标签:优先级 操作系统 FreeRTOS 通篇 打游戏 裸机 任务

        本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅

目录

1 FreeRTOS简介

1.1 什么为FreeRTOS?

1.2 为什么选择FreeRTOS?

1.3 FreeRTOS与裸机的区别?

1.3.1 裸机中将如何处理?

1.3.2 FreeRTOS操作系统中将如何处理?

1.4  FreeRTOS与裸机的特点

1.4.1 裸机

1.4.2  FreeRTOS

1 FreeRTOS简介

1.1 什么为FreeRTOS?

        首先,来看一下 FreeRTOS 这个名字,可以分为两部分:“Free”和“RTOS”。“Free”意味着免费、自由和不受约束,而“RTOS”则是实时操作系统(Real Time Operating System)的缩写。需要注意的是,RTOS 并不是指某一个特定的操作系统,而是一个类别,包括 μC/OS、FreeRTOS、RTX 和 RT-Thread 等等。这些都是 RTOS 类的操作系统。因此,从 FreeRTOS 这个名字中我们可以看出,它是一款免费的实时操作系统。

1.2 为什么选择FreeRTOS?

        市场上的操作系统众多,为什么我们要选择FreeRTOS操作系统呢?并且大多数开发者都在使用此操作系统呢?原因如以下几点:

  • 1.简单易用:FreeRTOS 使用简单,具有很好的可移植性,适合各种嵌入式开发平台;

  • 2.任务不限:可创建的实时任务数量没有软件限制,根据系统资源灵活配置;

  • 3.优先级不限:任务优先级分配没有限制,多个任务可以设置为同一优先级,灵活性高;

  • 4.调度方式:支持抢占式调度、协程式调度(不再更新)、时间片调度,满足不同应用需求;

  • 5.可裁剪:核心代码仅有 9000 多行,包含在 3 个 .c 文件中,非常容易裁剪和管理;

  • 6.免费开源:FreeRTOS 是免费开源的,无潜在商业风险,无须担心版权问题;

  • 7.模块化设计:FreeRTOS 采用模块化设计,使各个功能模块相互独立;

  • 8.低功耗管理:FreeRTOS 支持进入各种低功耗模式,帮助延长电池寿命。

1.3 FreeRTOS与裸机的区别?

         FreeRTOS与裸机的最大区别是:FreeRTOS在遇到突发情况的时候,可以进行程序的切换,然后再切换回来。举例来说:小王同学在打游戏,对象突然发来消息,并且过了一会儿肚子痛了。分别对应以下三种事件:

事件1:打游戏       

事件2:对象消息       

事件3:拉肚子

1.3.1 裸机中将如何处理?

       裸机处理的方式就比较简单呆傻,会在完成一件事情之后再去完成另外一件事情。举例来说,程序会安排排列顺序依次运行。

对于裸机系统而言:
while(1) 
{ 
	打游戏();
	回复信息(); 
	上厕所();
}

        在小王打完游戏之后,然后进行回复消息,然后进行上厕所。最后,回复对象消息不及时对象生气了,拉肚子也没有上厕所,忍着肚子痛打完设定时长的游戏。这个处理方式明显不合理,但裸机只会按照任务的顺序运行。于是有了我们的 FreeRTOS操作系统来改变这一方式。

1.3.2 FreeRTOS操作系统中将如何处理?

        FreeRTOS的做法相对裸机来说会非常的聪明,首先创建三个任务

在打游戏的途中,如果收到对象的消息直接进行回复然后继续打游戏,肚子痛了就是上厕所然后回来可以继续打游戏。合理的将事情进行处理掉。  FreeRTOS处理的情况如下图:

1.4  FreeRTOS与裸机的特点

1.4.1 裸机

        裸机系统,又称为前后台系统,由前台的中断服务函数和后台的主循环构成,运行时按照设定的任务顺序进行运行,以下是对裸机系统的一些问题的详细描述:

  • 实时性差:应用程序轮流执行,导致实时性能不佳。
  • 延迟:系统可能会空等待,浪费CPU时间。
  • 结构臃肿:功能实现都在无限循环中,结构复杂且难维护。

1.4.2  FreeRTOS

RTOS特点:RTOS,全称为实时操作系统(Real Time OS),其主要特点是强调实时性。。具体特点如下:

  1. 延时函数:用于任务调度。
  2. 抢占式调度:高优先级任务可以抢占低优先级任务的执行。
  3. 任务堆栈:每个任务都有独立的栈空间。
  4. 分而治之:将功能划分为多个独立任务。

FreeRTOS其主要采用任务优先级的大小进行运行:任务优先级大的任务先运行,且可以打断任务优先级低的任务,在任务优先级高的任务运行完之后,低优先级任务继续执行。

        本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。期待诸君的关注点赞!

标签:优先级,操作系统,FreeRTOS,通篇,打游戏,裸机,任务
From: https://blog.csdn.net/weixin_49007164/article/details/140397966

相关文章

  • Linux操作系统Redhat<>--用户与组
    用户(超级、系统、普通)用户分类:1、超级用户。用来管理操作系统,它的权限非常高。一般是创建用户等条件下使用。它的编号为0(uid)。2、普通用户。用来登录操作系统,使用操作系统的功能。它的编号范围1000-600003、系统用户。确保系统能够正常运行。不用来登录。它的编号范围1-99......
  • 操作系统基础(一)
    目录一.定义计算机系统层次结构二.功能一:资源管理者处理机管理存储器管理文件管理设备管理三.功能目标二:实现用户接口(向上层提供服务)GUI图形化用户接口联机/脱机命令接口程序接口四.操作系统的特征并发性共享性虚拟异步五.操作系统发展与分类手工操作阶段批处理......
  • 从操作系统层面认识Linux
     描述进程-PCBLinux操作系统下的PCB是:task_structhttps://www.cnblogs.com/tongyan2/p/5544887.htmlhttps://www.cnblogs.com/tongyan2/p/5544887.html校招必背操作系统面试题-什么是PCB(进程控制块)?_哔哩哔哩_bilibili校招必背操作系统面试题-什么是PCB(进程控制块)?,视......
  • 操作系统发展简史(Unix/Linux 篇 + DOS/Windows 篇)+ Mac 与 Microsoft 之风云争霸
    操作系统发展简史(Unix/Linux篇)说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是android(安卓)和iOS系统。如果是从事信息通信行业,还经常会和ubuntu、CentOS、Fedora这样的Linux......
  • 第二章 操作系统的运行机制
    中央处理器一:CPU的构成与基本的工作方式1、CPU组成(1)CPU由运算器、控制器、一系列寄存器、高速缓存组成运算器:实现指令中的算术和逻辑运算,是计算机系统的和兴控制器:负责控制程序的运行流程、包括取指令、维护CPI的状态寄存器:存取数据和指令(在CPU内部)高速缓存:位于CPU和物理内......
  • 如何使用ventoy安装操作系统
    使用ventoy安装操作系统vrntoy简介简单来说,Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把ISO/WIM/IMG/VHD(x)/EFI等类型的文件直接拷贝到U盘里面就可以启动了,无需其他操作。你可以一次性拷贝很多个不同类型的镜像文件,Ventoy会在启动......
  • 操作系统实验四 文件管理
    实验目的与要求:   实验目的:(1)、掌握计算机操作系统管理进程、处理机、存储器、文件系统的基本方法。(2)、了解进程的创建、撤消和运行,进程并发执行;自行设计解决哲学家就餐问题的并发线程,了解线程(进程)调度方法;掌握内存空间的分配与回收的基本原理;通过模拟文件管理的工作......
  • 操作系统综合实验二
    实验目的与要求:   实验目的:(1)、掌握计算机操作系统管理进程、处理机、存储器、文件系统的基本方法。(2)、了解进程的创建、撤消和运行,进程并发执行;自行设计解决哲学家就餐问题的并发线程,了解线程(进程)调度方法;掌握内存空间的分配与回收的基本原理;通过模拟文件管理的工作......
  • FreeRTOS
    1.栈的大小栈的大小通常指的是每个任务(或线程)在运行时分配的内存空间,用于存储局部变量、函数调用信息(如返回地址、参数等)、临时数据等。它和任务的大小有一定关系,但并不是直接对应的。代码片段中:_Min_Heap_Size=0x400;/*requiredamountofheap*/_Min_Stack_Size=0x10......
  • 2024go语言micro框架搭建踩坑解决(go版本: 1.22.5, 操作系统: ubuntu24.04, 感觉坑和
    在这两天准备学习go语言微服务相关东西时要使用micro框架,因为看的视频是用的低版本go编译器和GOPATH,使用的是旧版本的micro框架,因为找不到和视频对应的框架版本,下载了半天跑不动网上一搜全是22,21甚至更早的搭建micro的文档,很到东西现在不适应了(比如"github.com/golang/pr......