Hello,
I have a custom board with the Xilinx ZYNQ7000 XC7Z020 chip running petalinux, and a DP83867 as the physical layer for the ethernet connection.
The petalinux system detects eth0, and when I connect a link partner to it, the auto-negotiation is completed and the link is up. I can configure the IP address (let's say 169.254.0.2), the netmask and the broadcast. However, I am not able to ping this partner (IP 169.254.0.1, same netmask and broadcast).
I am not able to figure out where is the problem. I am trying to narrow down the issue doing the loopback tests described in the troubleshooting. But it is a little confusing:
THe first step I do is to boot petalinux in the core. Then, I start thee u-boot environment, so I can read/write registers.
Then, for example, for the near-end loopback test, I set
Reg 0x001f to 0x8000
Reg 0x0000 to 0x0140
Reg 0x0032 to 0x00d3
Reg 0x0016 to 0x004
Reg 0x001f to 0x4000
then y set the ipaddr environment variable (setenv ipaddr 169.254.0.2)
And I try to ping 169.254.0.2 from the u-boot environment (NOT from the link partner):
ping 169.254.0.2
ethernet@e000b000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ethernet@e000b000: No link.
ping failed; host 169.254.0.2 is not alive
Is this method for getting the loopback test results correct?
No matter which test I set on the registers (near-end, far-end, mii loopback or analog loopback), pinging never works, neither from the u-boot environment or the link partner. So I guess I am doing something bad, but not sure if it's the pinging step or something else.
Shortly: I am able to write the registers but I am not sure about how to get the results from the loopback tests.
Any suggestion would be more than appreciated!
Thanks in advance!