版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目7嵌入式操作系统FreeRTOS及应用任务7.1基于FreeRTOS的多任务验证概述FreeRTOS项目引导物联网时代,32位MCU性能大幅度提高,价格逐渐走低,成为智能产品开发和设计的第一选择。实时操作系统RTOS(RealTimeOperatingSystem)也成为32位MCU应用的基础软件,它帮助支撑起越来越多的应用需求。本项目使用的STM32CubeMx软件工具,以及集成在CubeMx软件中的FreeRTOS嵌入式实时多任务操作系统,是目前物联网和嵌入式开发的主流平台,无论对有实际项目需求的开发者,还是在校学生都具备实际应用价值。随着软件功能的日趋复杂,迫切需要一个能屏蔽底层硬件的、功能强大的操作系统。基于操作系统的开发方式不仅能有效地提高开发效率,而且能够提高系统的可靠性和稳定性。任务7.1简单介绍了嵌入式操作系统的基本原理,结合实例阐述FreeRTOS在STM32F4系列微控制器的移植和开发流程。任务7.2重点介绍了FreeRTOS的任务管理和任务同步功能,分析了相关接口函数的用法和应用场景,并通过设计一个电子闹钟的综合实例来展示基于FreeRTOS的编程方式。任务目标FreeRTOS职业能力目标(1)能根据RTOS相关手册,利用STM32CubeMX准确配置STM32的操作系统。(2)能够在配置RTOS系统的基础上,配置驱动两只LED灯、配置串口显示浮点数计算能力。本任务的主要目的是帮助读者将RTOS理论付诸实践。实验使用的RTOS是FreeRTOS,选择它的原因如下。(1)FreeRTOS已经作为一个中间件,集成到CubeMx软件工具中。(2)FreeRTOS配置简单。(3)FreeRTOS提供了丰富易用的API。(4)大多数API与主流RTOS的API类似。任务描述485通信本次实验设计了4个任务:start_task()、led0_task()、led1_task()、printf_test()。任务功能如下。(1)start_task():用来创建其他三个任务。(2)led0_task():控制LED0闪烁,闪烁频率为2Hz。(3)led1_task():控制LED1闪烁,闪烁频率为5Hz。(4)printf_test():每秒钟打印一个浮点数的递增操作。任务描述任务要求任务7.1基于FreeRTOS的多任务验证(1)通过STM32CubeMX软件进行RTOS操作系统的配置。(2)实现上述任务描述中的四个任务功能。FreeRTOS1.嵌入式系统的开发方式知识链接轮询方式简单系统无需关心外设状态按键判别驱动指示灯驱动蜂鸣器驱动继电器前后台系统方式多适用于功能简单、系统结构清晰的产品非工作时微控制器处于停机或待机状态,所有的事务由中断服务完成,这样有利于降低功耗。多任务系统方式/基于嵌入式操作系统方式操作系统对嵌入式平台的硬件资源进行统一管理和分配。实时性好、开发效率高。FreeRTOS2.嵌入式操作系统的基本概念知识链接任务任务,也称为线程,是嵌入式操作系统中最重要的概念。在软件设计阶段,将一个复杂的嵌入式系统,根据具体应用,分解成具有独立功能的程序模块,这样的程序模块被称为任务。各个任务之间相互协作,利用操作系统提供的接口函数共同实现整个系统的功能。任务具有以下两大特性。(1)独立性任务之间不能彼此直接调用,也不能直接进行数据交换。(2)并行性操作系统为每个任务虚拟了一个CPU,相互独立的任务各自拥有一个CPU,每个CPU执行各自的任务。内核内核是嵌入式操作系统的核心模块,主要功能是负责任务的调度以及实现任务之间的相互作用(任务同步和通信)。FreeRTOS2.嵌入式操作系统的基本概念知识链接上下文切换任务的上下文(Context)指的是CPU寄存器[包括程序计数器(PC)]。当内核决定运行另外的任务时,它需要保存当前正在运行任务的上下文,这些内容将保存到任务自身的任务栈中。入栈工作完成后,再把下一个将要运行任务的上下文从其任务栈中重新装入CPU的寄存器,然后开始下一个任务的运行,这个过程称为任务切换或上下文切换。内核在嵌入式操作系统中,为了使系统达到高效处理和快速响应的目的,大量采用“事件驱动”的方式来编写任务,这里的事件表示一种具体的操作。例如,按键按下、串口接收完一帧数据以及定时时间到等都可以看作是一个事件。FreeRTOS3.任务调度简介知识链接FreeRTOS一共支持三种任务调度方式:抢占式调度协程式调度时间片调度主要是针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务。主要针对优先级相同的任务,当多个任务的优先级相同时,任务调度器会在每一次系统时钟节拍到的时候切换任务。调度器就是使用相关的调度算法来决定当前需要执行的哪个任务当前执行任务将会一直运行,同时高优先级的任务不会抢占低优先级任务,FreeRTOS现在虽然还支持,但是官方已经表示不再更新协程式调度。FreeRTOS抢占式调度知识链接优先级时间Task1Task2Task3Task2Task31232、Task1、Task2、Task3的优先级分别为1、2、3;在FreeRTOS中任务设置的数值越大,优先级越高,所以TASK3的优先级最高。运行条件:1、创建三个任务:Task1、Task2、Task3抢占抢占阻塞运行过程如下:1、首先Task1在运行中,在这个过程中Task2就绪了,在抢占式调度器的作用下Task2会抢占Task1的运行2、Task2运行过程中,Task3就绪了,在抢占式调度器的作用下Task3会抢占Task2的运行3、Task3运行过程中,Task3阻塞了(系统延时或等待信号量等),此时就绪态中,优先级最高的任务Task2执行4、Task3阻塞解除了(延时到了或者接收到信号量),此时Task3恢复到就绪态中,抢占TasK2的运行总结:1、高优先级任务,优先执行2、高优先级任务不停止,低优先级任务无法执行3、被抢占的任务将会进入就绪态FreeRTOS时间片调度知识链接优先级时间Task1Task2Task3Task1Task21个时间片2、Task1、Task2、Task3的优先级均为1;即3个任务同等优先级运行条件:1、创建三个任务:Task1、Task2、Task31阻塞运行过程如下:1、首先Task1运行完一个时间片后,切换至Task2运行2、Task2运行完一个时间片后,切换至Task3运行3、Task3运行过程中(还不到一个时间片),Task3阻塞了(系统延时或等待信号量等),此时直接切换到下一个任务Task14、Task1运行完一个时间片后,切换至Task2运行同等优先级任务轮流地享有相同的CPU时间(可设置),叫时间片,在FreeRTOS中,一个时间片就等于SysTick中断周期3、注意没有用完的时间片不会再使用,下次任务Task3得到执行还是按照一个时间片的时钟节拍运行2、一个时间片大小,取决为滴答定时器中断周期1、同等优先级任务,轮流执行;时间片流转FreeRTOS任务状态知识链接FreeRTOS中任务共存在4种状态:1、运行态2、就绪态3、阻塞态4、终止态正在执行的任务,该任务就处于运行态,注意在STM32中,同一时间仅一个任务处于运行态如果该任务已经能够被执行,但当前还未被执行,那么该任务处于就绪态如果一个任务因延时或等待外部事件发生,那么这个任务就处于阻塞态当任务的功能已经完成,不再需要该任务时,可以使任务挂起,处于终止状态,并释放任务拥有的资源FreeRTOS任务状态知识链接四种任务状态之间的转换图:当任务创建后,默认处于就绪态,由内核选择所有处于就绪态任务中优先级最高的一个任务来运行。在任务执行过程中,如果等待某个事件的发生或者执行延时操作,该任务将放弃CPU的使用权,变为阻塞态。如果等待的事件已经发生或者延时时间到后,任务又从阻塞态变为就绪态,等待内核的调度。当任务功能已经完成,不再需要该任务时,可以将任务挂起,使之处于终止态。总结:1、仅就绪态可转变成运行态2、其他状态的任务想运行,必须先转变成就绪态FreeRTOS任务三要素知识链接从任务的存储结构上看,任务主要由三部分组成:任务函数、任务栈和任务控制块。(1)任务函数每一个任务都要完成对应的功能,实现这个功能的函数就称为任务函数。任务函数从本质上来说,就相当于一个独立的前后台程序。操作系统所进行的任务调度,本质上就是调度任务函数,从一个任务的任务函数中退出,切换到另一个任务的任务函数中执行。任务函数一般设计为一个无限循环,在循环中至少要调用一次操作系统所提供的接口函数,以实现任务的调度以及任务之间的交互。(2)任务栈由于每个任务都是独立运行的,因此必须给每个任务提供单独的内存空间(RAM),这个内存空间称为任务栈。在任务的运行过程中,任务栈用于保存任务切换时的上下文环境、任务函数中定义的局部变量以及任务调用普通函数时保存的返回地址和传入普通函数的入口参数。在大多数情况下,任务栈的大小一般为几百个字节。(3)任务控制块任务控制块是内核定义的一个数据结构,里面包括了任务的基本属性,如任务栈指针、任务状态、任务优先级以及指向任务函数的指针等,内核通过任务控制块实现对任务的管理和调度。FreeRTOS时钟节拍知识链接知识链接时钟节拍是一个周期性的定时中断,定时中断的时间间隔一般在1ms到10ms之间。时钟节拍可以为操作系统提供延时功能,将任务延时若干整数倍的时钟节拍,以及当任务等待事件发生时,提供超时判断的依据。FreeRTOS嵌入式实时操作系统简介知识链接知识链接嵌入式操作系统(EmbeddedOperatingSystem,EOS)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、调度工作,控制协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。STM32常见的几种操作系统对于STM32嵌入式微控制器,常用到的是下面几种嵌入式操作系统:μC/OS-II、eCos、FreeRTOS和RT-thread。FreeRTOS嵌入式实时操作系统简介知识链接知识链接μC/OS-II:μC/OS-II是在μC/OS的基础上发展起来的,是用C语言编写的一个结构小巧、抢占式的多任务实时内核。eCos:eCos即嵌入式可配置操作系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。它最大特点是配置灵活,采用模块化设计,核心部分由不同的组件构成,包括内核、C语言库和底层运行包等。FreeRTOS:由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、FreeRTOS等少数实时操作系统能在小型RAM单片机上运行。相对于μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为6.0版。RT-thread:RT-thread是一款主要由中国开源社区主导开发的开源实时操作系统(许可证:GPLv2)。实时线程操作系统不仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时、嵌入式系统相关的各个组件,如TCP/IP协议栈、文件系统、libc接口和图形用户界面等。2023年RTOS榜单:国产RT-Thread入围排行榜。FreeRTOSFreeRTOS的任务特性知识链接知识链接在使用RTOS的时候,一个实时应用可以是一个独立的任务,每个任务都有自己的运行环境,CPU在任一时间点只能运行一个任务,具体运行哪个任务将由任务调度器决定。RTOS的任务特性如下。任务简单。没有使用限制,任务可以运行无数次。支持抢占和优先级。每个任务都拥有独立的堆栈,导致RAM必须较大。FreeRTOS知识链接任务实施任务实施之前必须准备好表7-1所列的设备/资源。序号设备/资源数量是否准备到位(√)1STM32F407ZET6最小系统1
2配书资源1
表7-1设备/资源清单表要完成本任务,实施步骤可以分成以下6步。使用STM32CubeMX工程配置RTOS。在源文件中添加代码。编译代码。硬件环境搭建。模块固件下载。结果验证。FreeRTOS具体实施步骤知识链接任务实施设置CubeMX环境创建项目,并将其设置为相应的IDE生成代码配置项目包含FreeRTOS,选择时基定时器1)使能FreeRTOS中间件2)设置时基源FreeRTOS具体实施步骤知识链接任务实施3)配置外设4)配置时钟5)在FreeRTOS中添加三个任务在Categories导航栏,单击“Middleware”,选“FREERTOS”,在Configuration栏,单击“TasksandQueues”,双击Task列表中的“Add”,按图7-11进行任务设置。6)生成代码FreeRTOS让我们遍历一下相关的代码。知识链接任务实施(1)创建线程(任务)标识符,如下代码在freertos.c文件中。osThreadIddefaultTaskHandle;osThreadIdled0_TaskHandle;osThreadIdled1_TaskHandle;osThreadIdmyfloat_taskHandle;(2)定义并创建线程,如下代码在freertos.c文件中。
/*Createthethread(s)*//*definitionandcreationofdefaultTask*/………………/*definitionandcreationofled0_Task*/………………/*definitionandcreationofled1_Task*/………………/*definitionandcreationofmyfloat_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 垂直于弦的直径 课件 2026-2027学年人教版九年级数学上册
- 2026秋小学冀人版科学五年级上册第二单元 简单机械《专题研究 我的机器》教学设计
- 社区医护岗考试题及答案
- 2026年一建市政公用工程实务考前考前必刷密卷试卷(含答案)
- 2026年一建民航机场工程实务考前综合仿真测评试卷(含答案)
- 2026大众hr面试题目及答案
- 2026年一建建筑实务考前摸底测评试卷及答案
- 2026广州技校面试题型及答案
- 2026夏季防汛安全知识培训
- 2026湖北会计面试题库及答案
- 2026新教材人教版九年级上册英语暑假预习:Unit 1 The Changing World 词汇详解
- 护栏安装工程承揽协议
- 2026驾照科目一全新全攻略:新规解读、核心考点与零基础通关指南
- 、2026 广州中考历史 试卷
- 2026年建筑电工(建筑特殊工种)考试题库及答案
- 2026年云南省中考物理真题
- 2026年秋国家开放大学国开电大机考期末园艺植物栽培学总论试题及答案
- 2026年黑龙江、吉林、辽宁、内蒙古高考物理试卷
- 肺结核咯血患者的护理未来发展趋势
- 隧道检测安全管理课件
- 野外安全生产制度
评论
0/150
提交评论