RGMII with DP83867 in T2081 board Ping Test Failed

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RGMII with DP83867 in T2081 board Ping Test Failed

2,396 Views
anshulkhare
Contributor III

We are having a custom board based on T2081 processor having two PHY (DP83867) attached to the processor via RGMII interface.
The design is based on the T2080RDB-PC Board.

i have made the below changes in u-boot configuration file to enable the RGMII PHY.

#define CONFIG_PHY_TI
#define RGMII_PHY1_ADDR 0x00
#define RGMII_PHY2_ADDR 0x01


The problem is when i am trying to ping from the board i am getting error
*** ERROR: `ethaddr' not set
ping failed; host 192.168.1.4 is not alive

i am trying to find the "ethaddr" but i am not getting.

I am attaching the U-boot log which includes RCW settings of the board.


in u-boot logs also i am getting error.

"FM1@DTSEC3 connected to TI DP83867
Initial value for argc=3
Final value for argc=3
fm_eth_rx_port_parameter_init: rx_buf_pool = 0fafa7e0
FM1@DTSEC4 connected to TI DP83867
FM1@DTSEC3 [PRIME]
Error: FM1@DTSEC3 address not set.
, FM1@DTSEC4
Error: FM1@DTSEC4 address not set."

i am having the below mentioned environment variable.

printenv
EXPORT table = 0ff87134, htab.size = 227, htab.filled = 26, size = 0
Unsorted: n=26
0: 0faf4138 ==> stdin => serial
1: 0faf4188 ==> ramdiskfile => t2080qds/ramdisk.uboot
2: 0faf4250 ==> ramboot => setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr
3: 0faf42a0 ==> initrd_high => 0x0FFFFFF0
4: 0faf441c ==> nfsboot => setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off console=$consoledev,$baudrate $othbootargs;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr - $fdtaddr
5: 0faf44a8 ==> tftpflash => tftpboot $loadaddr $uboot && protect off $ubootaddr +$filesize && erase $ubootaddr +$filesize && cp.b $loadaddr $ubootaddr $filesize && protect on $ubootaddr +$filesize && cmp.b $loadaddr $ubootaddr $filesize
6: 0faf455c ==> baudrate => 115200
7: 0faf4610 ==> consoledev => ttyS0
8: 0faf47a0 ==> fman_ucode => eff00000
9: 0faf47b4 ==> loadaddr => 1000000
10: 0faf4804 ==> fdtaddr => 1e00000
11: 0faf4840 ==> bootfile => uImage
12: 0faf4868 ==> netdev => eth0
13: 0faf48a4 ==> ubootaddr => 0xeff40000
14: 0faf4ac0 ==> stderr => serial
15: 0faf4b9c ==> bdev => sda3
16: 0faf4bb0 ==> ethprime => FM1@DTSEC3
17: 0faf4c3c ==> fdtfile => t2080qds/t2080qds.dtb
18: 0faf4c8c ==> uboot => "u-boot.bin"
19: 0faf4cb4 ==> stdout => serial
20: 0faf4d54 ==> bootdelay => 10
21: 0faf4ef8 ==> ramdiskaddr => 2000000
22: 0faf4f48 ==> ethact => FM1@DTSEC3
23: 0faf4fac ==> hwconfig => fsl_ddr:ctlr_intlv=cacheline,bank_intlv=auto;usb1:dr_mode=host,phy_type=utmi
24: 0faf5254 ==> bootcmd => setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;setenv ramdiskaddr 0x02000000;setenv fdtaddr 0x00c00000;setenv loadaddr 0x1000000;bootm $loadaddr $ramdiskaddr $fdtaddr
25: 0faf52cc ==> rootpath => /opt/nfsroot
baudrate=115200
bdev=sda3
bootcmd=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;setenv ramdiskaddr 0x02000000;setenv fdtaddr 0x00c00000;setenv loadaddr 0x1000000;bootm $loadaddr $ramdiskaddr $fdtaddr
bootdelay=10
bootfile=uImage
consoledev=ttyS0
ethact=FM1@DTSEC3
ethprime=FM1@DTSEC3
fdtaddr=1e00000
fdtfile=t2080qds/t2080qds.dtb
fman_ucode=eff00000
hwconfig=fsl_ddr:ctlr_intlv=cacheline,bank_intlv=auto;usb1:dr_mode=host,phy_type=utmi
initrd_high=0x0FFFFFF0
loadaddr=1000000
netdev=eth0
nfsboot=setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off console=$consoledev,$baudrate $othbootargs;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr - $fdtaddr
ramboot=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr
ramdiskaddr=2000000
ramdiskfile=t2080qds/ramdisk.uboot
rootpath=/opt/nfsroot
stderr=serial
stdin=serial
stdout=serial
tftpflash=tftpboot $loadaddr $uboot && protect off $ubootaddr +$filesize && erase $ubootaddr +$filesize && cp.b $loadaddr $ubootaddr $filesize && protect on $ubootaddr +$filesize && cmp.b $loadaddr $ubootaddr $filesize
uboot="u-boot.bin"
ubootaddr=0xeff40000

Environment size: 1399/8188 bytes


mii info


PHY 0x00: OUI = 0x80028, Model = 0x23, Rev = 0x01, 10baseT, HDX
PHY 0x01: OUI = 0x80028, Model = 0x23, Rev = 0x01, 10baseT, HDX
PHY 0x02: OUI = 0x80028, Model = 0x23, Rev = 0x01, 10baseT, FDX
PHY 0x03: OUI = 0x80028, Model = 0x23, Rev = 0x01, 10baseT, FDX

mdio list

FSL_MDIO0:
FM_TGEC_MDIO:
T2080QDS_MDIO_RGMII1:
0 - TI DP83867 <--> FM1@DTSEC3
T2080QDS_MDIO_RGMII2:
1 - TI DP83867 <--> FM1@DTSEC4
T2080QDS_MDIO_SLOT1:
T2080QDS_MDIO_SLOT2:
T2080QDS_MDIO_SLOT3:
T2080QDS_MDIO_SLOT4:
T2080QDS_MDIO_SLOT5:
T2080QDS_MDIO_10GC:


To perform the "ping" test i have updated the below environment variables as,

setenv ipaddr 192.168.1.3
setenv serverip 192.168.1.4
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.1

and when i am running the test i am getting below error.

ping 192.168.1.4
Trying FM1@DTSEC3
memac_set_interface_mode, if_mode = 5006
memac_set_interface_mode, if_status = b000
*** ERROR: `ethaddr' not set
ping failed; host 192.168.1.4 is not alive
Command failed, result=1

kindly help to solve this issue.

Labels (1)
0 Kudos
8 Replies

1,837 Views
bpe
NXP Employee
NXP Employee

'ethaddr' is a u-Boot environment variable that defines the value for
the first Ethernet controller MAC address. This variable must be given
a value before you can use u-Boot network functions. See the document at the
link below for more details:

http://www.denx.de/wiki/view/DULG/UBootEnvVariables

MAC address shall be distinguished from both the PHY management addresses
assigned in u-Boot RGMII_PHY*_ADDR  configuration macros and the IP address
which you assign to ipaddr environment variable.

Assign a value to ethaddr and saveenv to fix the issue.

If not familiar with various addresses required for a
network-connected system, study IEEE 802.3,
Sections 3.2.3 and 22.2.4 and this document:

http://tldp.org/LDP/nag2/x-087-2-issues.html

Regards,

Platon

0 Kudos

1,837 Views
anshulkhare
Contributor III

Hello bpe

Thank you for Reply,

i am getting difficulty to find the 'ethaddr' environment variable for my device.

How to find the 'ethaddr' for the device.

kindly help to solve this issue.

Regards,

Anshul Khare

0 Kudos

1,837 Views
bpe
NXP Employee
NXP Employee

I'm not sure what you want to find. u-Boot environment variables
are defined when they are assigned a value. You cannot find an

undefined variable. More information on
working with u-Boot environment variables can be found at the links
below:

http://www.denx.de/wiki/view/DULG/UBootCmdGroupEnvironment
http://www.denx.de/wiki/view/DULG/UBootEnvVariables

If unsure what value to assign, select any locally administered,
individual address. Refer to IEEE 802.3, Section 3.2.3 for explanations.
u-Boot accepts hexadecimal, colon-separated MAC address representation.

Regards,

Platon

0 Kudos

1,837 Views
anshulkhare
Contributor III

Hello bpe

Thank you for the reply.

i have updated the environment variable in u-boot as,

setenv ipaddr 192.168.1.3
setenv serverip 192.168.1.4
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.1
setenv ethaddr 00:04:9f:05:34:4E

setenv eth1addr 00:04:9f:05:34:4F
setenv eth2addr 00:04:9f:05:34:50
setenv eth3addr 00:04:9f:05:34:51

ethaddr i am referring from Reference board.

but when i am trying to ping i am getting error ARP Retry count exceeded; starting again
>> ping 192.168.1.4
Trying FM1@DTSEC3
memac_set_interface_mode, if_mode = 5006
memac_set_interface_mode, if_status = b000
Using FM1@DTSEC3 device

ARP Retry count exceeded; starting again
ping failed; host 192.168.1.4 is not alive
Command failed, result=1

when i am using mdio list i am able to see below devices

mdio list
FSL_MDIO0:
FM_TGEC_MDIO:
T2080QDS_MDIO_RGMII1:
0 - TI DP83867 <--> FM1@DTSEC3
T2080QDS_MDIO_RGMII2:
1 - TI DP83867 <--> FM1@DTSEC4
T2080QDS_MDIO_SLOT1:
T2080QDS_MDIO_SLOT2:
T2080QDS_MDIO_SLOT3:
T2080QDS_MDIO_SLOT4:
T2080QDS_MDIO_SLOT5:
T2080QDS_MDIO_10GC:

and when i am using command mii device command it shows me Current device: as 'FSL_MDIO0' but i am using T2080QDS_MDIO_RGMII1
how to change the current device.

mii device
MII devices: 'FSL_MDIO0' 'FM_TGEC_MDIO' 'T2080QDS_MDIO_RGMII1' 'T2080QDS_MDIO_RGMII2' 'T2080QDS_MDIO_SLOT1' 'T2080QDS_MDIO_SLOT2' 'T2080QDS_MDIO_SLOT3' 'T2080QDS_MDIO_SLOT4' 'T2080QDS_MDIO_SLOT5' 'T2080QDS_MDIO_10GC'
Current device: 'FSL_MDIO0'

help me to solve this issue.

Regards,

Anshul Khare

0 Kudos

1,837 Views
bpe
NXP Employee
NXP Employee

Based on your u-Boot outputs, it attempts to initialize and use an
MDIO multiplexer. It is an external multiplexer device connected to the
processor MDIO ports on T2080-QDS and some other NXP development systems to increase
the board flexibility. A typical OEM design does not need it,
and it is unlikely to be present on your board. u-Boot code attempting
to connect to a PHY through the multiplexer gets confused and may fail
to initialize the PHY properly. That is why you are seeing that many
MDIO buses, while the chip actually has only two externally visible ones.

Suggestions:

1. If you copied your board initialization the code from
   board/freescale/t2080xqds/, review it and eliminate MDIO
   multiplexer manipulation routines.
   
2. Make sure your board initialization code properly links the PHYs
   and MACs.
   
3. Refer the initialization code for T2080-RDB. This board  does not
   have an MDIO mux. The code is located under board/freescale/t208xrdb/   

0 Kudos

1,837 Views
anshulkhare
Contributor III

Hello bpe

Thank You for the support.

in u-boot ping is working fine,issue was with the TX Clock in the Driver.

Regards,

Anshul Khare

0 Kudos

1,837 Views
anshulkhare
Contributor III

Hello bpe

How to configure the RGMII configuration for DP83867 in Linux?

i am using Linux SDK-V2.0-1701 it has Linux kernel 4.1.35,in that i am not getting TI DP83867 driver.

i have created new thread for this.

RGMII with DP83867 in Linux Kernel for T2081 board 

Regards,

Anshul Khare

0 Kudos

1,837 Views
bpe
NXP Employee
NXP Employee

See my comment in the new thread for suggestions.

Regards,

Platon

0 Kudos