I have an application that I have been using FreeRTOS v7.5.3 with IAR EWARM 184.108.40.20672 on an LPC4350 for the past few years. I am using the IAR Cortex-M4F port. I recently had a board lockup where I determined that the code was stuck in the Idle task with the BASEPRI register set to 0x20. This was keeping the SysTick interupt from triggering and thus keeping all the other tasks from ever running. As far as I can tell, you should never have a non zero value in the BASEPRI register when an actual task’s code is running unless the task has called portDISABLE_INTERRUPTS() or taskENTER_CRITICAL(). The Idle task doesn’t seem to be calling these functions at least in the three or four spots it is looping around. Has anyone ever seen this before? Do any of the newer versions have improvements to avoid this in the Cortex-M4F port?
At this point I have not ruled out some type of hardware failure - data or code access failures. I was just wondering if this has been seen before and if any possible causes may be known.