FreeRTOS 中應(yīng)用既可以使用任務(wù),也可以使用協(xié)程(Co-Routine),或者兩者混合使用。但是任務(wù)和協(xié)程使用不同的API函數(shù),因此不能通過隊列(或信號量)將數(shù)據(jù)從任務(wù)發(fā)送給協(xié)程,反之亦然。
協(xié)程是為那些資源很少的 MCU 準備的,其開銷很小,但是 FreeRTOS 官方已經(jīng)不打算再更新協(xié)程了。
任務(wù)特性:
1、簡單。
2、沒有使用限制。
3、支持搶占
4、支持優(yōu)先級
5、每個任務(wù)都擁有堆棧導(dǎo)致了 RAM 使用量增大。
6、如果使用搶占的話的必須仔細的考慮重入的問題。
協(xié)程(Co-routine)的特性
協(xié)程是為那些資源很少的 MCU 而做的,但是隨著 MCU 的飛速發(fā)展,性能越來越強大,現(xiàn)在協(xié)程幾乎很少用到了!但是 FreeRTOS 目前還沒有把協(xié)程移除的計劃,但是 FreeRTOS 是絕對不會再更新和維護協(xié)程了,因此協(xié)程大家了解一下就行了。在概念上協(xié)程和任務(wù)是相似的,但是有如下根本上的不同:
1、堆棧使用:所有的協(xié)程使用同一個堆棧(如果是任務(wù)的話每個任務(wù)都有自己的堆棧),這樣就比使用任務(wù)消耗更少的 RAM。
2、調(diào)度器和優(yōu)先級:協(xié)程使用合作式的調(diào)度器,但是可以在使用搶占式的調(diào)度器中使用協(xié)程。
3、宏實現(xiàn):協(xié)程是通過宏定義來實現(xiàn)的。
4、使用限制:為了降低對 RAM 的消耗做了很多的限制。
-
嵌入式
+關(guān)注
關(guān)注
5198文章
20442瀏覽量
333967 -
RAM
+關(guān)注
關(guān)注
8文章
1399瀏覽量
120540 -
FreeRTOS
+關(guān)注
關(guān)注
14文章
499瀏覽量
66919 -
任務(wù)
+關(guān)注
關(guān)注
1文章
20瀏覽量
8721
發(fā)布評論請先 登錄
談?wù)?b class='flag-5'>協(xié)程的那些事兒
FreeRTOS任務(wù)和協(xié)程的區(qū)別是什么
【轉(zhuǎn)載】AT32 FreeRTOS應(yīng)用筆記
在STM32下完成FreeRTOS的多任務(wù)程序開發(fā)
如何在STM32下完成一個基于FreeRTOS的多任務(wù)程序
什么是多任務(wù)系統(tǒng)?FreeRTOS任務(wù)與協(xié)程簡析
什么是FreeRTOS?怎樣去移植FreeRTOS呢
Python后端項目的協(xié)程是什么
(一)FreeRTOS學(xué)習(xí)之FreeRTOS任務(wù)基礎(chǔ)知識
FreeRTOS入門學(xué)
FreeRTOS高級篇2---FreeRTOS任務(wù)創(chuàng)建分析
FreeRTOS任務(wù)和協(xié)程簡介及實現(xiàn)
協(xié)程的概念及協(xié)程的掛起函數(shù)介紹
Linux線程、線程與異步編程、協(xié)程與異步介紹
FreeRTOS任務(wù)與協(xié)程介紹
評論