Hi,
Below will be some comments on the points mentioned:
1. Linflexd_Uart_Ip_AsyncReceive function is blocked (inconsistent with the asynchronous feature of the interface).
1a. As you are saying "...the interface is blocked after running until the data received reaches a specified length...". As said in the S32G RM:
"The reception is automatically completed as soon as the programmed number (RDFL bits) of bytes have been received." [Chapter 48.4.4.5 UART receiver, Page 2216, S32G2 Reference Manual, Rev. 5, 05/2022].
The recommendation is the following:
"If you do not know in advance how many bytes are to be received, RDFL must not be programmed in advance. The reset value of RDFL is 0. This ensures that the reception happens byte by byte. The state machine moves to the Idle state after each byte reception." [Page 2217, S32G2 Reference Manual, Rev. 5, 05/2022].
2. Uncached data at the bottom of data receiving leads to the loss of received data beyond the set buffer.
2a. In case of the buffer, this is used as the input register for the RX channel. As said in the RM "LINFlexD has a dedicated data buffer for received data. This buffer comprises 4 bytes if UARTCR[WL1] = 0 or two half-words if UARTCR[WL1] = 1." [Page 2216, S32G2 Reference Manual, Rev. 5, 05/2022].
You can store a maximum of 4 bytes (or 2 halfwords) within the provided buffer (BRD4-7).
3. Failure of the sending interface during serial port data receiving. (Does not conform to full duplex characteristics)
3a. At this moment, we cannot locate the function you are using for transmit operation (Uart_AsyncSend), could you please help us with telling what version of the RTD are you using?
Unless you stop the transmission prior to uploading to the transmit buffer, once the data is in the buffer, no stop should be happening.
Please, let us know