Excessive Memory Usage with PIC32 port

grantkbrown wrote on Thursday, October 23, 2008:

Hi,

Port : PIC32

I have stripped all of the custom tasks etc out of the PIC32 demo and removed the source files etc for the above tasks.

This has resulted in a program with only 3 custom tasks (I wrote them and 1 is copied below for reference) which simply flash LED’s. All there tasks are contained in the main file (main.c)

But when I compile the program and then check the memory usage I end up with the following memory usage as reported by the MPLabs Memory Usage Gauge,

Program Memory : 18600 Bytes (out of 536560)
Data Memory : 31404 Bytes (out of 32768)

This really seems excessive given that whats left is basically an empty project with the RTOS just ticking over.

Am I missing something or is it normal for 95% of the data memory to be used up like this.

The project files are,

Source files,

…\…\Source\list.c
…\…\Source\portable\MemMang\heap_2.c
…\…\Source\portable\MPLAB\PIC32MX\port.c
…\…\Source\portable\MPLAB\PIC32MX\port_asm.c
…\…\Source\queue.c
…\…\Source\tasks.c

Header Files

…\…\Source\include\croutine.h
…\…\Source\include\FreeRTOS.h
…\…\Source\include\list.h
…\…\Source\include\portable.h
…\…\Source\include\projdefs.h
…\…\Source\include\queue.h
…\…\Source\include\semphr.h
…\…\Source\include\task.h
…\…\Source\portable\MPLAB\PIC32MX\portmacro.h
C:\Program Files\Microchip\FreeRTOS\Demo\PIC32MX_MPLAB\FreeRTOSConfig.h

Here is a typical custom task

static void Grants_Task( void *pvParameters )
{
    portTickType xLastExecutionTime;
    xLastExecutionTime = xTaskGetTickCount();
    for( ;; )
    {
    vTaskDelayUntil( &xLastExecutionTime, 1000 );
    PORTToggleBits(IOPORT_D, BIT_0);       
    }   
}

Kind Regards
Grant Brown

davedoors wrote on Thursday, October 23, 2008:

This really should be an FAQ. All you are seeing is the heap RAM which will mostly be free RAM and can be set using the configTOTAL_HEAP_SIZE setting in FreeRTOSConfig.h. http://www.freertos.org/a00111.html