内存管理
任务栈
- 每个任务都要有自己的栈。
- 栈太小会溢出,栈太大又会浪费宝贵 RAM。
- 学 FreeRTOS 时,任务栈大小评估是很实际的问题。
heap_1 到 heap_5
heap_1:只分配不释放,最简单。heap_2:可分配可释放,但不合并相邻空闲块。heap_3:直接包一层标准库malloc/free。heap_4:支持合并空闲块,常用。heap_5:支持多个不连续内存区域。
动态分配与静态分配
- 动态分配方便,但要考虑碎片、峰值和失败路径。
- 静态分配更可控,适合资源边界清晰的系统。
- 删除任务后,相关内存怎么回收,也要搞清。
这一篇要盯住什么
- FreeRTOS 的内存重点不是虚拟内存,而是任务栈、堆、碎片和失败处理。
- 能静态分配的关键对象,很多时候值得优先静态化。