This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/PHYTC-3P-PHYCORE-AM335X: Why does one of the UARTs of AM335x data is getting delayed when other UART port is transmitting/receiving more data continuously

Part Number: PHYTC-3P-PHYCORE-AM335X

Tool/software: Linux

We are using UART2 and UART3 of AM335x as RS485 ports.

The application(1) which is using UART3  port with real-time high priority and UART port is configured with 1200 bps as it is receiving IRIG-B data from GPS to synchronize the system time with GPS time.

Where as other application(2) which is using UART2 with default priority and UART port is configured with 115200 bps and it is polling the devices data those are connected with RS485 ports.

The problem is that  application(1) data  is delayed when the application(2) is active with more data.

Observations are as follows,

This behavior is not only limited to only UART2 but also other UARTs of our board, means data from UART3 is  delayed when other UART ports are busy with more data.

And this behavior is purely depends on data flow of UARTs not related to processes priorities as I have already tested with test application which is consuming more CPU time than the application(2), but no impact on application(1) data flow.

The Questions are

How does the UART2 or any other UARTs  data flow effects the data flow of UART3? Or, to make the question more open, what is the dependency of one UART port data flow on other ports data flow?

Are  there any shared memory/buffers/structures of UART driver between different UART ports which causes delays in data transmitting/receiving?

Data received by application(1) is meeting the timing requirements when other UART ports are not active but observed random delays in receiving data when other ports are active with more data.

Hope my question and explanation is clear.

Thanks,

Prabhak.