Hey
I have a problem using the task notification, and I would like some help.
I have an interrupt that receive data from the uart, and when it receive and “end char” it notify my task to process the data.
First round, so to speak, goes fine. The system wait for the notification and process the data when notified. On the way back though, when the task is setting up to wait for the next set of data, I get a hardfault:
BusFault->IMPRECISERR.
My backtrack before the fault is this:
#0 uxListRemove (pxItemToRemove=0xb8824) at …..\Components\FreeRTOS\Sources\list.c:177
#1 0x000136d8 in prvAddCurrentTaskToDelayedList (xTicksToWait=4294967295, xCanBlockIndefinitely=1) at …..\Components\FreeRTOS\Sources\tasks.c:5196
#2 0x00013516 in ulTaskNotifyTake (xClearCountOnExit=1, xTicksToWait=4294967295) at …..\Components\FreeRTOS\Sources\tasks.c:4652
#3 0x00010c8a in TaskProcess_Mactalk (pvParameter=0x0 <__Vectors>) at …..\Components\Mactalk\Mactalk\Sources\Mactalk_Process.c:72
#4 0x00000000 in ?? ()
I have been stepping though the code in uxListRemove, and the fault occurs here at the following:
pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;
where pxItemToRemove->pxNext are:
pxNext = 0xFB1 <Reset_Handler>
pxPrevious = 0x4CD <NMI_Handler>
pxOwner = 0x4D5 <Hardfault_Handler>
pxContainer = 0x545 <MemManage_Handler>
I have verified that I am not getting an interrupt from the uart while the task is setting it self up again.
ConfigASSERT are defined as:
if( ( x ) == pdFALSE ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
and configCHECK_FOR_STACK_OVERFLOW is sat to 2.
I am working on a NetX90(Arm cortex-m4f)
hope that someone can help