【FreeRTOS操作系统教程】第10章 FreeRTOS任务管理

第10章F r e e R T O S任务管理
对于初学者,特别是对于没有RTOS基础的同学来说,了解FreeRTOS的任务管理非常重要,了解任务管理的目的就是让初学者从裸机的,单任务编程过渡到带OS的,多任务编程上来。搞清楚了这一点,那么FreeRTOS学习就算入门了。
本章教程配套的例子含Cortex-M3内核的STM32F103和Cortex-M4内核的STM32F407以及F429。
10.1 单任务系统
10.2 多任务系统
10.3 FreeRTOS的任务设置
10.4 FreeRTOS的系统任务栈设置
10.5 FreeRTOS的任务状态
10.6 FreeRTOS启动
10.7 FreeRTOS的任务创建
10.8 FreeRTOS的任务删除
10.9 FreeRTOS的任务挂起
10.10 FreeRTOS的任务恢复
10.11 FreeRTOS的任务恢复(中断方式
10.12 FreeRTOS的空闲任务
10.13 实验例程说明
10.14 实验例程说明(中断方式)
10.15总结
10.1单任务系统
学习多任务系统之前,我们先来回顾下单任务系统的编程框架,即裸机时的编程框架。裸机编程主要是采用超级循环(super-loops)系统,又称前后台系统。应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看做后台行为;中断服务程序处理异步事件,这部分可以看做
是前台行为。后台也可以叫做任务级,前台也叫作中断级。
图10.1 单任务系统
对于前后台系统的编程思路主要有以下两种方式:
10.1.1查询方式
对于一些简单的应用,处理器可以查询数据或者消息是否就绪,就绪后进行处理,然后再等待,如此循环下去。对于简单的任务,这种方式简单易处理。但大多数情况下,需要处理多个接口数据或者消息,那就需要多次处理,如下面的流程图所示:
用查询方式处理简单的应用,效果比较好,但是随着工程的复杂,采用查询方式实现的工程就变得很难维护,同时,由于无法定义查询任务的优先级,这种查询方式会使得重要的接口消息得不到及时响应。比如程序一直在等待一个非紧急消息就绪,如果这个消息后面还有一个紧急的消息需要处理,那么就会使10.1.2 中断方式缀花草坪
对于查询方式无法有效执行紧急任务的情况,采用中断方式就有效地解决了这个问题,下面是中断方式简单的流程图:
楼层呼叫器
需要处理?
需要处理?
N
N
N
Y
Y
Y
系统和外设初始化
Process A
铝合金去毛刺机
Process B Process C
启动
采用中断和查询结合的方式可以解决大部分裸机应用,但随着工程的复杂,裸机方式的缺点就暴露出来了:◆ 必须在中断(ISR)内处理时间关键运算:
● ISR 函数变得非常复杂,并且需要很长执行时间。 ● ISR 嵌套可能产生不可预测的执行时间和堆栈需求。 ◆ 超级循环和ISR 之间的数据交换是通过全局共享变量进行的:
● 应用程序的程序员必须确保数据一致性。 ◆ 超级循环可以与系统计时器轻松同步,但:
● 如果系统需要多种不同的周期时间,则会很难实现。 ● 超过超级循环周期的耗时函数需要做拆分。 ● 增加软件开销,应用程序难以理解。
◆ 超级循环使得应用程序变得非常复杂,因此难以扩展:
宣传帽● 一个简单的更改就可能产生不可预测的副作用,对这种副作用进行分析非常耗时。 ● 超级循环概念的这些缺点可以通过使用实时操作系统 (RTOS) 来解决。
10.2 多任务系统
针对这些情况,使用多任务系统就可以解决这些问题了。下面是一个多任务系统的流程图:
进入睡眠模式
系统和外设初始化
翻模机
启动气相防锈
中断服务程序A
Process A 中断服务程序B
Process B 中断服务程序C
Process C
RTOS 的实现,重点就在这个调度器上,而调度器的作用就是使用相关的调度算法来决定当前需要执行的任务。如上图所示的那样,创建了任务并完成OS 初始化后,就可以通过调度器来和任务C 的运行,从而实现多任务系统。另外需要初学者注意的是,这里所说的多任务系统同一时刻只能有一个任务可以运行,只是通过调度器的决策,看起来像所有任务同时运行一样。为了更好的说明这个问题,再举一个详细的运行例子,运行条件如下: OS 初始化
系统和外设初始化
启动
OS 任务调度器
任务A
任务B
任务C

本文发布于:2024-09-22 09:38:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/154786.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:任务   系统   方式   中断   需要   处理   循环
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议