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 的消耗做了很多的限制。
-
嵌入式
+关注
关注
5064文章
18992浏览量
302590 -
RAM
+关注
关注
8文章
1366浏览量
114503 -
FreeRTOS
+关注
关注
12文章
483浏览量
61959 -
任务
+关注
关注
1文章
20浏览量
8528
发布评论请先 登录
相关推荐
评论