几种内存分配算法的比较

  • heap_1.c 管理方案是 FreeRTOS 提供所有内存管理方案中最简单的一个,它只能申请内存而不能进行内存释放,并且申请内存的时间是一个常量
  • heap_2.c方案支持释放申请的内存,但是它不能把相邻的两个小的内存块合成一个大的内存块
  • heap_3.c 方案只是简单的封装了标准 C 库中的 malloc()和 free()函数,并且能满足常用
    的编译器。
  • heap_4 使用的

Heap_5 并不局限于管理一个大数组:它可以管理多块、分隔开的内存

Heap_5使用多个内存块作为堆

使用heap_5.c 的分配算法需要初始化内存块

  1. 涉及的结构体是
typedef struct HeapRegion
{uint8_t * pucStartAddress; // 起始地址size_t xSizeInBytes; // 大小
} HeapRegion
``2. 配置需要使用的内存块
```c
HeapRegion_t xHeapRegions[] = {{ ( uint8_t * ) 0x80000000UL, 0x10000 }, // 起始地址 0x80000000,大小 0x10000{ ( uint8_t * ) 0x90000000UL, 0xa0000 }, // 起始地址 0x90000000,大小 0xa0000{ NULL, 0 } // 表示数组结束
};
  1. 初始化函数

void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions );

使用内存分配和释放函数

分配

void * pvPortMalloc( size_t xWantedSize );
void vPortFree( void * pv );

当前还有多少空闲内存

size_t xPortGetFreeHeapSize( void );

内存分配钩子函数

  • FreeRTOSConfig.h 中,把 configUSE_MALLOC_FAILED_HOOK 定义为 1
  • 提供 vApplicationMallocFailedHook 函数
  • pvPortMalloc 失败时,才会调用此函数

钩子函数格式

void vApplicationMallocFailedHook( void );

程序运行过程中,空闲内存容量的最小值

只有 heap_4、heap_5 支持此函数。

size_t xPortGetMinimumEverFreeHeapSize( void );

11.FreeRTOS学习笔记-内存管理相关推荐

  1. Cocos2d-x学习笔记—内存管理机制

    Cocos2d-x 3.x内存管理机制 1:C++内存管理 1-1:内存分配区域 创建对象需要两个步骤:第一步,为对象分配内存:第二步,调用构造函数初始化内存.在第一步中,可以选择几个不同的分配区域. ...

  2. C语言学习笔记 —— 内存管理

    一.内存模型 对于一个C语言程序而言,内存空间主要由五个部分组成 代码段(text).数据段(data).未初始化数据段(bss),堆(heap) 和 栈(stack) 组成,其中代码段,数据段和BS ...

  3. 10.FreeRTOS学习笔记-中断管理

    FreeRTOS 的中断管理支持: 开/关中断. 恢复中断. 中断使能. 中断屏蔽. 可选择系统管理的中断优先级 中断管理的运作机制 当中断产生时,处理机将按如下的顺序执行: 保存当前处理机状态信息 ...

  4. FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析

    FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析 怎么查找就绪任务中优先级最高的? tasks.c中声明了一个全局变量 uxTopReadyPriority,任务从其他状态进入就绪 ...

  5. FreeRTOS学习笔记

    FreeRTOS学习笔记 (这是我自己学习FreeRTOS整理的笔记,仅供参考) 第一部分:实现FreeRTOS内核 变量名: 定义变量时往往会把变量的类型当作前缀加在变量上 变量类型 前缀 char ...

  6. 1、野火freertos学习笔记

    野火freertos学习笔记 1.任务 1.1 栈 1.2 任务的切换 taskYIELD(); 1.3 临界段 2.空闲任务 3.任务优先级 4.任务延时的表现 5.时间片 5.1抢占式.协做式 6 ...

  7. STM32F407霸天虎FreeRTOS学习笔记——移植FreeRTOS到开发板上

    STM32F407霸天虎FreeRTOS学习笔记--移植FreeRTOS到开发板上 FreeRTOS源码获取 移植第一步:创建文件夹 Keil main.c 实验效果 FreeRTOS源码获取 在移植 ...

  8. freeRtos学习笔记 (9) 移植和CPU利用率统计

    freeRtos学习笔记 (9) 移植和CPU利用率统计 使用官方固件移植 首先准备一个能跑的裸机工程 注意,freertos需要使用systick定时器,而stm32HAL库默认使用systick作 ...

  9. freeRtos学习笔记 (6)软件定时器

    freeRtos学习笔记 freeRtos软件定时器 软件定时器需要注意事项 软件定时器的精度基于时钟节拍,例如系统时钟节拍为10ms, 软件定时器定时时间必须是10ms的整数倍,因此软件定时器一般用 ...

最新文章

  1. 【报告】一手资料:四线城市移动互联网用户调研
  2. Python3绘图库Matplotlib(01)
  3. 分数怎么化成带分数_小升初数学总复习第三个基础模块:分数的认识
  4. ViewPager实现Recycle机制和响应
  5. ConvolverNode
  6. 死锁示例代码_Java示例中的死锁
  7. C. Memory and De-Evolution 逆向思维
  8. mac mysql read only_mac Read-Only filesystem
  9. wifi显示但是没有网络连接到服务器是怎么回事,wifi连接后显示网络连接不可用怎么办?...
  10. android游戏策划方案,游戏策划案模板.doc
  11. 64位MicrosoftOfficeWord加载EndnoteX7
  12. 360安全卫士默认浏览器设置 360默认浏览器设置 锁定浏览器
  13. gradle-4.10.2-all等gradle下载
  14. python 读写西门子PLC例子
  15. 增量式编码器工作原理以及使用
  16. 如何输入版权符号 copyright
  17. 【Unity破事水】如何实现线上试卷选择题的选项
  18. STM32469iDiscovery + LVGL 窗帘现象
  19. python win32处理Excel(方法篇)
  20. c语言backtrack算法6,一个关于数组回溯算法(backtrack)的通用模式

热门文章

  1. 计算机桌面图标教案,计算机教案模板
  2. 相机下载_佳能相机如何连接手机传输相片,视频?
  3. 联通g网java业务的是什么_联通发力G网增值业务
  4. Java 算法 特殊的数字四十
  5. IFIX 6.0 安全登录
  6. numpy pandas 查找在一个区间中的值
  7. python计算while循环次数_python-----运算符及while循环
  8. 计算机2级c 语言题库,计算机2级C语言题库.doc
  9. spring的整体架构分析一
  10. nginx 配置后网站图片加载出来一半或者不出来