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

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

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

FreeRTOS內(nèi)存管理簡介

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

FreeRTOS 創(chuàng)建任務(wù)、隊(duì)列、信號量等的時候有兩種方法,一種是動態(tài)的申請所需的 RAM。一種是由用戶自行定義所需的 RAM,這種方法也叫靜態(tài)方法,使用靜態(tài)方法的函數(shù)一般以“Static”結(jié)尾,比如任務(wù)創(chuàng)建函數(shù) xTaskCreateStatic(),使用此函數(shù)創(chuàng)建任務(wù)的時候需要由用戶定義任務(wù)堆棧,我們不討論這種靜態(tài)方法。

使用動態(tài)內(nèi)存管理的時候 FreeRTOS 內(nèi)核在創(chuàng)建任務(wù)、隊(duì)列、信號量的時候會動態(tài)的申請 RAM。標(biāo)準(zhǔn) C 庫中的 malloc()和 free()也可以實(shí)現(xiàn)動態(tài)內(nèi)存管理,但是如下原因限制了其使用:

● 在小型的嵌入式系統(tǒng)中效率不高。

● 會占用很多的代碼空間。

● 它們不是線程安全的。

● 具有不確定性,每次執(zhí)行的時間不同。

● 會導(dǎo)致內(nèi)存碎片。

● 使鏈接器的配置變得復(fù)雜。

不同的嵌入式系統(tǒng)對于內(nèi)存分配和時間要求不同,因此一個內(nèi)存分配算法可以作為系統(tǒng)的可選選項(xiàng)。FreeRTOS 將內(nèi)存分配作為移植層的一部分,這樣 FreeRTOS 使用者就可以使用自己的合適的內(nèi)存分配方法。

當(dāng)內(nèi)核需要 RAM 的時候可以使用 pvPortMalloc()來替代 malloc()申請內(nèi)存,不使用內(nèi)存的時候可以使用 vPortFree()函數(shù)來替代 free()函數(shù)釋放內(nèi)存。函數(shù) pvPortMalloc()、vPortFree()與函數(shù) malloc()、free()的函數(shù)原型類似。

FreeRTOS 提供了 5 種內(nèi)存分配方法,F(xiàn)reeRTOS 使用者可以其中的某一個方法,或者自己的內(nèi)存分配方法。這 5 種方法是 5 個文件,分別為:heap_1.c、heap_2.c、heap_3.c、heap_4.c 和heap_5.c。這 5 個文件再 FreeRTOS 源碼中,路徑:FreeRTOS-》Source-》portable-》MemMang。

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

    關(guān)注

    5059

    文章

    18973

    瀏覽量

    302062
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2966

    瀏覽量

    73815
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61918
收藏 人收藏

    評論

    相關(guān)推薦

    FreeRTOS內(nèi)存機(jī)制詳解

    FreeRTOS是一種實(shí)時操作系統(tǒng),它提供了多種內(nèi)存分配方式,包括動態(tài)內(nèi)存分配和靜態(tài)內(nèi)存分配。
    的頭像 發(fā)表于 12-31 16:49 ?2458次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b>機(jī)制詳解

    第28章 FreeRTOS動態(tài)內(nèi)存管理

    轉(zhuǎn): 本章節(jié)為大家講解FreeRTOS動態(tài)內(nèi)存管理,動態(tài)內(nèi)存管理FreeRTOS非常重要的一項(xiàng)
    發(fā)表于 09-11 07:15

    FreeRTOS內(nèi)存管理的算法解析?

    關(guān)于FreeRTOS內(nèi)存管理,有人測試過它給定的算法么?會不會有內(nèi)存碎片的出現(xiàn),如果產(chǎn)品一直運(yùn)行,會不會出現(xiàn)內(nèi)存崩潰的情況。求證啊。目前用h
    發(fā)表于 07-30 11:39

    內(nèi)存管理簡介

    內(nèi)存管理1.內(nèi)存管理簡介2. 硬件設(shè)計(jì)3. 軟件設(shè)計(jì)3.1 STM32CubeMX設(shè)置3.2 MDK-ARM編程4. 下載驗(yàn)證
    發(fā)表于 12-13 06:17

    嵌入式系統(tǒng)的內(nèi)存管理簡介

    一、內(nèi)存管理簡介
    發(fā)表于 12-21 08:12

    Freertos關(guān)于堆內(nèi)存管理的相關(guān)資料分享

    內(nèi)存管理Malloc、Free防止內(nèi)存碎片Freertos
    發(fā)表于 12-27 08:12

    FreeRTOS代碼剖析之4:內(nèi)存管理Heap

    FreeRTOS8.0.1內(nèi)存管理的最后一個堆模型Heap_4,貌似是在這一個版本才有的。所以找到的說明幾乎沒有。代碼的開頭注釋也只是簡單地說了一下實(shí)現(xiàn)了pvPortMalloc
    發(fā)表于 02-09 02:52 ?342次閱讀

    FreeRTOS代碼剖析之1:內(nèi)存管理Heap

    內(nèi)存管理是一個操作系統(tǒng)的重要組成部分之一,所有應(yīng)用程序都離不開操作系統(tǒng)的內(nèi)存管理。因此,在剖析FreeRTOS的內(nèi)核代碼之前,前對
    發(fā)表于 02-09 05:25 ?912次閱讀
    <b class='flag-5'>FreeRTOS</b>代碼剖析之1:<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>Heap

    FreeRTOS代碼剖析之3:內(nèi)存管理Heap

    FreeRTOS8.0.1的第三個模型Heap_3,可以說是最容易理解的一個內(nèi)存管理模型。因?yàn)樵谶@個模型里,FreeRTOS直接將標(biāo)準(zhǔn)C庫中的malloc()和free()進(jìn)行加工打
    發(fā)表于 02-09 05:30 ?402次閱讀

    嵌入式操作系統(tǒng)FreeRTOS內(nèi)存如何管理和堆

    嵌入式操作系統(tǒng)FreeRTOS內(nèi)存管理和堆
    的頭像 發(fā)表于 01-10 15:17 ?4624次閱讀
    嵌入式操作系統(tǒng)<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b>如何<b class='flag-5'>管理</b>和堆

    關(guān)于FreeRTOS內(nèi)存分配多少才合適

    FreeRTOS內(nèi)存分配多少才合適
    的頭像 發(fā)表于 03-06 15:04 ?1.9w次閱讀

    FreeRTOS高級篇7---FreeRTOS內(nèi)存管理分析

    FreeRTOS操作系統(tǒng)將內(nèi)核與內(nèi)存管理分開實(shí)現(xiàn),操作系統(tǒng)內(nèi)核僅規(guī)定了必要的內(nèi)存管理函數(shù)原型,而不關(guān)心這些
    發(fā)表于 01-26 17:36 ?7次下載
    <b class='flag-5'>FreeRTOS</b>高級篇7---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>分析

    FreeRTOS系列第8篇---FreeRTOS內(nèi)存管理

    本文介紹內(nèi)存管理的基礎(chǔ)知識,詳細(xì)源碼分析見《 FreeRTOS高級篇7---FreeRTOS內(nèi)存管理
    發(fā)表于 01-26 17:56 ?17次下載
    <b class='flag-5'>FreeRTOS</b>系列第8篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>

    freeRTOS源碼中內(nèi)存管理的方案

    freeRTOS源碼中提供了五種內(nèi)存管理的方案,可以說是很方便了。實(shí)際需要使用哪一種,可以根據(jù)自己項(xiàng)目的需要進(jìn)行選擇,都是可以的。
    的頭像 發(fā)表于 02-10 11:11 ?740次閱讀

    FreeRTOS內(nèi)存管理實(shí)現(xiàn)

    FreeRTOS是一個為嵌入式系統(tǒng)設(shè)計(jì)的開源實(shí)時操作系統(tǒng)。它提供了一個多任務(wù)內(nèi)核和一系列功能,適合在資源受限的設(shè)備上管理實(shí)時任務(wù)和應(yīng)用程序。FreeRTOS內(nèi)存
    的頭像 發(fā)表于 10-10 16:17 ?839次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>實(shí)現(xiàn)