[U-Boot] Odroid U3 - Upgrade to latest u-boot kernel load fails.

Anand Moon linux.amoon at gmail.com
Mon Mar 18 17:49:15 UTC 2019


Hi Krzysztof,

On Mon, 18 Mar 2019 at 18:20, Krzysztof Kozlowski <krzk at kernel.org> wrote:
>
> On Mon, 18 Mar 2019 at 13:32, Anand Moon <linux.amoon at gmail.com> wrote:
> >
> > Hi Krzysztof / Marek,
> >
> > After I update the latest u-boot on my Odroud U3+ it fails to load the
> > kernel it hangs.
> > I am using Archlinux on Odroid U3.
> >
> > U-Boot 2019.04-rc3-00131-g8303467e80d-dirty (Mar 18 2019 - 12:12:23 +0000)
> >
> > CPU:   Exynos4412 @ 1 GHz
> > Model: 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: 1, EXYNOS DWMMC: 0
> > Loading Environment from MMC... Card did not respond to voltage select!
> > *** Warning - No block device, using default environment
> >
> > Net:   No ethernet found.
> > Hit any key to stop autoboot:  0
> > switch to partitions #0, OK
> > mmc1 is current device
> > Scanning mmc 1:1...
> > Found U-Boot script /boot/boot.scr
> > 769 bytes read in 6 ms (125 KiB/s)
> > ## Executing script at 42000000
> > 6901856 bytes read in 253 ms (26 MiB/s)
> > 53078 bytes read in 19 ms (2.7 MiB/s)
> > 6590950 bytes read in 240 ms (26.2 MiB/s)
> > Kernel image @ 0x41000000 [ 0x000000 - 0x695060 ]
> > ## Flattened Device Tree blob at 40800000
> >    Booting using the fdt blob at 0x40800000
> >    Loading Ramdisk to 4f9b6000, end 4ffff1e6 ... OK
> >    Loading Device Tree to 4f9a6000, end 4f9b5f55 ... OK
> >
> > Starting kernel ...
>
> Can you attach your boot.init file (the source of boot.scr)?
>
> By the size of DTB you can see that different DTB is loaded. I assume
> you tried to boot the same kernel, then it could mean that boardname
> was used instead of board_name to choose DTB. Suspicious is that
> kernel size also differs... so maybe you booted something else? As
> usual debugging practice, reduce number of unknown factors. Do not
> change kernel and U-Boot at the same time.
>
> Also, you can try reverting commit e6b1467081d3 ("arm: exynos: Remove
> duplicated "boardname" env setting") and see if it helps. Or just try
> to bisect around changes coming from u-boot samsung tree. Try booting
> v2019.01 and paste the results as well.
>
> Best regards,
> Krzysztof
>

I have tested with pre-compiled image and the cross compiled kernel image
both failed to load the kernel.

No revert of the commit e6b1467081d3 did not help.

Yes it seem strange that that load address is changes some how in the u-boot env

printenv setting of the latest u-boot     U-Boot
2019.04-rc3-00131-g8303467e80d-dirty
[0] https://pastebin.com/1Hgc5xxC      (newu-boot.txt)

printenv setting for the old u-boot.      U-Boot 2018.01-1
[1] https://pastebin.com/wD6zK6eG    (oldu-boot.txt)

Attach is the boot.txt (boot.scr), also the u-boot env old and u-boot-env new

Best Regards
-Anand
-------------- next part --------------
# After modifying, run ./mkscr

# MAC address configuration
# setenv macaddr "00:1e:ee:61:7a:39"
setenv macaddr "3A:02:DD:67:B6:01"

part uuid ${devtype} ${devnum}:${bootpart} uuid
setenv bootargs "console=tty1 console=${console} root=PARTUUID=${uuid} rw rootwait smsc95xx.macaddr=${macaddr}"

if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage; then
  if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then
    if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then
      bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
    else
      bootz ${kernel_addr_r} - ${fdt_addr_r};
    fi;
  fi;
fi
-------------- next part --------------
U-Boot 2019.04-rc3-00131-g8303467e80d-dirty (Mar 18 2019 - 16:27:40 +0000)

CPU:   Exynos4412 @ 1 GHz
Model: 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: 1, EXYNOS DWMMC: 0
Loading Environment from MMC... Card did not respond to voltage select!
*** Warning - No block device, using default environment

Net:   No ethernet found.
Hit any key to stop autoboot:  0
Odroid #
Odroid #
Odroid #
Odroid #
Odroid # print env
## Error: "env" not defined
Odroid # printenv
arch=arm
autoboot=if test -e mmc 0 boot.scr; then; run boot_script; elif test -e mmc 0 Image.itb; then; run boot_fit;elif test -e mmc 0 zImage; then; run boot_zimg;elif test -e mmc 0 uImage; then; run boot_uimg;fi;
baudrate=115200
board=odroid
board_name=odroid
boardname=odroidu3
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_fit=setenv kernelname Image.itb;run loadkernel;run kernel_args;bootm ${kernel_addr_r}#${boardname}
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script=run loadbootscript;source ${scriptaddr}
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc1 mmc0
boot_uimg=setenv kernelname uImage;run check_dtb;run check_ramdisk;run loadkernel;run kernel_args;bootm ${kernel_addr_r} ${initrd_addr} ${fdt_addr};
boot_zimg=setenv kernelname zImage;run check_dtb;run check_ramdisk;run loadkernel;run kernel_args;bootz ${kernel_addr_r} ${initrd_addr} ${fdt_addr};
bootargs=Please use defined boot
bootcmd=run distro_bootcmd ; run autoboot
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootdelay=2
check_dtb=if run loaddtb; then setenv fdt_addr ${fdt_addr_r};else setenv fdt_addr;fi;
check_ramdisk=if run loadinitrd; then setenv initrd_addr ${ramdisk_addr_r};else setenv initrd_addr -;fi;
console=console=ttySAC1,115200n8
consoleoff=set console console=ram; save; reset
consoleon=set console console=ttySAC1,115200n8; save; reset
cpu=armv7
dfu_alt_info=Please reset the board
dfu_alt_system=uImage fat 0 1;zImage fat 0 1;Image.itb fat 0 1;uInitrd fat 0 1;exynos4412-odroidu3.dtb fat 0 1;exynos4412-odroidx2.dtb fat 0 1;boot part 0 1;platform part 0 2
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
fdt_addr_r=0x40800000
fdtcontroladdr=bae71f08
fdtfile=exynos4412-odroidu3.dtb
initrdname=uInitrd
kernel_addr_r=0x41000000
kernel_args=setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart} rootwait ${console} ${opts}
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} boot.scr
loaddtb=load mmc ${mmcbootdev}:${mmcbootpart} ${fdt_addr_r} ${fdtfile}
loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${ramdisk_addr_r} ${initrdname}
loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kernel_addr_r} ${kernelname}
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
mmcbootdev=0
mmcbootpart=1
mmcrootdev=0
mmcrootpart=2
ramdisk_addr_r=0x42000000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x42000000
soc=exynos
soc_id=4412
soc_rev=2.0
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
vendor=samsung

Environment size: 4673/16380 bytes

-------------- next part --------------
U-Boot 2018.01-1 (Feb 13 2018 - 02:19:55 +0000) Arch Linux ARM

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: 1, EXYNOS DWMMC: 0
Card did not respond to voltage select!
mmc_init: -95, time 10
*** Warning - No block device, using default environment

Net:   No ethernet found.
Hit any key to stop autoboot:  0
Odroid #
Odroid #
Odroid #
Odroid # printenv
arch=arm
autoboot=if test -e mmc 0 boot.scr; then; run boot_script; elif test -e mmc 0 Image.itb; then; run boot_fit;elif test -e mmc 0 zImage; then; run boot_zimg;elif test -e mmc 0 uImage; then; run boot_uimg;fi;
baudrate=115200
board=odroid
board_name=odroid
boardname=odroidu3
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
boot_fit=setenv kerneladdr 0x42000000;setenv kernelname Image.itb;run loadkernel;run kernel_args;bootm ${kerneladdr}#${boardname}
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script=run loadbootscript;source ${scriptaddr}
boot_script_dhcp=boot.scr.uimg
x
boot_scripts=boot.scr.uimg boot.scr
boot_targets=mmc1 mmc0
boot_uimg=setenv kerneladdr 0x40007FC0;setenv kernelname uImage;run check_dtb;run check_ramdisk;run loadkernel;run kernel_args;bootm ${kerneladdr} ${initrd_addr} ${fdt_addr};
boot_zimg=setenv kerneladdr 0x40007FC0;setenv kernelname zImage;run check_dtb;run check_ramdisk;run loadkernel;run kernel_args;bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};
bootargs=Please use defined boot
bootcmd=run distro_bootcmd
bootcmd_mmc0=setenv devnum 0; run mmc_boot
bootcmd_mmc1=setenv devnum 1; run mmc_boot
bootdelay=2
bootm_size=0x10000000
check_dtb=if run loaddtb; then setenv fdt_addr ${fdtaddr};else setenv fdt_addr;fi;
check_ramdisk=if run loadinitrd; then setenv initrd_addr ${initrdaddr};else setenv initrd_addr -;fi;
console=ttySAC1,115200n8
consoleoff=set console console=ram; save; reset
consoleon=set console console=ttySAC1,115200n8; save; reset
cpu=armv7
dfu_alt_info=Please reset the board
dfu_alt_system=uImage fat 0 1;zImage fat 0 1;Image.itb fat 0 1;uInitrd fat 0 1;exynos4412-odroidu3.dtb fat 0 1;exynos4412-odroidx2.dtb fat 0 1;boot part 0 1;platform part 0 2
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
fdt_addr_r=0x43000000
fdtaddr=40800000
x
fdtcontroladdr=bae3def0
fdtfile=exynos4412-odroidu3.dtb
initrdaddr=42000000
initrdname=uInitrd
kernel_addr_r=0x42000000
kernel_args=setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart} rootwait ${console} ${opts}
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} boot.scr
loaddtb=load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} ${fdtfile}
loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} ${initrdname}
loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} ${kernelname}
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
mmcbootdev=0
mmcbootpart=1
mmcrootdev=0
mmcrootpart=2
pxefile_addr_r=0x51000000
ramdisk_addr_r=0x43300000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x50000000
soc=exynos
soc_id=4412
soc_rev=2.0
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
vendor=samsung

Environment size: 4898/8188 bytes
Odroid #



More information about the U-Boot mailing list