[U-Boot] Ethernet not detecting on Odroid u3

Siarhei Siamashka siarhei.siamashka at gmail.com
Tue Mar 14 23:22:21 UTC 2017


On Tue, 14 Mar 2017 20:06:42 +0530
Anand Moon <linux.amoon at gmail.com> wrote:

> On 14 March 2017 at 15:24, Siarhei Siamashka <siarhei.siamashka at gmail.com> wrote:
> > You can just clone my git branch:
> >
> >    git clone -b 20170306-unbreak-odroid https://github.com/ssvb/u-boot.git
> >
> > Then compile it and try to boot on your ODROID-U3 board. Check if it
> > boots and if the Ethernet is working properly. And finally report
> > the results. If it works, then I will send cleaned up versions of
> > these patches to the U-Boot mailing list.
> >  
> [snip]
> 
> I dont feel the hack works perfectly.

Thanks for trying it.

Yes, these patches were not supposed to be perfect yet. But at least
it's good that the ODROID-U3 board model gets detected successfully
and the Ethernet gets initialized successfully at least on the first
run.

> I compiled your u-boot tree and could not load the kernel.

Well, at least it is not a regression introduced by my patches, right?
 
> [0] git clone -b 20170306-unbreak-odroid https://github.com/ssvb/u-boot.git
> 
> ------------------------------------------------------------------------------------
> U-Boot 2017.03-rc3-00006-g3dd6fdb (Mar 14 2017 - 13:54:08 +0000)
> 
> CPU:   Exynos4412 @ 1 GHz
> Model: Odroid based on Exynos4412
> Board: Odroid based on Exynos4412
> Type:  u3
> DRAM:  2 GiB
> LDO20 at VDDQ_EMMC_1.8V: set 1800000 uV; enabling
> LDO22 at VDDQ_EMMC_2.8V: set 2800000 uV; enabling
> LDO21 at TFLASH_2.8V: set 2800000 uV; enabling
> MMC:   SAMSUNG SDHCI: 0, EXYNOS DWMMC: 1
> *** Warning - bad CRC, using default environment
> 
> Net:   No ethernet found.
> Hit any key to stop autoboot:  0
> reading boot.scr
> 3174 bytes read in 49 ms (62.5 KiB/s)
> ## Executing script at 42000000
> Found kernel image: zImage
> reading exynos4412-odroidu3.dtb
> 54561 bytes read in 23 ms (2.3 MiB/s)
> Found ramdisk image.
> reading uInitrd
> 9873974 bytes read in 679 ms (13.9 MiB/s)
> reading zImage
> 6552912 bytes read in 460 ms (13.6 MiB/s)
> Kernel image @ 0x40007fc0 [ 0x000000 - 0x63fd50 ]
> ## Loading init Ramdisk from Legacy Image at 42000000 ...
>    Image Name:   uInitrdu3
>    Image Type:   ARM Linux RAMDisk Image (gzip compressed)
>    Data Size:    9873910 Bytes = 9.4 MiB
>    Load Address: 42000000
>    Entry Point:  42000000
>    Verifying Checksum ... OK
> ## Flattened Device Tree blob at 40800000
>    Booting using the fdt blob at 0x40800000
>    Loading Ramdisk to ba4d6000, end bae409f6 ... OK
>    Loading Device Tree to ba4c5000, end ba4d5520 ... OK
> 
> Starting kernel ...
> ------------------------------------------------------------------------------------
> After that I had to remove my zImage and exynos4412-odroidu3.dtb to
> enter into u-boot prompt to manually test.

Have you just dropped the dtb file and zImage on the first partition
of the SD card?

Yes, I can confirm that without having a boot script there and using
scripts from the default U-Boot environment it does get stuck in
exactly this way.

You can create something like the following "boot.cmd" file (it's just
a chopped up version of something ODROID related found on the Internet):

########################
setenv zimg_addr "0x40008000"
setenv fdt_addr "0x41f00000"
setenv fdt_high "0xffffffff"

setenv zimg_file "zImage"
setenv uloadcmd "load mmc 0:1 ${zimg_addr} ${zimg_file}; fatload mmc 0:1 ${fdt_addr} ${fdtfile}"
setenv bootcmd "run uloadcmd; fdt addr ${fdt_addr}; fdt resize; bootz ${zimg_addr} - ${fdt_addr}"
boot
########################

Then create a boot script from this file using the following command:
    "mkimage -C none -A arm -T script -d boot.cmd boot.scr"

Then the "boot.scr" file should be copied to the SD card. The linux
kernel should at least start booting. But you will also need to
provide a kernel cmdline with the location of your rootfs.

I think that we should review the default boot scripts in the U-Boot
environment for Exynos based ODROID bords. As you can see, the current
behaviour is very hostile to the users.

> ------------------------------------------------------------------------------------
> U-Boot 2017.03-rc3-00006-g3dd6fdb (Mar 14 2017 - 13:54:08 +0000)
> 
> CPU:   Exynos4412 @ 1 GHz
> Model: Odroid based on Exynos4412
> Board: Odroid based on Exynos4412
> Type:  u3
> DRAM:  2 GiB
> LDO20 at VDDQ_EMMC_1.8V: set 1800000 uV; enabling
> LDO22 at VDDQ_EMMC_2.8V: set 2800000 uV; enabling
> LDO21 at TFLASH_2.8V: set 2800000 uV; enabling
> MMC:   SAMSUNG SDHCI: 0, EXYNOS DWMMC: 1
> *** Warning - bad CRC, using default environment
> 
> Net:   No ethernet found.
> Hit any key to stop autoboot:  0
> reading boot.scr
> 3174 bytes read in 26 ms (119.1 KiB/s)
> ## Executing script at 42000000
> Odroid #
> Odroid #
> Odroid # ▒
> 
> U-Boot 2017.03-rc3-00006-g3dd6fdb (Mar 14 2017 - 13:54:08 +0000)
> 
> CPU:   Exynos4412 @ 1 GHz
> Model: Odroid based on Exynos4412
> Board: Odroid based on Exynos4412
> Type:  u3
> DRAM:  2 GiB
> LDO20 at VDDQ_EMMC_1.8V: set 1800000 uV; enabling
> LDO22 at VDDQ_EMMC_2.8V: set 2800000 uV; enabling
> LDO21 at TFLASH_2.8V: set 2800000 uV; enabling
> MMC:   SAMSUNG SDHCI: 0, EXYNOS DWMMC: 1
> *** Warning - bad CRC, using default environment
> 
> Net:   No ethernet found.
> Hit any key to stop autoboot:  0
> reading boot.scr
> 3174 bytes read in 49 ms (62.5 KiB/s)
> ## Executing script at 42000000
> Odroid # setenv usbethaddr 02:DE:AD:BE:EF:FF
> Odroid # usb start
> starting USB...
> USB0:   ERROR: Regulator BUCK8 value setting error: -22
> at board/samsung/odroid/odroid.c:508/board_usb_init()
> USB EHCI 1.00
> scanning bus 0 for devices... 3 USB Device(s) found
>        scanning usb for storage devices... 0 Storage Device(s) found
>        scanning usb for ethernet devices... 1 Ethernet Device(s) found
> Odroid #
> Odroid #
> Odroid # reset
> resetting ...
> 
> 
> U-Boot 2017.03-rc3-00006-g3dd6fdb (Mar 14 2017 - 13:54:08 +0000)
> 
> CPU:   Exynos4412 @ 1 GHz
> Model: Odroid based on Exynos4412
> Board: Odroid based on Exynos4412
> Type:  u3
> DRAM:  2 GiB
> LDO20 at VDDQ_EMMC_1.8V: set 1800000 uV; enabling
> LDO22 at VDDQ_EMMC_2.8V: set 2800000 uV; enabling
> LDO21 at TFLASH_2.8V: set 2800000 uV; enabling
> MMC:   SAMSUNG SDHCI: 0, EXYNOS DWMMC: 1
> *** Warning - bad CRC, using default environment
> 
> Net:   No ethernet found.
> Hit any key to stop autoboot:  0
> reading boot.scr
> 3174 bytes read in 27 ms (114.3 KiB/s)
> ## Executing script at 42000000
> Odroid #
> Odroid #
> Odroid # setenv usbethaddr 02:DE:AD:BE:EF:FF
> Odroid # usb start
> starting USB...
> USB0:   ERROR: Regulator BUCK8 value setting error: -22
> at board/samsung/odroid/odroid.c:508/board_usb_init()
> USB EHCI 1.00
> scanning bus 0 for devices... 2 USB Device(s) found
>        scanning usb for storage devices... 0 Storage Device(s) found
>        scanning usb for ethernet devices... 0 Ethernet Device(s) found
> Odroid #
> 
> ------
> Note: on cold boot it seem to detect ethernet but not on warm reset
> 
> Possible solution is reset of HUB via gpio pins, just like the kernel example.
> 
> [1] https://lkml.org/lkml/2017/1/7/32
> 
> Looking into some other solution for this approach.

Thanks. I'll try to debug the Ethernet initialization after warm reset.

-- 
Best regards,
Siarhei Siamashka


More information about the U-Boot mailing list