Free memory withe PIC32

barbercolman wrote on Monday, January 18, 2010:

HI
I am looking at using FreeRtos with a PIC32MX. I compiled and ran the demo. MPLAB shows 31996  out of 32768 bytes of ram used. I have previously used FreeRtos on an AVR part with far less ram. I think FreeRtos has grabbed all the ram but hopefully is not using all of it.

What is the easiest to check for free ram?

rtel wrote on Monday, January 18, 2010:

If you are using heap_1.c or heap_2.c then configTOTAL_HEAP_SIZE in FreeRTOSConfig.h will dimension a simple array that is used as the heap.  The memory gauge in MPLAB will show you the entire heap as used RAM - even though only part of it will actually be used.

The demo applications generally just keep generating tasks until the RAM is exhausted.  You can use  xPortGetFreeHeapSize() to see how much heap is unused once your application is running. You can then reduce the setting of configTOTAL_HEAP_SIZE accordingly.

Use uxTaskGetStackHighWaterMark() to fine tune the stack size allocated to each task.

Regards.

barbercolman wrote on Monday, January 18, 2010:

Hi
I am looking at the API Referenc and do not find xPortGetFreeHeapSize. Am I missing it or is xPortGetFreeHeapSize documented else ware?

rtel wrote on Monday, January 18, 2010:

You are right - I just had a look at its missing.  The prototype is:

size_t xPortGetFreeHeapSize( void );

Regards.

barbercolman wrote on Monday, January 18, 2010:

Do you know who does the demos? I used xPortGetFreeHeapSize() and found there is 0x01D8 bytes of free heap. This means that the demo is using approximately 27.5K of ram.

Is there a demo that leaves enough ram to add an application? 

I did find a reference to printf taking a lot of space. I will try to remove it, but, STILL 27.5K