FreeRTOS任务与协程介绍

描述

  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 的消耗做了很多的限制。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分