首页 > 系统相关 >FreeRTOS不同内存管理策略的区别

FreeRTOS不同内存管理策略的区别

时间:2024-08-27 17:15:37浏览次数:10  
标签:函数 FreeRTOS 管理策略 RAM 内存 heap

来源于正点原子《STM32F1 FreeRTOS开发手册 V1.1》
第二十章 内存管理 20.7 heap_5内存分配方法(P391):

heap_1 最简单,但是只能申请内存,不能释放。
heap_2 提供了内存释放函数,用户代码也可以直接调用函数pvPortMalloc()和vPortFree()来申请和释放内存,但是 heap_2 会导致内存碎片的产生!
heap_3 是对标准 C 库中的函数 malloc()和 free()的简单封装,并且提供了线程保护。
heap_4 相对与 heap_2 提供了内存合并功能,可以降低内存碎片的产生,我们移植 FreeRTOS 的时候就选择了heap_4。
heap_5 基本上和heap_4 一样,只是 heap_5 支持内存堆使用不连续的内存块。

一般,对于无外部RAM的MCU就选择heap_4,如外接了大容量SRAM,则选择heap_5,因为heap_4不能同时拥有内部RAM和外部SRAM,只能二选一,而heap_5则可以内部、外部RAM同时一起作为内存堆来使用。但在使用前必须先调用vPortDefineHeapRegions()函数来对内存堆初始化处理,在此之前不能直接或间接的去调用会使用pvPortMalloc()函数的API,如创建任务、信号量、队列等。

标签:函数,FreeRTOS,管理策略,RAM,内存,heap
From: https://www.cnblogs.com/yinsua/p/18383158

相关文章

  • FreeRTOS+CubeMX入门(二)--使用cubemx生成FreeRTOS工程
    目录CubeMX创建FreeRTOS入门实例基础配置第一个项目-驱动OLED中断配置文件的简单认识主函数代码简单分析编写业务函数实验效果CubeMX创建FreeRTOS入门实例该笔记记录使用CubeMX创建FreeRTOS工程的粗略讲解,快速构建一个工程,对FreeRTOS有一个初步认识选择CubeID......
  • C++常见内存错误及其对策
    常见内存错误及其对策目录常见内存错误及其对策内存分配未成功,却使用了它内存分配成功但未初始化内存操作越界内存泄漏释放内存后继续使用规则总结图表示C++学习资料在软件开发过程中,内存管理是至关重要的一环。内存错误不仅会导致程序崩溃,还可能引发安全问题。本文......
  • 深入理解GPU内存分配:机器学习工程师的实用指南与实验
    给定一个模型架构、数据类型、输入形状和优化器,你能否计算出前向传播和反向传播所需的GPU内存量?要回答这个问题,我们需要将流程分解为基本组件,并从底层理解内存需求。以下实验(可以在GoogleColab上运行)将帮助你理解核心概念。 数据类型float32需要4字节的内存,bfloat......
  • 内存管理-31-进程内存占用-2-/proc/pid/statm
    基于msm-5.4一、初探1.打印格式#cat/proc/593/statm//非内核线程2826695224031784814200127170//以PAGE_SIZE为单位#cat/proc/187/statm//内核线程0000000打印成员介绍:1:size:打印的是mm->total_vm的值,表示任务占用虚拟地址空间大小,单位PAGE......
  • 内存管理-31-进程内存占用-3-/proc/pid/maps‌
    基于msm-5.4一、初探此文件描述了进程使用的每个内存段的信息,但是并不是所有的段,也不是一个段的所有部分都加载到内存中了,除非使用了对应的页面。1.打印格式#cat/proc/593/maps5e0cb16000-5e0cc1a000r--p00000000fc:03100868352/system/bin/su......
  • 内存管理-31-进程内存占用-4-/proc/pid/smaps
    基于msm-5.4一、初探1.打印格式#cat/proc/593/smaps...7e5a528000-7e5a626000r--p0000000000:1f5/dev/binderfs/hwbinderSize:1016kBKernelPageSize:4kBMMUPageSize:4kBRss:......
  • 【C++ 面试 - 内存管理】每日 3 题(三)
    ✍个人博客:Pandaconda-CSDN博客......
  • 内存管理-30-系统内存占用
    基于msm-5.4一、前言1.相关名词介绍RSS(ResidentSetSize)‌:这是进程当前在物理内存中占用的空间,包括进程本身和所有链接库。RSS是评估进程内存占用的一个重要指标,它直接反映了进程当前实际使用的物理内存量‌。但由于包含了共享库,用处不大。‌PSS(ProportionalSetSize)‌......
  • 内存管理-31-进程内存占用-1-/proc/pid/status
    基于msm-5.4一、初探1.打印格式#cat/proc/593/statusName:surfaceflinger...VmPeak:11322904kBVmSize:11306812kBVmLck:0kBVmPin:0kBVmHWM:92828kBVmRSS:91100kBRssAnon:19708kBRssFile:70884kB......
  • Spring Boot 3 中的性能优化:更快的启动时间和更低的内存占用
    随着微服务架构的普及,SpringBoot因其简洁的配置和快速的开发周期,成为了众多开发者的首选框架。然而,随着应用规模的增大和复杂度的提升,如何优化SpringBoot应用的启动时间和内存占用成为了一个重要的课题。本文将探讨在SpringBoot3中可以采取的一些性能优化措施,以实现......