I’m having currently a microblaze design in front of me. I already included a timer and a interrupt controller, both worked fine (without FreeRTOS). Therefore the timer and interrupt setup seems to be correct.
After adding FreeRTOS Sources to the project it couldn’t even manage to compile all the files.
In the File port.c:
/src/freeRTOS/portable/port.c: In function ‘vPortYield’:
/src/freeRTOS/portable/port.c:253: error: conflicting type qualifiers for ‘uxCriticalNesting’
/src/freeRTOS/portable/port.c:85: error: previous definition of ‘uxCriticalNesting’ was here
make: *** [TestApp_Memory/executable.elf] Error 1
Line 85 of port.c looks like:
/* Counts the nesting depth of calls to portENTER_CRITICAL(). Each task
maintains it’s own count, so this variable is saved as part of the task
volatile unsigned portBASE_TYPE uxCriticalNesting = portINITIAL_NESTING_VALUE;
An on Line 253 we can find something like that:
/* Perform the context switch in a critical section to assure it is
not interrupted by the tick ISR. It is not a problem to do this as
each task maintains it’s own interrupt status. */
/* Jump directly to the yield function to ensure there is no
compiler generated prologue code. */
asm volatile ( “bralid r14, VPortYieldASM \n\t”
“or r0, r0, r0 \n\t” );
Do i have to set some special compiler settings to get FreeRTOS compiled? Any Help is appreciated!
Greetings from Vienna,