裸机与RTOS到FreeRTOS基础 | FreeRTOS一
创始人
2024-05-13 21:34:42
0

目录

一、裸机与RTOS

1.1、裸机

1.2、RTOS

二、FreeRTOS简介

2.1、介绍

2.2、特点

2.3、如何查找相关资料

三、FreeROTS基础

3.1、任务调度

3.2、任务状态


一、裸机与RTOS

1.1、裸机

        不带操作系统,又称为前后台系统,前台系统指中断服务函数,后台系统指主程序的大循环,即应用程序

特点:

1)实时性差(程序轮流执行)

2)空等待(在delay时,cpu不执行其他代码)

3)结构性差(实现功能全放在主函数循环中)

1.2、RTOS

        Real-time OS,也就是实时操作系统。

特点:

1)多任务,每个功能可以划分为一个任务

2)任务调度,高优先级任务延时时,会让出cpu试用期给低优先级使用

3)任务抢占,高优先级任务可以抢占低优先级任务

4)任务堆栈,每个任务都有自己的栈空间,用来保存相关数据

注意点:

1)中断可以打断任何等级的任务

2)可以存在优先级相同的不同任务

二、FreeRTOS简介

2.1、介绍

Free,免费的,RTOS实时操作系统,FreeRTOS就是一个免费的嵌入式实时操作系统。

2.2、特点

1)免费开源(降低了开发成本)

2)可裁剪(核心代码只有三个.c文件,9000行)

3)简单(可移植性好)

4)优先级不限(任务优先级分配没有限制,多任务可以同一优先级,硬件限制0-31)

5)任务不限(可创建的实时任务没有软件限制)

6)支持抢占/协程/时间片(任务调度)

2.3、如何查找相关资料

1)官网:https://www.freertos.org/

2)网络上其它分享平台如:正点原子学习资料、野火学习资料

ARM Cortex-M知识参考:

三、FreeROTS基础

3.1、任务调度

FreeROTS支持三种任务调度方式,如下:

1)抢占式调度:针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务;

2)时间片调度:一个时间片就等于SysTick中断周期(默认1ms),可设置,针对优先级相同的任务,当多个任务的优先级相同时,任务调度器会跟根据系统时钟节拍到的时候切换任务;

3)携程式调度:当前执行任务将会一直运行,同时高优先级的任务不会抢占的优先级的任务,FreeROTS现在虽然还支持,但是官方已经表示不会在更新携程式调度。

3.2、任务状态

FreeROTS中任务存在4中状态,如下:

1)运行态:正在执行的任务,该任务就处于运行态,在STM32中,同一时间仅一个任务处于运行态;

2)就绪态:该任务已经能够执行,但目前还未被执行,那么该任务就处于就绪态;

3)阻塞态:任务因延时或等待外部事件发生,那么这个任务就处于阻塞态;

4)挂起态:类似于暂停,调用函数vTaskSuspend()进入挂起态,需要调用解挂函数vTaskResume()才可以进入就绪态。

注意:

1)任务中途被打断或阻塞,没有用完的时间片不会被二次使用,在下次轮到该任务执行时,分配的是一个新的时间片;

2)仅就绪态可转变成运行态;

3)其它状态的任务想运行,必须先转变成就绪态。

四种状态转换图,如下图1:

图1

这四种状态中,除了运行态,其他三种任务状态的任务都有其对应的任务状态列表,如下:

就绪列表:pxReadyTasksLists[x],其中x代表任务优先级数值-->常用硬件较为稳定0-31,数字大优先级高

阻塞列表:pxDelayedTaskList

挂起类别:xSuspendedTaskList

那么如何知道列表中有没有任务呢?

定义一个32位的变量,当某个位置1时,代表所对应的优先级就绪列表有任务存在。

调度器总是在所以处于就绪列表的任务中,选择具有最高优先级的任务来执行。


 

上一篇:Wider Face+YOLOV8人脸检测

下一篇:JavaWeb-JSP

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...