18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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ù)(消息)通知

strongerHuang ? 來(lái)源:strongerHuang ? 作者:strongerHuang ? 2021-01-07 09:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

之前分享了《FreeRTOS V10.4.0更新了哪些功能?》,今天就來(lái)詳細(xì)講述其中的一個(gè)知識(shí)點(diǎn):FreeRTOS的直接任務(wù)(消息)通知,這樣做的目的就是減少RAM占用空間并加快執(zhí)行速度。

嵌入式專欄

1

寫在前面幾乎所有RTOS操作系統(tǒng)都提供了隊(duì)列和信號(hào)量的功能,對(duì)于大部分新手來(lái)說(shuō),使用隊(duì)列和信號(hào)量是必備技能。

但是,在大多數(shù)情況下,他們都是使用“中介對(duì)象”進(jìn)行通信,而并非“直接任務(wù)消息”通信。

通過(guò)“中介對(duì)象”進(jìn)行通信,每一組隊(duì)列或信號(hào)量都會(huì)分配一段內(nèi)存(消息緩沖區(qū)和流緩沖區(qū))。就存在一個(gè)問(wèn)題,如果隊(duì)列或信號(hào)量比較多,勢(shì)必造成更大的內(nèi)存開(kāi)支。

但是,如果通過(guò)本文說(shuō)的“直接消息”通信,會(huì)節(jié)約很多內(nèi)存。

嵌入式專欄

2

什么是直接任務(wù)通知?大多數(shù)任務(wù)間通信方法都通過(guò)中介對(duì)象,例如隊(duì)列,信號(hào)量或事件組。發(fā)送任務(wù)寫入通信對(duì)象,接收任務(wù)從通信對(duì)象讀取。

比如FreeRTOS的隊(duì)列通信,首先創(chuàng)建隊(duì)列之前要定義一個(gè)隊(duì)列:

而這個(gè)隊(duì)列包含了很多中介對(duì)象:

51ced8f2-507c-11eb-8b86-12bb97331649.png

大家可以算一下這個(gè)“中介對(duì)象”會(huì)占用多少RAM空間?

通過(guò)一個(gè)代碼示意圖理解中介對(duì)象通信:

525d7ce2-507c-11eb-8b86-12bb97331649.png

直接任務(wù)通知:當(dāng)使用直接任務(wù)通知時(shí),顧名思義,發(fā)送任務(wù)將通知直接發(fā)送給接收任務(wù),而無(wú)需中介對(duì)象。

通過(guò)一個(gè)代碼示意圖理解:

52ac85da-507c-11eb-8b86-12bb97331649.png

從FreeRTOS V10.4.0開(kāi)始,每個(gè)任務(wù)都有一系列通知。每個(gè)通知都包含一個(gè)32位值和一個(gè)布爾狀態(tài),它們一起僅消耗5個(gè)字節(jié)的RAM。

就像任務(wù)可以阻止二進(jìn)制信號(hào)量等待該信號(hào)量變?yōu)椤翱捎谩币粯?,任?wù)可以阻止通知以等待該通知的狀態(tài)變?yōu)椤按幚怼?。同樣,就像任?wù)可以阻止計(jì)數(shù)信號(hào)量以等待該信號(hào)量的計(jì)數(shù)變?yōu)榉橇阋粯樱蝿?wù)可以阻止通知以等待該通知的值變?yōu)榉橇?。下面的第一個(gè)示例演示了這種情況。

通知不僅可以傳達(dá)事件,還可以通過(guò)多種方式傳達(dá)數(shù)據(jù)。

嵌入式專欄

3

進(jìn)一步分析直接任務(wù)通知通過(guò)對(duì)比FreeRTOS V10.4.0和之前版本,你會(huì)發(fā)現(xiàn)V10.4.0多了一些API,比如ulTaskNotifyTake / ulTaskNotifyTakeIndexed:

530f67cc-507c-11eb-8b86-12bb97331649.png

在官網(wǎng)也有針對(duì)這些API的詳細(xì)介紹和說(shuō)明,以及應(yīng)用代碼例子:

53c0628e-507c-11eb-8b86-12bb97331649.png

直接任務(wù)通信API說(shuō)明地址:

https://www.freertos.org/RTOS-task-notification-API.html

(公號(hào)不支持外鏈接,請(qǐng)復(fù)制鏈接到瀏覽器打開(kāi))

嵌入式專欄

4

使用直接任務(wù)通知性能優(yōu)勢(shì)和使用限制任務(wù)通知的靈活性使它們可以在需要?jiǎng)?chuàng)建單獨(dú)的隊(duì)列、 二進(jìn)制信號(hào)量、 數(shù)信號(hào)量或事件組的情況下使用。

與使用中介對(duì)象(例如信號(hào)量)來(lái)取消阻止任務(wù)相比,使用直接通知取消阻止RTOS任務(wù)的速度快了45%(來(lái)自官方數(shù)據(jù)),并且使用的RAM更少。

當(dāng)然,有這些性能優(yōu)勢(shì),也肯定一些限制:

僅當(dāng)只有一個(gè)任務(wù)可以作為事件的接收者時(shí),才可以使用RTOS任務(wù)通知。但是,在大多數(shù)實(shí)際使用情況下都可以滿足此條件,例如中斷使執(zhí)行任務(wù)處理的任務(wù)中斷時(shí),該任務(wù)將處理該中斷接收的數(shù)據(jù)。

僅在使用RTOS任務(wù)通知代替隊(duì)列的情況下:接收任務(wù)可以在“阻塞”狀態(tài)下等待通知(因此不占用任何CPU時(shí)間),而發(fā)送任務(wù)不能在“阻塞”狀態(tài)下等待消息。如果發(fā)送無(wú)法立即完成,則發(fā)送完成。

嵌入式專欄

5

使用方法使用方法其實(shí)很簡(jiǎn)單,只要你會(huì)使用RTOS的隊(duì)列、信號(hào)量,基本看一眼官方例子就能使用。

我這里也拿官方例子說(shuō)明一下:

/*main()創(chuàng)建的兩個(gè)任務(wù)的原型*/static void prvTask1( void *pvParameters );static void prvTask2( void *pvParameters );
/*處理由main()創(chuàng)建的任務(wù)的句柄*/static TaskHandle_t xTask1 = NULL, xTask2 = NULL;
/*創(chuàng)建兩個(gè)任務(wù),來(lái)回發(fā)送通知,然后啟動(dòng)RTOS調(diào)度程序*/void main( void ){    xTaskCreate( prvTask1, “Task1”, 200, NULL, tskIDLE_PRIORITY, &xTask1 );    xTaskCreate( prvTask2, “Task2”, 200, NULL, tskIDLE_PRIORITY, &xTask2 );    vTaskStartScheduler();}/*———————————————————–*/
/*prvTask1()使用API的“索引”版本*/static void prvTask1( void *pvParameters ){    for( ;; )    {        /* 發(fā)送通知到prvTask2() ,使其脫離“已阻止”狀態(tài)。*/        xTaskNotifyGiveIndexed( xTask2, 0 );
/*阻止等待prvTask2()通知此任務(wù)*/        ulTaskNotifyTakeIndexed( 0, pdTRUE, portMAX_DELAY );    }}/*———————————————————–*/
/* prvTask2()使用API的原始版本(不帶“索引”) */static void prvTask2( void *pvParameters ){    for( ;; )    {/*等待prvTask1()通知此任務(wù) */        ulTaskNotifyTake( pdTRUE, portMAX_DELAY );
/*向prvTask1()發(fā)送通知,使它退出“已阻止”狀態(tài)*/        xTaskNotifyGive( xTask1 );    }}

責(zé)任編輯:xj

原文標(biāo)題:如何改善FreeRTOS運(yùn)行的速度、RAM大小

文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(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)投訴
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1396

    瀏覽量

    119416
  • FreeRTOS
    +關(guān)注

    關(guān)注

    14

    文章

    496

    瀏覽量

    65890
  • 運(yùn)行速度
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    6825

原文標(biāo)題:如何改善FreeRTOS運(yùn)行的速度、RAM大小

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    關(guān)于BLE通知值的通知長(zhǎng)度問(wèn)題求解

    FreeRtos 中的 streambuffer 的壓力。 如果 notify 支持每次通知大小大于 244 的數(shù)組,我需要做哪些修改才能實(shí)現(xiàn)每次通知大小為 512 或 1024 的數(shù)組。
    發(fā)表于 07-01 06:58

    【RA4L1-SENSOR】04 用FreeRTOS重構(gòu)工程

    1. 前言 之前幾個(gè)實(shí)驗(yàn)都是在裸機(jī)開(kāi)發(fā),隨著項(xiàng)目的推進(jìn),裸機(jī)開(kāi)發(fā)很難去保證各個(gè)功能的實(shí)時(shí)性,因此,本次實(shí)驗(yàn)借助FreeRTOS來(lái)整合之前的項(xiàng)目,給每個(gè)功能都設(shè)置任務(wù)。另外,還要加入一個(gè)按下開(kāi)發(fā)板上
    發(fā)表于 06-16 22:28

    FreeRTOS任務(wù)中發(fā)送事件隊(duì)列是有什么限制嗎?

    到了TMC的芯片,但是在到位上報(bào)的信息中少了卡死電機(jī)的上報(bào)。所以有的電機(jī)的到位中斷并沒(méi)有成功寫入任務(wù)。 一開(kāi)始是每個(gè)電機(jī)都開(kāi)啟了一個(gè)定時(shí)器查詢,后續(xù)改成一個(gè)定時(shí)器查六個(gè)電機(jī)并將定時(shí)器的周期加到50ms,就很少會(huì)卡死。 所以向FreeRTOS
    發(fā)表于 06-11 07:57

    HarmonyOS NEXT應(yīng)用開(kāi)發(fā)-Notification Kit(用戶通知服務(wù))通知類型、級(jí)別與渠道

    。 NOTIFICATION_CONTENT_SYSTEM_LIVE_VIEW11+ 5 實(shí)況窗類型通知。不支持三方應(yīng)用直接創(chuàng)建該類型通知,可以由系統(tǒng)代理創(chuàng)建系統(tǒng)實(shí)況窗類型通知后,三方
    發(fā)表于 06-09 14:39

    詳解FreeRTOS與SAFERTOS的區(qū)別

    開(kāi)源免費(fèi)的FreeRTOS由Richard Barry在WHIS工作時(shí)創(chuàng)建,WHIS基于FreeRTOS的功能模型,通過(guò)完整的HAZOP分析,確定了功能模型和API中的所有的弱點(diǎn),減輕所有薄弱環(huán)節(jié),并采用IEC 61508 SIL 3的開(kāi)發(fā)生命周期,重新設(shè)計(jì)實(shí)現(xiàn)了SAFE
    的頭像 發(fā)表于 06-04 16:58 ?579次閱讀
    詳解<b class='flag-5'>FreeRTOS</b>與SAFERTOS的區(qū)別

    FreeRTOS讀取ADS1299數(shù)據(jù)有誤

    您好,請(qǐng)問(wèn),用stm32的FreeRTOS的隊(duì)列對(duì)ADS1299傳感器讀取數(shù)據(jù),已設(shè)置采樣率為2khz 在采集任務(wù)中:通過(guò)spi讀取數(shù)據(jù)——濾波(-DSP庫(kù))——將數(shù)據(jù)寫入隊(duì)列——延時(shí)
    發(fā)表于 05-05 22:48

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】RA-Eco-RA4M2 移植FreeRTOS

    FreeRTOS、Threadx,這里選擇FreeRTOS。 Figure 2?5 選擇RTOS 接下來(lái)就是選擇工程模板。 Figure 2?6 工程模板選擇 接下來(lái)在新建一個(gè)空任務(wù)。點(diǎn)擊“Stacks
    發(fā)表于 05-03 23:24

    FreeRTOS進(jìn)階使用之流緩沖區(qū):高效處理字節(jié)流的秘密武器

    在嵌入式開(kāi)發(fā)中,流緩沖區(qū)(Stream Buffer)是FreeRTOS中用于高效處理字節(jié)流數(shù)據(jù)傳輸?shù)暮诵臋C(jī)制,尤其適合任務(wù)間或中斷與任務(wù)間的連續(xù)數(shù)據(jù)傳輸場(chǎng)景(如串口通信、網(wǎng)絡(luò)數(shù)據(jù)流等)。本文將深入
    發(fā)表于 03-24 11:37

    嵌入式開(kāi)發(fā)避坑指南|FreeRTOS的5個(gè)\"反直覺(jué)\"小技巧

    技巧1:堆內(nèi)存配置不是越大越好! 進(jìn)階原理: FreeRTOS內(nèi)存分配存在\"碎片黑洞\"現(xiàn)象,即使總內(nèi)存充足,碎片化仍可能導(dǎo)致分配失敗。例如某項(xiàng)目堆大小設(shè)為15KB,但頻繁創(chuàng)建
    發(fā)表于 03-20 13:57

    STM2cubeide使用Freertos v2提示錯(cuò)誤怎么解決?

    我一直以為st公司是一個(gè)嚴(yán)謹(jǐn),優(yōu)秀的公司,直到我遇到了stm32cubeide使用了freertosv2 。 為什么我把freertos調(diào)成版本v2建一個(gè)任務(wù)和消息隊(duì)列 ,freertosv2提示
    發(fā)表于 03-12 07:33

    移植LWIP+FREERTOS時(shí)遇到的問(wèn)題怎么解決?

    :將ST官網(wǎng)的LWIP1.4.1 的例子(關(guān)于LWIP的部分)移植到步驟1 的FreeRTOS 系統(tǒng)的工程里面,只是添加LWIP初始化的任務(wù),并沒(méi)有調(diào)用任何接口的情況下可以Ping 通 而且長(zhǎng)時(shí)間
    發(fā)表于 03-11 06:48

    關(guān)于freertos任務(wù)中usb文件系統(tǒng)寫入數(shù)據(jù)的問(wèn)題

    請(qǐng)問(wèn)一下,我用freertos系統(tǒng)的定時(shí)器,sendtime++滿500的時(shí)候執(zhí)行usb文件系統(tǒng)寫入數(shù)據(jù)的函數(shù)Flash_Write();這個(gè)函數(shù)需要300多ms跑完,按理來(lái)說(shuō)他就算300多ms
    發(fā)表于 02-20 20:55

    西部數(shù)據(jù)正式通知減產(chǎn)15%以縮減庫(kù)存

    行業(yè),原廠通常會(huì)私下與客戶溝通減產(chǎn)意向,而具體的減產(chǎn)幅度往往并不明確。然而,西部數(shù)據(jù)此次卻采取了更為直接和明確的方式,直接通知客戶將減產(chǎn)15%。這一決定無(wú)疑給市場(chǎng)帶來(lái)了明確的信號(hào),表明西部數(shù)據(jù)對(duì)于當(dāng)前庫(kù)存壓力和市場(chǎng)需求有著清晰的認(rèn)知和判
    的頭像 發(fā)表于 02-06 09:38 ?651次閱讀

    2025未來(lái)產(chǎn)業(yè)創(chuàng)新任務(wù) | 清潔氫

    據(jù)悉,1月17日,工業(yè)和信息化部辦公廳發(fā)布《關(guān)于組織開(kāi)展2025年未來(lái)產(chǎn)業(yè)創(chuàng)新任務(wù)揭榜掛帥工作的通知》(簡(jiǎn)稱《通知》)?!?b class='flag-5'>通知》顯示,揭榜任務(wù)
    的頭像 發(fā)表于 01-22 08:19 ?1415次閱讀
    2025未來(lái)產(chǎn)業(yè)創(chuàng)新<b class='flag-5'>任務(wù)</b> | 清潔氫

    使用任務(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還提供一種方法可以使這些過(guò)程更快、更輕量化,即任務(wù)
    的頭像 發(fā)表于 12-27 14:54 ?954次閱讀