I've been evaluating the RTOS on the PIC24 platform and have been impressed. I've got tasks with priorities, messages queues, critical sections etc.
I wanted to have a play with a Mutex but the linker does not seem to like xSemaphoreCreateMutex() even though it is happy with my later use of xSemaphoreGive() and xSemaphoreTake() in the same file. Maybe I've missed a header file or a defintion somewhere but I'm stuck.
/* My includes */
/* My Mutex handle */
static SemaphoreHandlet MutexHandleAppTestLED = NULL;
/* My Mutex creation */
MutexHandle_AppTestLED = xSemaphoreCreateMutex();
// Error thrown by the linker...
: In function
: undefined reference toxQueueCreateMutex'
build/default/production/ext/1472/ApplicationTask.o(.text+0x12): In function
: undefined reference to_xQueueCreateMutex'
The function xSemaphoreCreateMutex() is in blue in the project, showing it is recognize as a function and 'Navigate to defintion' opens the file semphr.h at the extract below ( where the section is active in the compilation ).
if( configSUPPORTDYNAMICALLOCATION == 1 )
define xSemaphoreCreateMutex() xQueueCreateMutex( queueQUEUETYPEMUTEX )
Please can you help ?
Is configUSE_MUTEXES set to 1 in FreeRTOSConfig.h?
Many thanks that has solved it.
In fact configUSE_MUTEXES was not in FreeRTOSConfig.h at all else I would have given it a try !
I'd expect all configurable options to be in this file ?
That is quite an old demo, perhaps even created before there were
OK fair enough. I used the demo to get up and running, I'll look for the latest FreeRTOS source.