0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FreeRTOS任務(wù)與協(xié)程介紹

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-09-28 11:02 ? 次閱讀

FreeRTOS 中應(yīng)用既可以使用任務(wù),也可以使用協(xié)程(Co-Routine),或者兩者混合使用。但是任務(wù)和協(xié)程使用不同的API函數(shù),因此不能通過(guò)隊(duì)列(或信號(hào)量)將數(shù)據(jù)從任務(wù)發(fā)送給協(xié)程,反之亦然。

協(xié)程是為那些資源很少的 MCU 準(zhǔn)備的,其開銷很小,但是 FreeRTOS 官方已經(jīng)不打算再更新協(xié)程了。

任務(wù)特性:

1、簡(jiǎn)單。

2、沒(méi)有使用限制。

3、支持搶占

4、支持優(yōu)先級(jí)

5、每個(gè)任務(wù)都擁有堆棧導(dǎo)致了 RAM 使用量增大。

6、如果使用搶占的話的必須仔細(xì)的考慮重入的問(wèn)題。

協(xié)程(Co-routine)的特性

協(xié)程是為那些資源很少的 MCU 而做的,但是隨著 MCU 的飛速發(fā)展,性能越來(lái)越強(qiáng)大,現(xiàn)在協(xié)程幾乎很少用到了!但是 FreeRTOS 目前還沒(méi)有把協(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é)程是通過(guò)宏定義來(lái)實(shí)現(xiàn)的。

4、使用限制:為了降低對(duì) RAM 的消耗做了很多的限制。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18816

    瀏覽量

    298459
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1344

    瀏覽量

    114213
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61724
  • 任務(wù)
    +關(guān)注

    關(guān)注

    1

    文章

    20

    瀏覽量

    8515
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FreeRTOS介紹與基礎(chǔ)任務(wù)創(chuàng)建

    本篇介紹FreeRTOS與基礎(chǔ)任務(wù)創(chuàng)建
    的頭像 發(fā)表于 09-26 09:00 ?2196次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>介紹</b>與基礎(chǔ)<b class='flag-5'>任務(wù)</b>創(chuàng)建

    談?wù)?b class='flag-5'>協(xié)的那些事兒

    隨著異步編程的發(fā)展以及各種并發(fā)框架的普及,協(xié)作為一種異步編程規(guī)范在各類語(yǔ)言中地位逐步提高。我們不單單會(huì)在自己的程序中使用協(xié),各類框架如fastapi,aiohttp等也都是基于異步
    的頭像 發(fā)表于 01-26 11:36 ?1017次閱讀
    談?wù)?b class='flag-5'>協(xié)</b><b class='flag-5'>程</b>的那些事兒

    【轉(zhuǎn)載】AT32 FreeRTOS應(yīng)用筆記

    ................................. 32FreeRTOS 任務(wù)相關(guān)函數(shù) ..........................32例介紹
    發(fā)表于 08-16 11:56

    在STM32下完成FreeRTOS的多任務(wù)程序開發(fā)

    ---------FreeRTOS是一個(gè)迷你的實(shí)時(shí)操作系統(tǒng)內(nèi)核。作為一個(gè)輕量級(jí)的操作系統(tǒng),功能包括:任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄功能、軟件定時(shí)器、協(xié)等,可基本
    發(fā)表于 08-09 07:27

    如何在STM32下完成一個(gè)基于FreeRTOS的多任務(wù)程序

    ).FreeRTOS是一個(gè)迷你的實(shí)時(shí)操作系統(tǒng)內(nèi)核。作為一個(gè)輕量級(jí)的操作系統(tǒng),功能包括:任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄功能、軟件定時(shí)器、協(xié)等,可基本滿足較小系統(tǒng)的
    發(fā)表于 01-17 07:10

    什么是多任務(wù)系統(tǒng)?FreeRTOS任務(wù)協(xié)簡(jiǎn)析

    功能,初學(xué)者必須先掌握——任務(wù)的創(chuàng)建、刪除、掛起和恢復(fù)等操作。本章節(jié)分為如下幾部分:*什么是多任務(wù)系統(tǒng)*FreeRTOS任務(wù)協(xié)
    發(fā)表于 02-18 06:38

    什么是FreeRTOS?怎樣去移植FreeRTOS

    FreeRTOSFreeRTOS是一個(gè)迷你的實(shí)時(shí)操作系統(tǒng)內(nèi)核。作為一個(gè)輕量級(jí)的操作系統(tǒng),功能包括:任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄功能、軟件定時(shí)器、協(xié)
    發(fā)表于 02-23 07:12

    Python后端項(xiàng)目的協(xié)是什么

    最近公司 Python 后端項(xiàng)目進(jìn)行重構(gòu),整個(gè)后端邏輯基本都變更為采用“異步”協(xié)的方式實(shí)現(xiàn)??粗鴿M屏幕經(jīng)過(guò) async await(協(xié)在 Python 中的實(shí)現(xiàn))修飾的代碼,我頓時(shí)
    的頭像 發(fā)表于 09-23 14:38 ?1257次閱讀

    (一)FreeRTOS學(xué)習(xí)之FreeRTOS任務(wù)基礎(chǔ)知識(shí)

    功能,初學(xué)者必須先掌握——任務(wù)的創(chuàng)建、刪除、掛起和恢復(fù)等操作。本章節(jié)分為如下幾部分:*什么是多任務(wù)系統(tǒng)*FreeRTOS任務(wù)協(xié)
    發(fā)表于 12-23 19:57 ?3次下載
    (一)<b class='flag-5'>FreeRTOS</b>學(xué)習(xí)之<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>基礎(chǔ)知識(shí)

    FreeRTOS入門學(xué)

    ).FreeRTOS是一個(gè)迷你的實(shí)時(shí)操作系統(tǒng)內(nèi)核。作為一個(gè)輕量級(jí)的操作系統(tǒng),功能包括:任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄功能、軟件定時(shí)器、協(xié)等,可基本滿足較小系統(tǒng)的
    發(fā)表于 01-17 11:12 ?19次下載
    <b class='flag-5'>FreeRTOS</b>入門學(xué)

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

    FreeRTOS基礎(chǔ)系列《FreeRTOS系列第10篇---FreeRTOS任務(wù)創(chuàng)建和刪除》中介紹
    發(fā)表于 01-26 17:42 ?23次下載
    <b class='flag-5'>FreeRTOS</b>高級(jí)篇2---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>創(chuàng)建分析

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

    簡(jiǎn)單來(lái)說(shuō),FreeRTOS實(shí)時(shí)系統(tǒng)能夠創(chuàng)建多個(gè)獨(dú)立的任務(wù),任務(wù)之間互不干擾。任務(wù)創(chuàng)建之后并不是一起運(yùn)行的,而是通過(guò)優(yōu)先級(jí)順序進(jìn)行任務(wù)的調(diào)用,
    的頭像 發(fā)表于 12-06 16:33 ?2781次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>和協(xié)<b class='flag-5'>程</b>簡(jiǎn)介及實(shí)現(xiàn)

    協(xié)的概念及協(xié)的掛起函數(shù)介紹

    協(xié)是一種輕量級(jí)的線程,它可以在單個(gè)線程中實(shí)現(xiàn)并發(fā)執(zhí)行。與線程不同,協(xié)不需要操作系統(tǒng)的上下文切換,因此可以更高效地使用系統(tǒng)資源。Kotlin 協(xié)
    的頭像 發(fā)表于 04-19 10:20 ?805次閱讀

    Kotlin協(xié)實(shí)戰(zhàn)進(jìn)階之筑基篇3

    。 Android 中的每個(gè)應(yīng)用都會(huì)運(yùn)行一個(gè)主線程,它主要是用來(lái)處理 UI,如果主線程上需要處理的任務(wù)太多,應(yīng)用就感覺(jué)被卡主一樣影響用戶體驗(yàn),得讓那些耗時(shí)的任務(wù)不阻塞主線程的運(yùn)行。要做到處理網(wǎng)絡(luò)請(qǐng)求不會(huì)阻塞主線程,一個(gè)常用的做法就是使用回調(diào),另一種是使用
    的頭像 發(fā)表于 05-30 16:26 ?575次閱讀

    Linux線程、線程與異步編程、協(xié)與異步介紹

    線程之間的切換不需要陷入內(nèi)核,但部分操作系統(tǒng)中用戶態(tài)線程的切換需要內(nèi)核態(tài)線程的輔助。 協(xié)是編程語(yǔ)言(或者 lib)提供的特性(協(xié)程之間的切換方式與過(guò)程可以由編程人員確定),是用戶態(tài)操作。協(xié)
    的頭像 發(fā)表于 11-11 11:35 ?804次閱讀
    Linux線程、線程與異步編程、<b class='flag-5'>協(xié)</b><b class='flag-5'>程</b>與異步<b class='flag-5'>介紹</b>