11.FreeRTOS学习笔记-内存管理
几种内存分配算法的比较
- heap_1.c 管理方案是 FreeRTOS 提供所有内存管理方案中最简单的一个,它只能申请内存而不能进行内存释放,并且申请内存的时间是一个常量
- heap_2.c方案支持释放申请的内存,但是它不能把相邻的两个小的内存块合成一个大的内存块
- heap_3.c 方案只是简单的封装了标准 C 库中的 malloc()和 free()函数,并且能满足常用
的编译器。 - heap_4 使用的
Heap_5 并不局限于管理一个大数组:它可以管理多块、分隔开的内存
Heap_5使用多个内存块作为堆
使用heap_5.c 的分配算法需要初始化内存块
- 涉及的结构体是
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 } // 表示数组结束
};
- 初始化函数
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学习笔记-内存管理相关推荐
- Cocos2d-x学习笔记—内存管理机制
Cocos2d-x 3.x内存管理机制 1:C++内存管理 1-1:内存分配区域 创建对象需要两个步骤:第一步,为对象分配内存:第二步,调用构造函数初始化内存.在第一步中,可以选择几个不同的分配区域. ...
- C语言学习笔记 —— 内存管理
一.内存模型 对于一个C语言程序而言,内存空间主要由五个部分组成 代码段(text).数据段(data).未初始化数据段(bss),堆(heap) 和 栈(stack) 组成,其中代码段,数据段和BS ...
- 10.FreeRTOS学习笔记-中断管理
FreeRTOS 的中断管理支持: 开/关中断. 恢复中断. 中断使能. 中断屏蔽. 可选择系统管理的中断优先级 中断管理的运作机制 当中断产生时,处理机将按如下的顺序执行: 保存当前处理机状态信息 ...
- FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析
FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析 怎么查找就绪任务中优先级最高的? tasks.c中声明了一个全局变量 uxTopReadyPriority,任务从其他状态进入就绪 ...
- FreeRTOS学习笔记
FreeRTOS学习笔记 (这是我自己学习FreeRTOS整理的笔记,仅供参考) 第一部分:实现FreeRTOS内核 变量名: 定义变量时往往会把变量的类型当作前缀加在变量上 变量类型 前缀 char ...
- 1、野火freertos学习笔记
野火freertos学习笔记 1.任务 1.1 栈 1.2 任务的切换 taskYIELD(); 1.3 临界段 2.空闲任务 3.任务优先级 4.任务延时的表现 5.时间片 5.1抢占式.协做式 6 ...
- STM32F407霸天虎FreeRTOS学习笔记——移植FreeRTOS到开发板上
STM32F407霸天虎FreeRTOS学习笔记--移植FreeRTOS到开发板上 FreeRTOS源码获取 移植第一步:创建文件夹 Keil main.c 实验效果 FreeRTOS源码获取 在移植 ...
- freeRtos学习笔记 (9) 移植和CPU利用率统计
freeRtos学习笔记 (9) 移植和CPU利用率统计 使用官方固件移植 首先准备一个能跑的裸机工程 注意,freertos需要使用systick定时器,而stm32HAL库默认使用systick作 ...
- freeRtos学习笔记 (6)软件定时器
freeRtos学习笔记 freeRtos软件定时器 软件定时器需要注意事项 软件定时器的精度基于时钟节拍,例如系统时钟节拍为10ms, 软件定时器定时时间必须是10ms的整数倍,因此软件定时器一般用 ...
最新文章
- 【报告】一手资料:四线城市移动互联网用户调研
- Python3绘图库Matplotlib(01)
- 分数怎么化成带分数_小升初数学总复习第三个基础模块:分数的认识
- ViewPager实现Recycle机制和响应
- ConvolverNode
- 死锁示例代码_Java示例中的死锁
- C. Memory and De-Evolution 逆向思维
- mac mysql read only_mac Read-Only filesystem
- wifi显示但是没有网络连接到服务器是怎么回事,wifi连接后显示网络连接不可用怎么办?...
- android游戏策划方案,游戏策划案模板.doc
- 64位MicrosoftOfficeWord加载EndnoteX7
- 360安全卫士默认浏览器设置 360默认浏览器设置 锁定浏览器
- gradle-4.10.2-all等gradle下载
- python 读写西门子PLC例子
- 增量式编码器工作原理以及使用
- 如何输入版权符号 copyright
- 【Unity破事水】如何实现线上试卷选择题的选项
- STM32469iDiscovery + LVGL 窗帘现象
- python win32处理Excel(方法篇)
- c语言backtrack算法6,一个关于数组回溯算法(backtrack)的通用模式