1. 实验目标与系统架构设计
FreeRTOS 提供了五种动态内存管理方案(heap_1.c 至 heap_5.c),每种方案在内存碎片控制、分配效率、线程安全性及适用场景上存在本质差异。本实验聚焦于heap_4.c—— 基于最佳适配(Best Fit)算法、支持内存合并、具备完整 malloc/free 语义的通用型堆管理器。其核心价值在于:既可满足嵌入式系统对确定性响应时间的基本要求,又为复杂应用(如协议栈、文件系统、动态对象池)提供接近标准 C 库的内存操作体验。
在 STM32F103C8T6(Cortex-M3)平台上实现 heap_4,需直面三个关键约束:
-物理内存有限:芯片内置 SRAM 仅 20KB,其中部分被栈、静态变量、中断向量表占用;
-实时性刚性需求:任务切换、中断响应必须在微秒级完成,内存分配不能成为不可预测的瓶颈;
-可靠性零容忍:内存泄漏或越界写入将直接导致系统崩溃,无法像 PC 系统那样依赖操作系统兜底。
因此,本实验并非简单调用 API,而是一次完整的工程实践闭环:从 FreeRTOS 配置参数的物理意义解读,到内存申请/释放的原子性保障机制分析,再到按键触发的用户交互逻辑与底层内存状态的严格映射。所有代码均运行于裸机环境,无任何中间件抽象层干扰,确保开发者能精确掌控每一字节内存的生命周期。
2. 硬件资源与驱动基础
2.1 外设功能定义
本实验采用最小化硬件交互设计,所有外设均服务于内存管理行为的可观测性