嵌入式操作系统FreeRTOS内存管理内容
💡
原文中文,约5500字,阅读约需14分钟。
📝
内容提要
FreeRTOS从V9.0.0开始,应用程序可以完全静态分配,无需堆内存管理器。FreeRTOS提供了五个示例实现pvPortMalloc()和vPortFree(),分别是heap_1、heap_2、heap_3、heap_4和heap_5。heap_1最简单,不允许释放内存;heap_2允许释放内存,但不能合并相邻的空闲块;heap_3使用标准库函数malloc()和free(),保证线程安全;heap_4合并相邻的空闲块以避免碎片;heap_5可以跨多个不相邻的内存区域扩展堆的能力。
🎯
关键要点
- FreeRTOS从V9.0.0开始支持完全静态分配,无需堆内存管理器。
- FreeRTOS提供五个内存分配实现:heap_1、heap_2、heap_3、heap_4和heap_5。
- heap_1不允许释放内存,适用于小型专用嵌入式系统。
- heap_2允许释放内存,但不合并相邻空闲块,容易碎片化。
- heap_3使用标准库函数malloc()和free(),保证线程安全。
- heap_4合并相邻空闲块以避免碎片,适合反复分配和释放不同大小的内存块。
- heap_5可以从多个不相邻的内存区域分配内存,适用于内存映射不连续的系统。
- 动态内存分配在FreeRTOS中是通过pvPortMalloc()和vPortFree()实现的。
- FreeRTOS的内存管理被视为可移植层的一部分,允许用户提供特定实现。
➡️