本文介绍了在NXP芯片上做的一些RTOS内存分配实验
一、如何修改heap和stack的大小?
在IDE中修改主堆栈大小,可以在Debug文件夹下的ld文件查看修改后的结果
实验:
初始模式,IDE的heap和stack设置为默认0xbf8大小
增加堆和栈的大小,由0xbf8增加到0x1000,编译出的SRAM居然少了0x1000-0xbf8这么多,比较奇怪
二、带RTOS的内存分配是怎么样的?
首先,FreeRTOS不使用在链接器中定义的主堆栈。通常,这个堆被设置为零,堆栈值被设置为最小值,以供main函数使用。
使用"Heap 4"选项,位于"freertos->portable"目录下的"heap_4.c"文件,任务堆栈内存分配的总大小用static uint8_t ucHeap [configTOTAL_HEAP_SIZE];控制,并且RTOS控制的堆大小的单位是字节,这个任务总堆大小的宏设置增加了1500,整体的RAM就增加1500字节,属于内存先分配出来,任务用不用再说
实验:
configTOTAL_HEAP_SIZE设置((size_t)(8500))
configTOTAL_HEAP_SIZE设置((size_t)(10000))