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 的消耗做了很多的限制。
-
嵌入式
+關注
關注
5138文章
19521瀏覽量
314587 -
RAM
+關注
關注
8文章
1391瀏覽量
116719 -
FreeRTOS
+關注
關注
12文章
487瀏覽量
63714 -
任務
+關注
關注
1文章
20瀏覽量
8626
發布評論請先 登錄
談談協程的那些事兒

【轉載】AT32 FreeRTOS應用筆記
在STM32下完成FreeRTOS的多任務程序開發
如何在STM32下完成一個基于FreeRTOS的多任務程序
什么是多任務系統?FreeRTOS任務與協程簡析
什么是FreeRTOS?怎樣去移植FreeRTOS呢
Python后端項目的協程是什么
(一)FreeRTOS學習之FreeRTOS任務基礎知識

FreeRTOS入門學

FreeRTOS高級篇2---FreeRTOS任務創建分析

協程的概念及協程的掛起函數介紹
Kotlin協程實戰進階之筑基篇3
Linux線程、線程與異步編程、協程與異步介紹

評論