I am working with a T2080RDB device and am having trouble trying to get Ethernet working. I have not been able to make this work in either U-Boot or Linux that shipped with the board.
Should I be able to ping using the standard U-Boot shipped with the board?
What about pinging using the embedded Linux shipped with the board?
Should I be able to use any of the 6 Ethernet ports, eth0 thru eth5?
Some configuration must be set improperly. Any help on resolving this would be much appreciated.
My VxWorks BSP says it only supports ETH0 and ETH1, so I eventually need to get those working. Since I don't have an SFP+ to RJ45 adapter at the moment, I am using ETH2 to try to get Ethernet working.
Thank you,
Ron
I am aware that there is a typo in the QorIQ T2080 Reference Design Board Quick Start, Table 2 for eth2 and eth3. As I understand it, the correct info is:
Table 2. Ethernet port mapping
Label on front panel | Port in U-Boot | Port in Linux | FMAN address | Comments |
ETH0 | FM1@GTEC1 | fm1-mac9 | 0xfe4f0000 | 10GBase-T SFP+ (Cortina 4315) |
ETH1 | FM1@GTEC2 | fm1-mac10 | 0xfe4f2000 | 10GBase-T SFP+ (Cortina 4315) |
ETH3 | FM1@GTEC3 | fm1-mac1 | 0xfe4e0000 | 10GBase-T (AQ1202) |
ETH2 | FM1@GTEC4 | fm1-mac2 | 0xfe4e2000 | 10GBase-T (AQ1202) |
ETH4 | FM1@DTSEC3 | fm1-mac3 | 0xfe4e4000 | 1G RGMII (RTL8211E) |
ETH5 | FM1@DTSEC4 | fm1-mac4 | 0xfe4e6000 | 1G RGMII (RTL8211E) |
Also, is it correct that the U-Boot port names should be "FM1@TGECn" instead of "FM1@GTECn" ?
What about "FM1@DTSECn" ? I am correct in assuming that those are right?
In U-Boot, I have been trying to use ETH2, which should be FM1@TGEC4. (I have tried others as well with similar results.) With a cable plugged in, the ETH2 Tx/Rx lights continuously flash alternately. I am trying to ping the network router at 192.168.25.1. This ping works fine from other devices on the same network. I have tested the Ethernet cable, which tests fine, and tried other cables as well.
First ping attempt:
=> ping 192.168.25.1
Using FM1@TGEC4 device
ARP Retry count exceeded; starting again
ping failed; host 192.168.25.1 is not alive
=>
Second ping attempt (interesting that the output is different than the first ping):
=> ping 192.168.25.1
Using FM1@TGEC4 device
FM1@TGEC4: Tx error, txbd->status = 0x8800
FM1@TGEC4: Tx buffer not ready, txbd->status = 0x8800
FM1@TGEC4: Tx buffer not ready, txbd->status = 0x8800
FM1@TGEC4: Tx buffer not ready, txbd->status = 0x8800
ARP Retry count exceeded; starting again
ping failed; host 192.168.25.1 is not alive
=>
Ping with no cable attached to eth2:
=> ping 192.168.25.1
FM1@TGEC4 Waiting for PHY auto negotiation to complete................................ TIMEOUT !
FM1@TGEC4: No link.
Here is the U-Boot log:
U-Boot 2016.012.0+ga9b437f (May 15 2016 - 01:38:26 +0800)
CPU0: T2080E, Version: 1.1, (0x85380011)
Core: e6500, Version: 2.0, (0x80400120)
Clock Configuration:
CPU0:1799.820 MHz, CPU1:1799.820 MHz, CPU2:1799.820 MHz, CPU3:1799.820 MHz,
CCB:599.940 MHz,
DDR:933.310 MHz (1866.620 MT/s data rate) (Asynchronous), IFC:149.985 MHz
FMAN1: 699.930 MHz
QMAN: 299.970 MHz
PME: 599.940 MHz
L1: D-cache 32 KiB enabled
I-cache 32 KiB enabled
Reset Configuration Word (RCW):
00000000: 1207001b 15000000 00000000 00000000
00000010: 66150002 00000000 ec027000 c1000000
00000020: 00800000 00000000 00000000 000307fc
00000030: 00000000 00000000 00000000 00000004
I2C: ready
Board: T2080RDB, Board rev: 0x01 CPLD ver: 0x06, boot from NOR vBank0
SERDES Reference Clocks:
SD1_CLK1=156.25MHZ, SD1_CLK2=100.00MHZ
SD2_CLK1=100.00MHZ, SD2_CLK2=100.00MHZ
SPI: ready
DRAM: Initializing....using SPD
Detected UDIMM D3XP56082XL10AA
2 GiB left unmapped
4 GiB (DDR3, 64-bit, CL=13, ECC on)
DDR Chip-Select Interleaving Mode: CS0+CS1
VID: Core voltage after adjustment is at 1023 mV
Flash: 128 MiB
L2: 2 MiB enabled
Corenet Platform Cache: 512 KiB enabled
Using SERDES1 Protocol: 102 (0x66)
Using SERDES2 Protocol: 21 (0x15)
SEC0: RNG instantiated
NAND: 512 MiB
MMC: FSL_SDHC: 0
EEPROM: Invalid ID (ff ff ff ff)
PCIe1: Endpoint, undetermined, regs @ 0xfe240000
PCIe1: Bus 00 - 00
PCIe2: Root Complex, x2 gen2, regs @ 0xfe250000
02:00.0 - 1957:0808 - Processor
PCIe2: Bus 01 - 02
PCIe3: disabled
PCIe4: Root Complex, no link, regs @ 0xfe270000
PCIe4: Bus 03 - 03
In: serial
Out: serial
Err: serial
Net: Fman1: Uploading microcode version 106.4.18
FM1@DTSEC3, FM1@DTSEC4, FM1@TGEC1, FM1@TGEC2, FM1@TGEC3, FM1@TGEC4 [PRIME]
Hit any key to stop autoboot: 0
=>
And the environment variables:
=> printenv
baudrate=115200
bdev=sda3
bootargs=root=/dev/ram rw console=ttyS0,115200
bootcmd=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;bootm e8020000 e9300000 e8800000
bootdelay=10
bootfile=uImage
consoledev=ttyS0
eth0addr=00:04:9F:05:DB:13
eth1addr=00:04:9F:05:DB:14
eth2addr=00:04:9F:05:DB:15
eth3addr=00:04:9F:05:DB:16
eth4addr=00:00:00:00:00:04
eth5addr=00:00:00:00:00:05
eth6addr=00:00:00:00:00:06
eth7addr=00:00:00:00:00:07
eth8addr=00:04:9F:05:DB:17
eth9addr=00:04:9F:05:DB:18
ethact=FM1@TGEC4
ethaddr=00:04:9F:05:DB:15
ethprime=FM1@TGEC4
fdtaddr=2000000
fdtfile=t2080rdb.dtb
fileaddr=1000000
filesize=200000
fman_ucode=eff00000
gatewayip=192.168.25.1
hvboot=setenv bootargs console=ttyS0,115200 config-addr=0xfe8900000;bootm 0xfe8700000 - 0xfe8800000
hwconfig=fsl_ddr:bank_intlv=auto;usb1:dr_mode=host,phy_type=utmi
ipaddr=192.168.25.130
loadaddr=1000000
netdev=eth0
netmask=255.255.255.0
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=5000000
ramdiskfile=ramdisk.uboot
rootpath=/opt/nfsroot
sataboot=setenv bootargs root=/dev/sda1 rootdelay=5 rw console=$consoledev,$baudrate $othbootargs;bootm e8020000 - e8800000
serverip=192.168.25.1
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: 1975/8188 bytes
=>
Please refer to the following port map, ETH2 should be FM1@GTEC3.
In u-boot, please configure ethact as the following.
=>setenv ethact FM1@GTEC3
In addition, please check switch configuration as the following.
Yiping,
Thank you for your response - I appreciate your help. However, this did not resolve my problem.
Before addressing your post directly, I ran some additional experiments that raised a different, but related question.
What causes the following Tx buffer ethernet error?
Tx error, txbd->status = 0x8800
Tx buffer not ready, txbd->status = 0x8800
These error messages are shown in context later in this post.
The switch configuration that you suggest is the standard configuration the board is shipped with. I have not changed it and my board matches the table you included.
The port map that you presented is the same as Table 2 from the QorIQ T2080 Reference Design Board Quick Start, which I have been referencing. There are several posts in NXP forums that state there is a typo in this table - actually 2 typos.
I'm not really sure what is correct. I did a few experiments and here is what I discovered about the form of the names:
It appears that the correct port names are FM1@TGECx. If I set "ethact" to any port of the form FM1@GTECx, I always get the same response when attempting to ping from the U-Boot prompt:
No ethernet found
ping failed; host 192.168.25.1 is not alive
Then U-Boot actually deletes the variable "ethact" from the set of environment variables.
printenv ethact
Error: "ethact" not defined
Also, if I set "ethact" to any port of the form FM1@GTECx, save the environment variables with saveenv, and then reboot, U-Boot always resets "ethact" to FM1@DTSEC3.
So, U-Boot does not recognize the form FM1@GTECx for the "ethact" port names and actively gets rid of them. I can conclude from these tests that the correct names are FM1@TGECx.
I also did some experiments on the settings for ETH2 and ETH3.
Set "ethact" and "ethprime" to FM1@TGEC3
If an ethernet cable is plugged in to ETH2 or there is no cable plugged in, the ping response is always:
=> ping 192.168.25.1
FM1@TGEC3 Waiting for PHY auto negotiation to complete................................ TIMEOUT !
FM1@TGEC3: No link.
If an ethernet cable is plugged in to ETH3, the ping response is:
=> ping 192.168.25.1
Using FM1@TGEC3 device
ARP Retry count exceeded; starting again
ping failed; host 192.168.25.1 is not alive
=> ping 192.168.25.1
Using FM1@TGEC3 device
FM1@TGEC3: Tx error, txbd->status = 0x8800
FM1@TGEC3: Tx buffer not ready, txbd->status = 0x8800
FM1@TGEC3: Tx buffer not ready, txbd->status = 0x8800
FM1@TGEC3: Tx buffer not ready, txbd->status = 0x8800
ARP Retry count exceeded; starting again
ping failed; host 192.168.25.1 is not alive
The ping fails, but it apparently does try to transmit.
Likewise, set "ethact" and "ethprime" to FM1@TGEC4
If an ethernet cable is plugged in to ETH3 or there is no cable plugged in, the ping response is always:
=> ping 192.168.25.1
FM1@TGEC4 Waiting for PHY auto negotiation to complete................................ TIMEOUT !
FM1@TGEC4: No link.
If an ethernet cable is plugged in to ETH2, the ping response is:
=> ping 192.168.25.1
Using FM1@TGEC4 device
ARP Retry count exceeded; starting again
ping failed; host 192.168.25.1 is not alive
=> ping 192.168.25.1
Using FM1@TGEC4 device
FM1@TGEC4: Tx error, txbd->status = 0x8800
FM1@TGEC4: Tx buffer not ready, txbd->status = 0x8800
FM1@TGEC4: Tx buffer not ready, txbd->status = 0x8800
FM1@TGEC4: Tx buffer not ready, txbd->status = 0x8800
ARP Retry count exceeded; starting again
ping failed; host 192.168.25.1 is not alive
Again, the ping fails, but it apparently does try to transmit.
Based on these tests, it looks like the table does indeed have a typo and
ETH2 corresponds to FM1@TGEC4
ETH3 corresponds to FM1@TGEC3
Again, my question is: What could be causing the Tx buffer not ready errors?
I assume that this is some other configuration issue, but it is not clear to me.
I see there are some other posts with the same question but, unfortunately, I don't see a definitive resolution.
My T2080RDB device is configured as shipped. Other than environment variables, nothing has been changed.
Please check whether cs4315 PHY ucode has been programmed at 0xEFE00000 on NOR flash.
For details, please refer to T2080RDB quick start downloaded from QorIQ® T2080 Development Board | NXP .
Thanks,
Yiping
Yiping,
Thank you again for your response.
I displayed portions of memory using the U-Boot command md for both the PHY CS4315 at 0xEFE00000 and the alternate bank at 0xEBE00000:
=> md 0xefe00000
efe00000: 30783030 30612030 78303030 310a3078 0x000a 0x0001.0x
efe00010: 30303065 20307838 3030340a 30783031 000e 0x8004.0x01
efe00020: 64302030 78303030 380a3078 30316466 d0 0x0008.0x01df
efe00030: 20307830 3030340a 30783031 64662030 0x0004.0x01df 0
efe00040: 78303030 300a3078 30313931 20307830 x0000.0x0191 0x0
efe00050: 3034320a 30783031 39322030 78303030 042.0x0192 0x000
efe00060: 300a3078 30313930 20307839 3030300a 0.0x0190 0x9000.
efe00070: 30783031 39312030 78303034 320a3078 0x0191 0x0042.0x
efe00080: 30313932 20307830 3030300a 30783031 0192 0x0000.0x01
efe00090: 39302030 78393030 310a3078 30313931 90 0x9001.0x0191
efe000a0: 20307830 3034320a 30783031 39322030 0x0042.0x0192 0
efe000b0: 78303030 300a3078 30313930 20307839 x0000.0x0190 0x9
efe000c0: 3030320a 30783031 39312030 78303034 002.0x0191 0x004
efe000d0: 320a3078 30313932 20307830 3030300a 2.0x0192 0x0000.
efe000e0: 30783031 39302030 78393030 330a3078 0x0190 0x9003.0x
efe000f0: 30313931 20307830 3034320a 30783031 0191 0x0042.0x01
=> md 0xebe00000
ebe00000: 30783030 30612030 78303030 310a3078 0x000a 0x0001.0x
ebe00010: 30303065 20307838 3030340a 30783031 000e 0x8004.0x01
ebe00020: 64302030 78303030 380a3078 30316466 d0 0x0008.0x01df
ebe00030: 20307830 3030340a 30783031 64662030 0x0004.0x01df 0
ebe00040: 78303030 300a3078 30313931 20307830 x0000.0x0191 0x0
ebe00050: 3034320a 30783031 39322030 78303030 042.0x0192 0x000
ebe00060: 300a3078 30313930 20307839 3030300a 0.0x0190 0x9000.
ebe00070: 30783031 39312030 78303034 320a3078 0x0191 0x0042.0x
ebe00080: 30313932 20307830 3030300a 30783031 0192 0x0000.0x01
ebe00090: 39302030 78393030 310a3078 30313931 90 0x9001.0x0191
ebe000a0: 20307830 3034320a 30783031 39322030 0x0042.0x0192 0
ebe000b0: 78303030 300a3078 30313930 20307839 x0000.0x0190 0x9
ebe000c0: 3030320a 30783031 39312030 78303034 002.0x0191 0x004
ebe000d0: 320a3078 30313932 20307830 3030300a 2.0x0192 0x0000.
ebe000e0: 30783031 39302030 78393030 330a3078 0x0190 0x9003.0x
ebe000f0: 30313931 20307830 3034320a 30783031 0191 0x0042.0x01
=>
This does appear to match the contents of the file that you attached to your last post.
I have been trying to ping using ETH 2 and ETH 3. Here is some text from Section 4.2 0 of the T2080RDB Quick Start Guide:
Ethernet
I do eventually want to use ETH 0 and/or ETH 1, but right now I cannot because of the lack of an adapter from the SFP+ connector (used by ETH 0 and ETH 1) to regular RJ45.
This entry states that only ETH 0 and ETH 1 are connected to CS4315 PHY, while ETH 2 and ETH 3 are connected to AQ1202 PHY. In the Quick Start Guide, I don't see much info about the AQ1202 PHY.
I'm not sure what a good next step should be. What do you think?
Thanks,
Ron
Hello Ron,
Have you verified whether ETH 4 - ETH 5 can work normally on your target board?
Thanks,
Yiping
Yiping,
ETH4 gives these results with a cable plugged in to ETH4:
ethact | FM1@DTSEC3 |
ethprime | FM1@DTSEC3 |
=> ping 192.168.25.1
Using FM1@DTSEC3 device
host 192.168.25.1 is alive
This is not the normal ping response so I'm not sure exactly what it means.
In any case, when I try to ping the T2080RDB from another computer on the network, it is unreachable:
C:\Users\Hadrian>ping 192.168.25.130
Pinging 192.168.25.130 with 32 bytes of data:
Reply from 192.168.25.148: Destination host unreachable.
Reply from 192.168.25.148: Destination host unreachable.
Reply from 192.168.25.148: Destination host unreachable.
Reply from 192.168.25.148: Destination host unreachable.
Ping statistics for 192.168.25.130:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
If I unplug the network cable from ETH4, the ping from U-Boot fails as expected:
=> ping 192.168.25.1
FM1@DTSEC3 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Waiting for PHY realtime link...... TIMEOUT !
done
FM1@DTSEC3: No link.
FM1@DTSEC4 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Waiting for PHY realtime link...... TIMEOUT !
done
FM1@DTSEC4: No link.
Using FM1@TGEC1 device
ARP Retry count exceeded; starting again
ping failed; host 192.168.25.1 is not alive
However, the interesting thing in this case is that, at this point, the ethact environment variable has automatically been reset to FM1@TGEC1. Is that supposed to happen?
I get similar results with ETH5 and FM1@DTSEC4.
Thanks,
Ron
Hello Ron,
According to your description, ETH 4 - ETH 5 can work normally, u-boot doesn't reply to ping.
ETH2 and ETH3 are 10G Copper ports, please check whether you have used the cable correctly.
Thanks,
Yiping
Yiping,
Thank you for the information. I was not aware that U-Boot does not reply to ping.
I have a few questions that will help me.
Is this normal behavior?
eth4addr=00:00:00:00:00:04
eth5addr=00:00:00:00:00:05
These are still universally administered addresses. I am not familiar with mac addresses like these.
Compare to the mac addresses for ETH0 - ETH3
eth0addr=00:04:9F:05:DB:13
eth1addr=00:04:9F:05:DB:14
eth2addr=00:04:9F:05:DB:15
eth3addr=00:04:9F:05:DB:16
I appreciate your help.
Thanks,
Ron
Hello Ron,
u-boot commands, please refer to 2. U-Boot Commands - ManIsButAReed .
u-boot environment variable please refer to 4. U-Boot Environment Variables - ManIsButAReed
=>setenv ethact FM1@DTSEC3
=>saveenv
Please use cable cat-6e for 10G copper ports.
Thanks,
Yiping