嵌入式内存管理探究-基于FreeRTOS

文章封面
本文基于嵌入式裸机或RTOS系统下内存管理方法的探究,灰色方块为正在使用的内存块,白色为可用内存块。 好的内存管理算法,有以下几个特征:
-
内存碎片化小
-
故障调试能力:发生内存泄漏和踩踏时,可追溯位置,便于定位故障
-
管理成本小:管理的代码本身占用空间小,从空间复杂度
-
申请和释放效率高:时间复杂度
FreeRTOS的heap_5算法
-
相比 heap_4 支持地址不连续的两个内存区域,比如芯片内置RAM+外挂SDRAM。
-
基本思想:创建一个可用内存块链表,内存申请时从链表的内存块中取,释放时,将内存块重新加入到链表
- 链表中的每块内存由三部分组成:
-
指向下一个内存块的指针;
-
此内存块的可用空间大小;
-
可用的内存数据区域;
-
1-1 基本数据结构
内存块管理
typedef struct A_BLOCK_LINK
{
struct A_BLOCK_LINK *pxNextFreeBlock; /*<< The next free block in the list. */
size_t xBlockSize; &nb

本文深入探究基于FreeRTOS的嵌入式内存管理,重点介绍heap_5算法。该算法通过创建内存块链表实现内存申请和释放,有效减少内存碎片并提供故障定位能力。内存块由指针、大小信息和数据区域组成,初始化时建立内存池链表。内存申请和释放过程中,算法会根据需求调整内存块,并进行必要的内存分隔和合并操作。常见问题涉及内存块大小、字节对齐及链表结构选择。
最低0.47元/天 解锁文章
4325

被折叠的 条评论
为什么被折叠?



