while porting a small app, that runs on ARM7 and PowerPC ports of FreeRTOS, to a LPC1758, i had to find out, that i can not use API calls, that force a context switch in a taskENTER_CRITICAL() task_EXIT_CRITICAL() section. For example, the serial driver from the LPC2106 port do this.
Here xQueueSend() is called after a taskENTER_CRITICAL(), and the result is an infinite loop in “vListInsert()”.
The system tries to put the same task several times in the “xTasksWaitingToSend” of the tx queue, because it is not able to stop the task after it do so the first time, as the interrupts are off.
Is there an easy way to fix the serial driver?