嵌入式操作系统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的内存管理被视为可移植层的一部分,允许用户提供特定实现。
➡️

继续阅读