/* * 模块名称:主机侧单测桩 - FreeRTOS.h(cfg_file_store_mcu 套件专用) * 模块功能:App/cfg/cfg_file_store_mcu.c 只经这个头拿三个分配器原型 * (pvPortMalloc / vPortFree / xPortGetFreeHeapSize),它自己不碰任何内核 * API——卷是 vol_lock 的事、卷操作是 ff.h 的事。真实 FreeRTOS.h 会拉整棵 * portmacro + 编译器抽象层,PC 上编不动,所以只给这三条原型。 * * ⚠ 仅供 test/host/cfg_file_store_mcu/ 使用,不参与 MCU 构建。 * * 签名逐条对齐真实头(改一处即编译期报错,这就是桩存在的意义): * Middlewares/Third_Party/FreeRTOS/Source/include/portable.h:163 * void *pvPortMalloc( size_t xSize ) PRIVILEGED_FUNCTION; * 同文件 :164 * void vPortFree( void *pv ) PRIVILEGED_FUNCTION; * 同文件 :166 * size_t xPortGetFreeHeapSize( void ) PRIVILEGED_FUNCTION; * (真实实现 Middlewares/.../portable/MemMang/heap_4.c:315 定义 xPortGetFreeHeapSize) * PRIVILEGED_FUNCTION 在 pc 端口展开为空,桩里不写等价。 * * 实现放在测试单元里,是一份**可注入失败的假堆**:真机上 MicroLIB 的 C 堆只有 * 512 B(startup Heap_Size=0x200),配置引擎的 KB 级临时缓冲必然走 FreeRTOS 堆, * 堆见底时 pvPortMalloc 返回 NULL —— 这条分支模拟器(宿主 CRT 堆)永远走不到, * 只有假堆能稳定构造(cfg_store_alloc 是共享核心的唯一取内存入口,必须测)。 * * 创建日期:2026-10-24 */ #ifndef FREERTOS_H #define FREERTOS_H #include void *pvPortMalloc(size_t xWantedSize); void vPortFree(void *pv); size_t xPortGetFreeHeapSize(void); #endif /* FREERTOS_H */