国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于FreeRTOS內存分配多少才合適

黃工的嵌入式技術圈 ? 來源:網站整理 ? 2020-03-06 15:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一位朋友問:黃哥,我剛學FreeRTOS不久,我想問一下,創建一個任務,堆棧分配多少才合適呢?

1寫在前面

這個關于FreeRTOS操作系統內存分配的問題,其實只要大概明白內存管理,以及資源分配的一些知識,相信就不會存在這種疑惑。

操作系統內存分配如果深入分析的話,知識蠻多的,本文只針對開篇的問題展開一些相關知識的講解。

2

操作系統內存管理

FreeRTOS提供多種內存管理方式,在MemMang文件夾下有5個文件:heap_1到heap_5。

heap,其實是堆的意思,換句話說FrreRTOS系統的內存就是通過分配堆來實現的。(內存管理的知識較多,大家有空可以網上多了解一下,這里不講述)

而目前FreeRTOS常用的就是heap_4這種內存管理方式:通過事先為系統資源分配一個堆(數組),如下圖:

1.可配置在外部,或在heap_4中分配堆;

2.通過FreeRTOSConfig.h配置堆的大小,注意大小單位為字節。

提示:heap_1至heap_5其他管理方式其實還是有很大差別,這里不講述(后面抽時間再講述),具體可以參看:

https://www.freertos.org/a00111.html

3

系統資源內存分配

FreeRTOS中系統為各資源分配內存,使用heap_4內存管理方式就是在創建之初就分配一段內存。

而分配的這個資源就是從整個系統堆ucHeap劃分了一塊出來。我們創建一個任務,分配堆棧大小的原理,進一步查看代碼:

提示:這個創建任務大小為我們填寫數值x4字節。比如,填寫128,其實分配的空間為512Byte.(很多人以為單位是字節,發現多創建幾個任務,內存就分配失敗了)

再比如,創建隊列:

參數1:隊列長度,也就是隊列的數量;

參數2:隊列大小,也就是一個隊列有多少字節;

隊列分配的內存大小就是:參數1x參數2 (單位Byte)。

這里就舉上面兩個例子,重點就是強調:分配內存的單位是字節(Byte),還是字(4Byte)。

4

哪些變量會占用任務內存

回到最開始的問題:一個任務需要分配多大內存?

任務堆棧就是用于存放該任務的變量數據(也就是程序在執行其他任務時,需要把該任務變量數據保存起來)。

那么,一個任務有哪些數據才算是“變量數據”呢?

一個是任務自身需要的內存空間,FreeROS任務自身(如TCB)需要的空間好像就七八十個字節(我之前計算過,記不得很清楚了)。

二是你自己應用程序臨時變量(如下圖),這個就是由你自己計算,或者估計大小。

許多朋友一上來直接分配堆棧的大小為256(x4字節),或512(x4字節),但自己應用程序臨時變量并不多。

如果你應用程序就幾個字節的臨時變量,分配64(x4字節)都完全夠你用。

提示:這個“臨時變量”包含你應用程序調用的函數所分配的變量。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    9

    文章

    3209

    瀏覽量

    76354
  • 堆棧
    +關注

    關注

    0

    文章

    183

    瀏覽量

    20522
  • FreeRTOS
    +關注

    關注

    14

    文章

    499

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    keil中c語言的動態分配內存

    在C程序中,通常將內存劃分為以下六個區域: (1)內核區域。這塊區域是操作系統的,用戶不能使用。 (2)棧區。主要用于存放運行函數而分配的局部變量、函數參數、返回數據、返回地址等。棧內存分配
    發表于 01-21 06:04

    【「Linux 設備驅動開發(第 2 版)」閱讀體驗】+讀深入理解Linux內核內存分配

    每個內存地址是虛擬的,不是直接指向RAM中的任何地址。當用戶訪問內存中的存儲單元時,都會進行地址轉換以匹配相應的物理內存。書籍的第10章討論了五個主題,對Linux內核內存
    發表于 01-16 20:05

    FreeRTOS和uC/OS-II的功能特性

    /事件標志替代)。 內存管理: 提供多種內存分配方案(heap_1 到 heap_5)供選擇,開發者也可以輕松集成自己的內存分配器。 Tic
    發表于 11-17 08:17

    FreeRTOS與uC/OS-II如何選擇?

    是巨大優勢)。 你使用的 MCU 廠商默認推薦或深度集成了 FreeRTOS。 你需要支持多核處理器 (SMP)。 你需要極大的靈活性(如自定義內存分配)。 項目需要快速啟動和開發。 選擇 uC
    發表于 11-13 07:15

    如何挑選合適的頻標分配

    電子元器件分配儀器儀表
    西安同步電子科技有限公司
    發布于 :2025年10月14日 19:15:41

    FAQ_MA35_Family M4 RAM如何調整M4的內存分配

    FAQ_MA35_Family M4 RAM如何調整M4的內存分配
    發表于 09-02 06:07

    RTOS怎么實現共享內存

    K230的RTOS支持POSIX標準的共享內存嗎 我嘗試使用卻失敗 還是說需要源碼部分配置的開啟可以使用 求教大佬
    發表于 08-04 08:06

    超級電容阻值多少合適

    本文主要介紹了超級電容的核心參數——等效串聯電阻(ESR),并討論了如何在高功率脈沖設備和儲能系統中找到合適的ESR值。此外,還提到了溫度、電壓和材料工藝對ESR的影響,并探討了如何優化阻值的工程路徑。
    的頭像 發表于 07-03 09:36 ?1158次閱讀
    超級電容阻值多少<b class='flag-5'>才</b><b class='flag-5'>合適</b>?

    【RA4L1-SENSOR】04 用FreeRTOS重構工程

    內存塊中分配內存,這對于系統內存不是連續塊的情況非常有用。` 這里我選擇Heap 4算法。 點擊HAL/Common -- New Stack -- RTOS --
    發表于 06-16 22:28

    【RA-Eco-RA4M2開發板評測】RA-Eco-RA4M2 移植FreeRTOS

    Configuration->New Thread”即可新建一個任務。 Figure 2?7 配置任務 Common是關于FreeRTOS的配置,Thread是新建線程的配置參數
    發表于 05-03 23:24

    如何使用LAX_CODEGEN啟用動態內存分配

    我目前正在探索NXP_MBDToolbox_LAX。lax_codegen 生成的代碼基于靜態分配。我想管理大型向量,如何使用 LAX_CODEGEN 啟用動態內存分配
    發表于 04-10 08:09

    如何查看S32DS中S32平臺的內存分配

    大家好,我正在使用 s32DS for s32 平臺,我想查看我的項目的內存分配。我想知道分配給對象的內存以及它們被分配到哪里,例如 SRA
    發表于 04-09 07:30

    golang內存分配

    作者:錢文 Go 的分配采用了類似 tcmalloc 的結構.特點: 使用一小塊一小塊的連續內存頁, 進行分配某個范圍大小的內存需求. 比如某個連續 8KB 專門用于
    的頭像 發表于 03-31 15:00 ?514次閱讀
    golang<b class='flag-5'>內存</b><b class='flag-5'>分配</b>

    嵌入式開發避坑指南|FreeRTOS的5個\"反直覺\"小技巧

    技巧1:堆內存配置不是越大越好! 進階原理: FreeRTOS內存分配存在\"碎片黑洞\"現象,即使總內存充足,碎片化仍可能導致
    發表于 03-20 13:57

    stm32F407平臺上使用freertos,使用pvPortMalloc申請內存,發現內存中的數據總被修改,怎么解決?

    如題,我現在在stm32F407平臺上打開FREERTOS,然后使用pvPortMalloc動態申請內存的時候,發現這塊內存中的數據總是變化,后面改為malloc申請,內存中的數據就符
    發表于 03-07 09:03