I am getting NMI’s (accesses to VMA’s - vacant memory address) with the MSP430 port on the following: (Note I did an update today and am using the latest 7.4.2 source)
signed portBASE_TYPE xTaskRemoveFromEventList( const xList * const pxEventList )
/* THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED OR THE
SCHEDULER SUSPENDED. It can also be called from within an ISR. */
/* The event list is sorted in priority order, so we can remove the
first in the list, remove the TCB from the delayed list, and add
it to the ready list.
If an event is for a queue that is locked then this function will never
get called - the lock count on the queue will get modified instead. This
means we can always expect exclusive access to the event list here.
This function assumes that a check has already been made to ensure that
pxEventList is not empty. */
pxUnblockedTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList );
configASSERT( pxUnblockedTCB );
uxListRemove( &( pxUnblockedTCB->xEventListItem ) ); <= NMI is occurring during execution of this line.
if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE )
uxListRemove( &( pxUnblockedTCB->xGenericListItem ) );
prvAddTaskToReadyQueue( pxUnblockedTCB );
I have done the usual checks on stack; have tried putting some code in critical sections - which has helped - but I keep landing back on this. I am hoping this could be a known or familiar issue to some of you on this forum.
During debug of this project today this has come up repetitively.
The code is waiting for a structure to fill from a serial port - it is around 96 bytes - and sometimes it will even complete and the NMI still occurs on the above marked line.
Thanks In Advance,