FreeRTOS 中應(yīng)用既可以使用任務(wù),也可以使用協(xié)程(Co-Routine),或者兩者混合使用。但是任務(wù)和協(xié)程使用不同的API函數(shù),因此不能通過隊(duì)列(或信號(hào)量)將數(shù)據(jù)從任務(wù)發(fā)送給協(xié)程,反之亦然。
協(xié)程是為那些資源很少的 MCU 準(zhǔn)備的,其開銷很小,但是 FreeRTOS 官方已經(jīng)不打算再更新協(xié)程了。
任務(wù)特性:
1、簡(jiǎn)單。
2、沒有使用限制。
3、支持搶占
4、支持優(yōu)先級(jí)
5、每個(gè)任務(wù)都擁有堆棧導(dǎo)致了 RAM 使用量增大。
6、如果使用搶占的話的必須仔細(xì)的考慮重入的問題。
協(xié)程(Co-routine)的特性
協(xié)程是為那些資源很少的 MCU 而做的,但是隨著 MCU 的飛速發(fā)展,性能越來越強(qiáng)大,現(xiàn)在協(xié)程幾乎很少用到了!但是 FreeRTOS 目前還沒有把協(xié)程移除的計(jì)劃,但是 FreeRTOS 是絕對(duì)不會(huì)再更新和維護(hù)協(xié)程了,因此協(xié)程大家了解一下就行了。在概念上協(xié)程和任務(wù)是相似的,但是有如下根本上的不同:
1、堆棧使用:所有的協(xié)程使用同一個(gè)堆棧(如果是任務(wù)的話每個(gè)任務(wù)都有自己的堆棧),這樣就比使用任務(wù)消耗更少的 RAM。
2、調(diào)度器和優(yōu)先級(jí):協(xié)程使用合作式的調(diào)度器,但是可以在使用搶占式的調(diào)度器中使用協(xié)程。
3、宏實(shí)現(xiàn):協(xié)程是通過宏定義來實(shí)現(xiàn)的。
4、使用限制:為了降低對(duì) RAM 的消耗做了很多的限制。
-
嵌入式
+關(guān)注
關(guān)注
5088文章
19158瀏覽量
306484 -
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
114826 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62277 -
任務(wù)
+關(guān)注
關(guān)注
1文章
20瀏覽量
8553
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論