August 14, 2018

U-Boot environment variables and commands

So, what do the messages from a working U-Boot look like? Here is what we get from an OrangePi with no network cable attached:
CPU:   Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi PC Plus
I2C:   ready
DRAM:  1 GiB
MMC:   SUNXI SD/MMC: 1, SUNXI SD/MMC: 0
In:    serial
Out:   serial
Err:   serial
Net:   phy interface0
eth0: ethernet@1c30000
Hit any key to stop autoboot:  0
Booting Kyu via dhcp
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
Here is what we get with a cable attached:
CPU:   Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi PC Plus
I2C:   ready
DRAM:  1 GiB
MMC:   SUNXI SD/MMC: 1, SUNXI SD/MMC: 0
In:    serial
Out:   serial
Err:   serial
Net:   phy interface0
eth0: ethernet@1c30000
Hit any key to stop autoboot:  0
Booting Kyu via dhcp
BOOTP broadcast 1
DHCP client bound to address 192.168.0.61 (3 ms)
Using ethernet@1c30000 device
TFTP from server 192.168.0.5; our IP address is 192.168.0.61
Filename 'orange.bin'.
Load address: 0x40000000
Loading: ############
	 950.2 KiB/s
done
Bytes transferred = 172256 (2a0e0 hex)
## Starting application at 0x40000000 ...
Probing for amount of ram
.....
Here is what I see with my non-working board:
Model: FriendlyElec boards based on Nexell s5p6818
Board: NanoPi Fire 3
DRAM:  987 MiB
Panel: N/A (-1)
MMC:   NEXELL DWMMC: 0, NEXELL DWMMC: 1
HDMI:  display.0, preset 0 (1280 *  720)
HDMI:  phy ready...
LCD:   [HDMI] dp.0.1 1280x720 32bpp FB:0x46000000
In:    serial
Out:   serial
Err:   serial

Net:   dwmac.c0060000
nanopi3# dhcp
dwmac.c0060000: No link.
The "No link." messages comes from the following code in the designware.c drive. In routine dw_adjust_link() which is called in _dw_eth_init().
if (!phydev->link) {
	printf("%s: No link.\n", phydev->dev->name);
	return;
}
The code in _dw_eth_init() looks like:
	/* Start up the PHY */
        ret = phy_startup(priv->phydev);
        if (ret) {
                printf("Could not initialize PHY %s\n",
                       priv->phydev->dev->name);
                return ret;
        }

        dw_adjust_link(mac_p, priv->phydev);

        if (!priv->phydev->link)
                return -EIO;
And what about that "Net: dwmac.c0060000" message? Why don't we see anything like "Net: phy interface0" ?


Have any comments? Questions? Drop me a line!

Tom's electronics pages / tom@mmto.org