Jump to content
  • 0

Zynq 7000 intr_dme example


david.600

Question

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

blk_design_eth.png

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.

×
×
  • Create New...