FreeRTOS 中应用既可以使用任务,也可以使用协程(Co-Routine),或者两者混合使用。但是任务和协程使用不同的API函数,因此不能通过队列(或信号量)将数据从任务发送给协程,反之亦然。
协程是为那些资源很少的 MCU 准备的,其开销很小,但是 FreeRTOS 官方已经不打算再更新协程了。
任务特性:
1、简单。
2、没有使用限制。
3、支持抢占
4、支持优先级
5、每个任务都拥有堆栈导致了 RAM 使用量增大。
6、如果使用抢占的话的必须仔细的考虑重入的问题。
协程(Co-routine)的特性
协程是为那些资源很少的 MCU 而做的,但是随着 MCU 的飞速发展,性能越来越强大,现在协程几乎很少用到了!但是 FreeRTOS 目前还没有把协程移除的计划,但是 FreeRTOS 是绝对不会再更新和维护协程了,因此协程大家了解一下就行了。在概念上协程和任务是相似的,但是有如下根本上的不同:
1、堆栈使用:所有的协程使用同一个堆栈(如果是任务的话每个任务都有自己的堆栈),这样就比使用任务消耗更少的 RAM。
2、调度器和优先级:协程使用合作式的调度器,但是可以在使用抢占式的调度器中使用协程。
3、宏实现:协程是通过宏定义来实现的。
4、使用限制:为了降低对 RAM 的消耗做了很多的限制。
-
嵌入式
+关注
关注
5158文章
19730浏览量
318573 -
RAM
+关注
关注
8文章
1392浏览量
117746 -
FreeRTOS
+关注
关注
13文章
493浏览量
64532 -
任务
+关注
关注
1文章
20浏览量
8655
发布评论请先 登录
谈谈协程的那些事儿

【转载】AT32 FreeRTOS应用笔记
在STM32下完成FreeRTOS的多任务程序开发
如何在STM32下完成一个基于FreeRTOS的多任务程序
什么是多任务系统?FreeRTOS任务与协程简析
什么是FreeRTOS?怎样去移植FreeRTOS呢
Python后端项目的协程是什么
(一)FreeRTOS学习之FreeRTOS任务基础知识

FreeRTOS入门学

FreeRTOS高级篇2---FreeRTOS任务创建分析

协程的概念及协程的挂起函数介绍
Kotlin协程实战进阶之筑基篇3
Linux线程、线程与异步编程、协程与异步介绍

评论