I am trying to run shell or debug console as a separate task from the rest of the tasks in the software and only execute it when needed (interrupt based). I see that shell in FreeRTOS uses UART blocking function calls to read and write. This is causing the entire application to wait for the blocking call to finish and sit in a while loop. If I change the shell task to lower priority, the task is never getting executed because of higher priority tasks in the software. I could do this easily using MQX in the older version of SDK but I am unable to figure out how this can be done in FreeRTOS. Please let me know what would be the best way to achieve this? An example would be helpful.