david.600 Posted October 2, 2017 Share Posted October 2, 2017 Hi, I have the Zynq 7000 board (Z-7010). I'm trying to build a Vhdl Program that sends and basic Ethernet Frame throw the RJ45 onboard interface. I'm trying the Intr_Dma example to learn how to use the controllers on the PS. My block design is simply one block of Zynq7 Processing system with eth0 and UART1 enabled Exported the hardware to SDK and imported the example of emacps "xemacps_example_intr_dma.c". Run the program will show the following message from UART: "Entering into main() Error setup phy loopback" Debugging the program and I found the problem is inside function EmacPsUtilEnterLoopback of xemacps_example_util.c This function is to set the PHY chip to loopback mode. However, This functions only works for Marvell and TI chip. according to this great blog, this should work: http://igorfreire.com.br/blog/#zynq-ethernet-interface-zybo-board i'v tried troubleshooting this problem,i'v added the fallowing lines:(to the "EmacPsUtilEnterLoopback" function) printf("%d\n",PhyIdentity); printf("%d\n",PHY_ID_MARVELL); printf("%d\n",PHY_ID_TI); the output is: Entering into main() 28 321 8192 Error setup phy loopback Therefor the realtec phy has PhyIdentity of 28, marvell phy is 321 and Ti phy is 8192. i'v tried changing the following lines: if (PhyIdentity == 28) { printf("phy is Marvell\n"); Status = EmacPsUtilMarvellPhyLoopback(EmacPsInstancePtr, Speed, PhyAddr); } after it didnt work, i've tried this lines: if (PhyIdentity == 28) { printf("phy is TI\n"); Status = EmacPsUtilTiPhyLoopback(EmacPsInstancePtr, Speed, PhyAddr); Nothing works. where can i find the relevant code? Thanks, David Link to comment Share on other sites More sharing options...
jpeyron Posted October 2, 2017 Share Posted October 2, 2017 Hi @david.600, I am not aware of any code made to get around this situation. In the blog post you link to they disable the loopback mode. I would suggest to reach out to xinlinx to see if they have any suggestions about having the loopback function accept a realtec phy. thank you, Jon Link to comment Share on other sites More sharing options...
Question
david.600
Hi,
I have the Zynq 7000 board (Z-7010).
I'm trying to build a Vhdl Program that sends and basic Ethernet Frame throw the RJ45 onboard interface.
I'm trying the Intr_Dma example to learn how to use the controllers on the PS.
My block design is simply one block of Zynq7 Processing system with eth0 and UART1 enabled
Exported the hardware to SDK and imported the example of emacps "xemacps_example_intr_dma.c".
Run the program will show the following message from UART:
"Entering into main()
Error setup phy loopback"
Debugging the program and I found the problem is inside function EmacPsUtilEnterLoopback of xemacps_example_util.c
This function is to set the PHY chip to loopback mode. However, This functions only works for Marvell and TI chip.
according to this great blog, this should work: http://igorfreire.com.br/blog/#zynq-ethernet-interface-zybo-board
i'v tried troubleshooting this problem,i'v added the fallowing lines:(to the "EmacPsUtilEnterLoopback" function)
printf("%d\n",PhyIdentity);
printf("%d\n",PHY_ID_MARVELL);
printf("%d\n",PHY_ID_TI);
the output is:
Entering into main()
28
321
8192
Error setup phy loopback
Therefor the realtec phy has PhyIdentity of 28, marvell phy is 321 and Ti phy is 8192.
i'v tried changing the following lines:
if (PhyIdentity == 28) {
printf("phy is Marvell\n");
Status = EmacPsUtilMarvellPhyLoopback(EmacPsInstancePtr, Speed, PhyAddr);
}
after it didnt work, i've tried this lines:
if (PhyIdentity == 28) {
printf("phy is TI\n");
Status = EmacPsUtilTiPhyLoopback(EmacPsInstancePtr, Speed, PhyAddr);
Nothing works.
where can i find the relevant code?
Thanks,
David
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Archived
This topic is now archived and is closed to further replies.