On 8/16/2021 04:45, Chris Johns wrote:
On 16/8/21 6:38 pm, Chris Johns wrote:
I have taken a closer look at the driver. I am receiving RX interrupts and the
characters are being queued however the receive FIFO trigger interrupt is only
raised when the FIFO reaches the set threshold of half the FIFO size. I suspect
there is an assumption the RX timeout will fire but it is not.

Doing this is questionable ....

https://git.rtems.org/rtems/tree/bsps/shared/dev/serial/zynq-uart.c#n222

You cannot send a character when touching the attributes. Where is this hardware
bug documented by Xilinx?
The attributes are done being touched and the TX/RX enable flags are set again before sending the character. I was seeing the same behavior on Zynq QEMU even with this code removed.

I couldn't find the hardware bug documented anywhere, but out of the 3 ZynqMP boards I have one requires this consistently.

My application does this ...

     if (tcgetattr(fileno(stdout), &term) < 0)
         error_message();
     cfsetispeed (&term, B115200);
     cfsetospeed (&term, B115200);
     if (tcsetattr (fileno(stdout), TCSADRAIN, &term) < 0)
         error_message();
     if (tcgetattr(fileno(stdin), &term) < 0)
         error_message();
     cfsetispeed (&term, B115200);
     cfsetospeed (&term, B115200);
     if (tcsetattr (fileno(stdin), TCSADRAIN, &term) < 0)
         error_message();

and this kills the receive interrupts.

Does removing the null character kick restore functionality for you in this case?


Kinsey

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to