How to calculate configTOTAL_HEAP_SIZE?

bonmot wrote on Thursday, January 04, 2007:

I am using LPC2138, with 32K RAM.
I am using heap_1.c
I have 9 tasks running. the total stack size is 20480 bytes.

Does that mean i just need to set up the configTOTAL_HEAP_SIZE to 20480 bytes?

Thanks

Paul

embeddedc wrote on Friday, January 05, 2007:

It needs to be larger than that as you also need to allocate the task control blocks for the tasks.

A couple of ideas to help you.

i/ In pvPortMalloc (heap_1.c) add the following lines before the return statement.

if( pvReturn == NULL )
{
   /* Place some code here for a breakpoint */
}

then add a break point where specified.  If you run out of heap then it will break on your break point.

ii/  Fill the heap with a known value

memcpy( xHeap.ucHeap, 0xaa, configTOTAL_HEAP_SIZE );

before you use the heap.  Then you can look at the heap and see how much remains.

bonmot wrote on Friday, January 05, 2007:

Thanks a lot

I think you are using a JTAG debugger.
I just got one WIGGLER, cost me $125. I am going to set it up today.
I am using Eclipse, CDT, OCDEMON. any suggestions?

bonmot wrote on Friday, January 05, 2007:

You metioned that "to allocate the task control blocks for the tasks".
Do I have to that? Where can I do that?
Thank you!

rtel wrote on Friday, January 05, 2007:

When you create a task the scheduler grabs memory from the heap - into which it places the TCB and the task stack.  You do not need to do this manually.

Regards.