Hi,
I routed the UART0 signals of the zynq available on the picozed board through the PL and make them externals to shift signals level to 3V3.
On the PS side, I have a linux environment (4.4.0) generated with Yocto.
The UART1 is already used for the console and it is working perfectly. I would like to use UART0 for a custom application, but the Rx signal is not working.
First to check if the UART0 is working correctly I connected the RX and TX signals of UART0 to a 3V3 FTDI USB cable which is connected to my laptop.
After setting a correct configuration of the serial communication (115200, 8, 1, no parity) I used the following command to send a message to my laptop :
echo "HelloWorld" > /dev/ttyPS0
And I received the following message on my computer (using putty) :
HelloWorld
So the Tx signal of UART0 is working.
Then to check the RX signals I performed a similar operation and used the following command to read data :
cat /dev/ttyPS0
This command is waiting for data.
On my laptop I enter any characters but I never received any data on the picozed board.
To check if the signal is routed correctly I double check the pinning in my vivado project and add an ILA to see RX signals in the chipscope.
When data are available I can see them in the chipscope and I can say that it isn't an hardware issue.
For both UART0 and UART1 the uartps driver is used and seems to work correctly for UART1. I don't understant why it is not working for UART0.
Tx is working but not RX so I think about interruptions. To see any interruption, I see the /proc/interrupts file and have the following :
CPU0 CPU1
IRQ 59 and 82 are used for UART0 and 1 but not listed for uartps (yesterday it was listed only for IRQ 82).
To check if the configuration is well done on the UART0 I used the utils devmem2 to read and write UART Controller Registers (Appendix B.33 ug585). I found out that UART0 is not configured like UART1. But when I try to change its settings, nothing happens and I can't receive any data.
Thanks for your help.