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 的消耗做了很多的限制。
-
嵌入式
+關注
關注
5068文章
19014瀏覽量
303231 -
RAM
+關注
關注
8文章
1367瀏覽量
114527 -
FreeRTOS
+關注
關注
12文章
483瀏覽量
62000 -
任務
+關注
關注
1文章
20瀏覽量
8532
發布評論請先 登錄
相關推薦
評論