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.