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

【轉(zhuǎn)載】AT32 FreeRTOS應(yīng)用筆記
在STM32下完成FreeRTOS的多任務(wù)程序開發(fā)
如何在STM32下完成一個基于FreeRTOS的多任務(wù)程序
什么是多任務(wù)系統(tǒng)?FreeRTOS任務(wù)與協(xié)程簡析
什么是FreeRTOS?怎樣去移植FreeRTOS呢
Python后端項(xiàng)目的協(xié)程是什么
(一)FreeRTOS學(xué)習(xí)之FreeRTOS任務(wù)基礎(chǔ)知識

FreeRTOS入門學(xué)

FreeRTOS高級篇2---FreeRTOS任務(wù)創(chuàng)建分析

FreeRTOS任務(wù)和協(xié)程簡介及實(shí)現(xiàn)

協(xié)程的概念及協(xié)程的掛起函數(shù)介紹
Kotlin協(xié)程實(shí)戰(zhàn)進(jìn)階之筑基篇3
Linux線程、線程與異步編程、協(xié)程與異步介紹

評論