freertos内存管理
freertos一共有5种内存管理算法,heap3直接使用的是c库的管理算法,只是对c库封装了一层接口。本章节主要分析heap1、heap2、heap4; heap1 heap2 heap4 heap5 heap5与heap4相比,支持了允许内存堆跨越多个不连续的内存段,这种情况针对一颗soc内部有多块硬件存储设备而言就比较方便,如一个soc内置了1MB SRAM和8MB HPRAM,就可以用这种
freertos栈溢出检测原理
portSTACK_GROWTH > 0:栈向上生长 portSTACK_GROWTH < 0: 栈向下生长,本章使用栈向下生长 打开 configRECORD_STACK_HIGH_ADDRESS 1,将PCB中将打开pxEndOfStack,结构如下。 adress:0+ulStackDepth ------------------- pxEndOfStack(栈底) |XXXXXXXX
内存相关问题排查思路
最近在项目上遇到一个棘手问题,有一块内存在运行过程中概率性的被异常修改,由于牵扯到多方的应用程序,受限于调试手段排查了不少时间,现简单总结下遇到此类问题的排查思路。 添加额外的magic 核心原理就是在malloc的时候,额外多申请一些内存,通常情况下是在头部和尾部多申请一块空间,填充固定的值如0x55,待调用free函数的时候就检测该头部和尾部的数据是否还是原来填充的值如0x55,如果不是那说明