FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [April 2017 Threads]
Hi all. I have an intermittant bug that I'm trying to track down. Essentially an assertion failure in line 413 of port.c -- basically the first line of vPortExitCritical():
~~~
void vPortExitCritical( void )
{
configASSERT( uxCriticalNesting );
uxCriticalNesting--;
if( uxCriticalNesting == 0 )
{
portENABLE_INTERRUPTS();
}
}
~~~
I am trying to get my debugger to get trapped here so I can see a call trace. Even with a trace I fear that the actual reason for the error would be a previous call to vPortExitCritical(), as the assertion is simply that uxCriticalNesting is actually 0.
I would love any tips on where to look for how to track this down. I suspect there may be an issue with priorities, or some rogue conditional branch that may be causing this. It feels like someone is calling vPortExitCritical() from outside a critical region (thus reducing uxCriticalNesting to 0 prematurely). Does that sound like a correct guess?
I'm running FreeRTOS 8.2.3 on an Arm Cortex M7, and a Segger J-LINK debugger.
Blaine
You can add some code to give yourself a place to place a break point,
as follows:
void vPortExitCritical( void )
{
if( uxCriticalNesting == 0 )
{
__asm volatile ( "NOP" );
}
// Rest of vPortExitCritical() code goes here.
This uses GCC syntax. You can then place your breakpoint on the NOP
instruction.
Thank you. I'm giving this a try to see what my call trace looks like.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.