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ù)通知簡(jiǎn)介

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-30 11:34 ? 次閱讀

任務(wù)通知簡(jiǎn)介

任務(wù)通知在 FreeRTOS 中是一個(gè)可選的功能,要使用任務(wù)通知的話就需要將宏configUSE_TASK_NOTIFICATIONS 定義為 1。

FreeRTOS 的每個(gè)任務(wù)都有一個(gè) 32 位的通知值,任務(wù)控制塊中的成員變量 ulNotifiedValue 就是這個(gè)通知值。任務(wù)通知是一個(gè)事件,假如某個(gè)任務(wù)通知的接收任務(wù)因?yàn)榈却蝿?wù)通知而阻塞的話,向這個(gè)接收任務(wù)發(fā)送任務(wù)通知以后就會(huì)解除這個(gè)任務(wù)的阻塞狀態(tài)。也可以更新接收任務(wù)的任務(wù)通知值,任務(wù)通知可以通過如下方法更新接收任務(wù)的通知值:

● 不覆蓋接收任務(wù)的通知值(如果上次發(fā)送給接收任務(wù)的通知還沒被處理)。

● 覆蓋接收任務(wù)的通知值。

● 更新接收任務(wù)通知值的一個(gè)或多個(gè) bit。

● 增加接收任務(wù)的通知值。

合理、靈活的使用上面這些更改任務(wù)通知值的方法可以在一些場(chǎng)合中替代隊(duì)列、二值信號(hào)量、計(jì)數(shù)型信號(hào)量和事件標(biāo)志組。使用任務(wù)通知來實(shí)現(xiàn)二值信號(hào)量功能的時(shí)候,解除任務(wù)阻塞的時(shí)間比直接使用二值信號(hào)量要快 45%(FreeRTOS 官方測(cè)試結(jié)果,使用 v8.1.2 版本中的二值信號(hào)量,GCC 編譯器,-O2 優(yōu)化的條件下測(cè)試的,沒有使能斷言函數(shù) configASSERT()),并且使用的 RAM 更少!

任務(wù)通知的發(fā)送使用函數(shù) xTaskNotify()或者 xTaskNotifyGive()(還有此函數(shù)的中斷版本)來 完 成 , 這個(gè)通知值會(huì)一直保持著 ,直到接受任務(wù)調(diào)用函數(shù)xTaskNotifyWait() 或 者ulTaskNotifyTake()來獲取這個(gè)通知值。假如接收任務(wù)因?yàn)榈却蝿?wù)通知而阻塞的話那么在接收到任務(wù)通知以后就會(huì)解除阻塞態(tài)。

任務(wù)通知雖然可以提高速度,并且減少 RAM 的使用,但是任務(wù)通知也是有使用限制的:

● FreeRTOS 的任務(wù)通知只能有一個(gè)接收任務(wù),其實(shí)大多數(shù)的應(yīng)用都是這種情況。

● 接收任務(wù)可以因?yàn)榻邮杖蝿?wù)通知而進(jìn)入阻塞態(tài),但是發(fā)送任務(wù)不會(huì)因?yàn)槿蝿?wù)通知發(fā)送失敗而阻塞。

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

    關(guān)注

    5082

    文章

    19126

    瀏覽量

    305241
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62181
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    FreeRTOS中的任務(wù)管理

    任務(wù)FreeRTOS 中最基本的調(diào)度單元,它是一段可執(zhí)行的代碼,可以獨(dú)立運(yùn)行。FreeRTOS 中的任務(wù)是基于優(yōu)先級(jí)的搶占式調(diào)度,優(yōu)先級(jí)高的任務(wù)
    的頭像 發(fā)表于 11-27 17:03 ?1009次閱讀

    FreeRTOS任務(wù)通知模擬二值信號(hào)量怎么都獲取不成功是怎么回事

    如圖,所示,救助論壇的大神,元老? FreeRTOS 21080511 任務(wù)通知模擬二值信號(hào)量.rar (4.02 MB )
    發(fā)表于 06-15 04:32

    任務(wù)通知發(fā)送出問題怎么辦

    大家好。我在STM32cubemx里使用FreeRTOS,開啟定時(shí)器3中斷,然后發(fā)送一個(gè)任務(wù)通知給TIM3_Task。但是無論是在回調(diào)函數(shù)里使用vTaskNotifyGiveFromISR()這個(gè)
    發(fā)表于 06-18 04:35

    FreeRTOS任務(wù)通知相關(guān)資料分享

    FreeRTOS--任務(wù)通知Notification今天發(fā)現(xiàn)了一個(gè)奇怪的現(xiàn)象,特意把它記錄下來,防止忘記了。先上圖于是找了所有的任務(wù)句柄,真的是沒有操作掛起了這個(gè)
    發(fā)表于 01-21 12:07

    使用FreeRTOS通知功能加速應(yīng)用執(zhí)行

    使用FreeRTOS的直接任務(wù)通知實(shí)現(xiàn)更高效的交互,與信號(hào)量相比,通知機(jī)制內(nèi)存占用更小,速度可提高45%。架構(gòu)良好的FreeRTOS應(yīng)用程序
    發(fā)表于 04-14 11:19

    FreeRTOS的直接任務(wù)(消息)通知

    ? ? ? ? 之前分享了《FreeRTOS V10.4.0更新了哪些功能?》,今天就來詳細(xì)講述其中的一個(gè)知識(shí)點(diǎn):FreeRTOS的直接任務(wù)(消息)通知,這樣做的目的就是減少RAM占用
    的頭像 發(fā)表于 01-07 09:37 ?4583次閱讀

    FreeRTOS —— 9.任務(wù)通知

    9.1本章介紹與范圍已經(jīng)看到,使用FreeRTOS的應(yīng)用程序被構(gòu)造為一組獨(dú)立的任務(wù),并且這些任務(wù)很可能必須彼此通信,以便它們可以共同提供有用的系統(tǒng)功能。通過中介對(duì)象進(jìn)行通信本書已經(jīng)描述了任務(wù)
    發(fā)表于 12-04 20:21 ?10次下載
    <b class='flag-5'>FreeRTOS</b> —— 9.<b class='flag-5'>任務(wù)</b><b class='flag-5'>通知</b>

    FreeRTOS任務(wù)詳解

    詳細(xì)講解freeRTOS任務(wù)
    發(fā)表于 12-23 20:01 ?11次下載
    <b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>任務(wù)</b>詳解

    FreeRTOS高級(jí)篇8---FreeRTOS任務(wù)通知分析

    FreeRTOS版本V8.2.0中推出了全新的功能:任務(wù)通知。在大多數(shù)情況下,任務(wù)通知可以替代二進(jìn)制信號(hào)量、計(jì)數(shù)信號(hào)量、事件組,可以替代長(zhǎng)
    發(fā)表于 01-26 17:36 ?10次下載
    <b class='flag-5'>FreeRTOS</b>高級(jí)篇8---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b><b class='flag-5'>通知</b>分析

    FreeRTOS系列第14篇---FreeRTOS任務(wù)通知

    每個(gè)RTOS任務(wù)都有一個(gè)32位的通知值,任務(wù)創(chuàng)建時(shí),這個(gè)值被初始化為0。RTOS任務(wù)通知相當(dāng)于直接向任務(wù)
    發(fā)表于 01-26 17:49 ?5次下載
    <b class='flag-5'>FreeRTOS</b>系列第14篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b><b class='flag-5'>通知</b>

    FreeRTOS任務(wù)通知簡(jiǎn)介及實(shí)現(xiàn)

    每個(gè)系統(tǒng)任務(wù)都會(huì)有一個(gè)任務(wù)通知。然后每個(gè)任務(wù)通知都具有掛起或者未掛起的狀態(tài),以及32位的通知。常
    的頭像 發(fā)表于 12-06 16:24 ?2094次閱讀

    freeRTOS任務(wù)

    freeRTOS系統(tǒng)的任務(wù)切換的具體過程最終都是在pendSV中斷服務(wù)函數(shù)里面完成的。
    的頭像 發(fā)表于 02-10 11:02 ?1641次閱讀
    <b class='flag-5'>freeRTOS</b>的<b class='flag-5'>任務(wù)</b>

    FreeRTOS任務(wù)通知通用發(fā)送函數(shù)

    發(fā)送任務(wù)通知 任務(wù)通知通用發(fā)送函數(shù) 任務(wù)級(jí)任務(wù)通知發(fā)
    的頭像 發(fā)表于 07-30 11:43 ?726次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b><b class='flag-5'>通知</b>通用發(fā)送函數(shù)

    使用任務(wù)通知提高RTOS應(yīng)用的效率

    在實(shí)時(shí)嵌入式系統(tǒng)中,性能和資源效率是決定設(shè)計(jì)成敗的關(guān)鍵因素。傳統(tǒng)的實(shí)時(shí)操作系統(tǒng)(RTOS)提供了如隊(duì)列、信號(hào)量和事件組機(jī)制,實(shí)現(xiàn)任務(wù)之間的同步和通信。FreeRTOS/SAFERTOS還提供一種方法可以使這些過程更快、更輕量化,即任務(wù)
    的頭像 發(fā)表于 12-27 14:54 ?133次閱讀