Posted by rafleury on 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;
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?
RE: Priority initialization
Posted by Richard
on 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.
Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2016 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd..
See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.