Cortex A5 UART interrupts missing while using vTaskDelay()

Are you using an interrupt for the UART? How large is the memory buffer for the UART (not the internal Rx FIFO)?

I’m not allowed to post code snippets (not the website, my employer) so I cannot provide an example of something that I know works for me with FreeRTOS on ARM Cortex-M in STM32 microcontrollers and Microchip SmartFusion SoC FPGAs, and ARM Cortex-A53 in the PS of a Xilinx (AMD) MPSoC FPGA.

I also don’t know the SoC, and importantly, the vendor provided drivers. Interrupts should happen asynchronously to your loops unless you’re using blocking read calls. On the STM32, I typically use DMA with a circular buffer and register callbacks with the driver for buffer half-full and I/O complete. Depending on whether you have a dedicated task waiting for the next characters (blocking read with timeout) or the task polls the input buffer status periodically also affects things.

I have used FreeRTOS in a number of embedded applications, one of which had 3 UARTs connected to different types of navigation receivers accepting and parsing NEMA data along a 4th (BLE) for remote control, and a USB 2.0 High Speed connection to a host device. 8 foreground tasks in total (not counting the FreeRTOS timer task and the Idle task), no character loss.