lpcware

malloc() failure: LPC1788+FreRTOS+heap_3.c

Discussion created by lpcware Employee on Jun 15, 2016
Latest reply on Jun 18, 2016 by lpcware
Content originally posted in LPCWare by jim.shentu on Wed May 18 21:35:23 MST 2016
Hello,

I am experiencing failure with malloc() function. Details of the target system is given as below:
MCU: LPC1788FBD208
OS: FreeRTOS
SDRAM: MT48LC4M16A2
Original Evaluation Kit: UEZGUI-1788-70WVT
Sample Project: uEZ_v2.06_SourceForge

I am using the heap_3.c module. Function malloc() is dead at first time when it is called, requiring
76 bytes to be allocated. When I check the configuration of the heap size, it is far bigger than
the required size. Could you technical support guys help identify the problem? Thanks in advance.


-------------------------------------------------------------------------------------------------------------------
heap_3 code
-------------------------------------------------------------------------------------------------------------------
void *pvPortMalloc( size_t xWantedSize )
{
void *pvReturn;

vTaskSuspendAll();
{
pvReturn = malloc(xWantedSize ); 
}
xTaskResumeAll();

#if( configUSE_MALLOC_FAILED_HOOK == 1 )
{
if( pvReturn == NULL )
{
extern void vApplicationMallocFailedHook( void );
vApplicationMallocFailedHook();
}
}
#endif

return pvReturn;
}

-------------------------------------------------------------------------------------------------------------------
Heap Size defined in FreeRTOSConfig.h
-------------------------------------------------------------------------------------------------------------------

#ifndef configMINIMAL_STACK_SIZE
    #define configMINIMAL_STACK_SIZE( 128 )
#endif

#ifndef configTOTAL_HEAP_SIZE
    #define configTOTAL_HEAP_SIZE( ( size_t ) (( 32 * 1024 ) - 64))
#endif


I have tried to increase the heap size up to 48k and reduce the heap size to 20k.
The malloc dead lock keeps the same. There is no improvement.

Outcomes