FreeRTOS中对于内存的管理当前一共有5种实现方式(作者当前的版本是10.1.1),均在【 \Source\portable\MemMang 】下面,这里笔记下。
重要的参数:
使用方法:
头文件:FreeRTOSConfig.h
配置参数:
configTOTAL_HEAP_SIZE 定义系统所用的堆栈大小。
configUSE_MALLOC_FAILED_HOOK 默认0: 1则开启钩子函数,内存分配失败则调用
函数调用:
vPortInitialiseBlocks();//初始化
ptr=pvPortMalloc(1024);
if(ptr !=NULL)
{
freemem=xPortGetFreeHeapSize();
printf("剩余内存 %d \r\n",i,freemem);
}
else
{
printf("获取内存失败\r\n");break;
}
///
heap_1.c分析:
/**************************************
重要的参数备注:
(1)FreeRTOS 内存堆为:ucHeap[] 大小为 configTOTAL_HEAP_SIZE
(2)pucAlignedHeap 作为堆栈字节对齐后的起始地址(怎么实现的思考一下)
pucAlignedHeap = ( uint8_t * ) ( ( ( portPOINTER_SIZE_TYPE ) &ucHeap[ portBYTE_ALIGNMENT ])& ( ~( ( portPOINTER_SIZE_TYPE