Priority initialization

anonymous wrote on Tuesday, April 24, 2012:

Im using the Cortex M3 port of freeRTOS (specifically the lpc1763) and using Rowley Crossworks.

Ive been diving into the interrupt priorities of my application lately to be sure I understand everything is running as i intend.  Following the code around for a while and I ran into the following lines:

portBASE_TYPE xPortStartScheduler( void )
{
/* Make PendSV, CallSV and SysTick the same priroity as the kernel. */
*(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI;
*(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI;
}

Two questions:
1) The register is defined as portNVIC_SYSPRI2, but the register its pointing to is the 3rd system priority handler, so the name is perhaps a bit misleading.  Not really my main question though….just an observation.

2) In the comment it says the CallSV priority is set, but I dont see where that instruction happens, in fact… in my program memory it is currently 0.  Could this negatively affect my application?  I saw a note on another post that CallSV is only used to start the scheduler, so maybe this is ok?

Thanks.

rtel wrote on Wednesday, April 25, 2012:

SVCall is only called to kick the scheduler off, so never called when the scheduler is actually running, so its priority is not set.

Regards.