Xilinx Zynq console rx not working
Chris Johns
chrisj at rtems.org
Mon Aug 16 22:59:22 UTC 2021
On 16/8/21 11:03 pm, Kinsey Moore wrote:
> 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.
I suggest we use chip maker errata when documenting hardware bugs as it could
turn out to be a bug in a our code.
This smells to me like a set up problem.
>>
>> 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?
No it did not.
Chris
More information about the devel
mailing list