config assert at heap 5

Hi I have a problem, my config assert pops at configASSERT( pxEnd ) in pvPortMalloc function, when I try to create task it means that pxEnd is not initialized. any suggestions?

config assert at heap 5

Does this provide a clue?
void *pvPortMalloc( size_t xWantedSize )
{
BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink;
void *pvReturn = NULL;

/* The heap must be initialised before the first call to
        prvPortMalloc(). */
configASSERT( pxEnd );
i.e. have you called vPortDefineHeapRegions() ? Do you need heap_5.c with its segmented, user defined heap?

config assert at heap 5

at the heap5.c pxEnd = NULL at declaration as static. I don’t see any change at pxEnd to any non zero value, at the all file.

config assert at heap 5

as for the heap5 question I am new to free rtos and i wrote simple main func that creates a task and runs it.

config assert at heap 5

Andy made some suggestions as to what the problem might be, but I don’t think you have answered either of his questions. Regards.

config assert at heap 5

I see that vPortDefineHeapRegions() contains the same assert check, but I don’t see the code that change the pxEnd before the assert check.

config assert at heap 5

I see that vPortDefineHeapRegions() contains the same assert check,
Actually, it doesn’t. It checks pxEnd is NULL to ensure you don’t call the function twice.
but I don’t see the code that change the pxEnd before the assert check.
It is done in vPortDefineHeapRegions(). Regards.

config assert at heap 5

Where is it done?

config assert at heap 5

Didn’t I tell you that in my very last post in this thread?

config assert at heap 5

Sorry for the dumb question: should I use heap for every program that I write? I have watch some tutorials for free RTOS, and I never saw heap functions at main.

config assert at heap 5

http://www.freertos.org/a00111.html