VIM3L: booloader fail: DDR training error

Yes, I figured it out from the image + schematics, but the wiki is still pretty unclear.
Also, even with that short, it still doesn’t enter USB mode in the MASKROM.

I’m not entirely sure how I finally achieved a USB connection when testing mainline u-boot things on a VIM3 last week (and saw exactly the same issue when I built u-boot with the wrong FIP binaries) but I think I achieved this by holding the reset button, powering on the board, then releasing the reset button. I also find the white PSU that came with VIM3/VIM3L harder to connect to a board in a case than the older PSU from a VIM1/VIM2 (the connector isn’t as long) so I swapped PSU and cables. I’m not sure that had any impact tho! … in the end I randomly and repetedly pressed buttons and applied power until I got the “something connected” sound in a Win10 VM and I was able to reflash using the Amlogic burning tool.

yes write before about this

It seems to be kind of random. If I do multiple hard reboots, it will occasionally boot to u-boot and then into the rescue kernel

if krescue booted ones plz run next command from terminal

mmc_erase fast - this command remove all bootloaders from emmc

after what u can easy boot from sd

Now that I realized emmc is not completely erased, I was hoping to do that, but now it’s not really random anymore. It never tries to boots from SD.

Sorry to necro an old thread, but I’ve been trying to figure out all the intricacies of u-boot on VIM3L so that I can get my system configured to boot Armbian off of EMMC, and I believe I may be experiencing this problem.

I ordered a pair of VIM3L very early, so they are likely from this early batch, and I am seeing a DDR training failure in u-boot when I try to boot off of EMMC using the u-boot from krescue. Krescue boots fine, but when I select the option to install u-boot and try to boot off of EMMC it fails.

As another point of reference, I can install and boot into Android from EMMC, but then I can’t get the board to boot off of sdcard to install Armbian using that u-boot.

What is the easiest way to get a u-boot that is proper for this board?

Edit: One more possible issue when booting: It looks like it reads a /boot.cmd off of the EMMC (mmc2), and then says “Card did not respond to voltage select!”. Then it scans for USB devices and falls back to trying to net boot.

Edit2: When booting from sdcard it gets the same DDR training error, but then reads the /boot.cmd from the sdcard and proceeds to boot. I’m not sure if that’s good or bad. :slightly_smiling_face:

if krescue can start !
plz try to install for example coreelec to emmc this installation which have already propef uboot for next load other OS from SD / USB

GOODLUCK plz write me about any results !

I was able to install and boot COREELEC and then boot back into Armbian by inserting the sdcard. I then ran the install-aml.sh that copies Armbian to the EMMC, but it still fails to boot.

The u-boot that was installed does appear to have the correct DDR parameters. This appears to be where it falls apart:

[KM]Error:f[key_manage_query_size]L515:key[deviceid] not programed yet
gpio: pin GPIOAO_7 (gpio 7) value is 1
saradc: 0x28a, hw_ver: 0x32 (VIM3.V12)
Product checking: pass! Hardware version: VIM3.V12
reboot_mode=cold_boot
** Invalid partition 5 **
normal power on
boot wol: disable
port mode is pcie
Hit Enter or space or Ctrl+C key to stop autoboot -- :  0
pll tsensor avg: 0x2021, u_efuse: 0x5c
temp1: 41
ddr tsensor avg: 0x200c, u_efuse: 0xb6
temp2: 42
device cool done
cfgload: start ...
cfgload: reading /boot.ini from mmc 0:1 ...
card out
** Bad device mmc 0 **
cfgload: no /boot.ini or empty file on mmc 0:1
cfgload: reading /boot.ini from mmc 1:1 ...
reading /boot.ini
** Unable to read file /boot.ini **
cfgload: no /boot.ini or empty file on mmc 1:1
cfgload: reading /boot/boot.ini from mmc 1:5 ...
** Invalid partition 5 **
cfgload: no /boot/boot.ini or empty file on mmc 1:5
cfgload: failed to read boot.ini on all partitions!
card out
** Bad device mmc 0 **
reading s905_autoscript
** Unable to read file s905_autoscript **
** Invalid partition 5 **
** Invalid partition 5 **
** Invalid partition 5 **
** Invalid partition 5 **
Bad Linux ARM64 Image magic!
InUsbBurn
noSof
sof timeout, reset usb phy tuning
card out
[MSG]mmcinfo failed!
card out
(Re)start USB...
USB0:   USB3.0 XHCI init start
Register 3000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus 0 for devices... 5 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
** Bad device usb 0 **
** Bad device usb 0 **
Start read misc partition datas!
Cannot find dev.
amlmmc cmd <NULL> failed

store - STORE sub-system

Usage:
store init flag
store read name addr off|partition size
    read 'size' bytes starting at offset 'off'
    to/from memory address 'addr', skipping bad blocks.
store write name addr off|partition size
    write 'size' bytes starting at offset 'off'
    to/from memory address 'addr', skipping bad blocks.
store rom_write add off size.
        write uboot to the boot device
store erase boot/data:
        erase the area which is uboot or data
store erase partition <partition_name>:
        erase the area which partition in u-boot
store erase dtb
store erase key
store disprotect key
store rom_protect on/off
store scrub off|partition size
        scrub the area from offset and size
store dtb iread/read/write addr <size>
        read/write dtb, size is optional
store key read/write addr <size>
        read/write key, size is optional
store ddr_parameter read/write addr <size>
        read/write ddr parameter, size is optional
store mbr addr
   update mbr/partition table by dtb

[burnup]Err:store_read_ops,L84:cmd failed, ret=1, [store  read misc 0x73e48b80  0x0  0x820]
failed to store read misc.
info->magic =
info->version_major = 0
info->version_minor = 0
info->slots[0].priority = 0
info->slots[0].tries_remaining = 0
info->slots[0].successful_boot = 0
info->slots[1].priority = 0
info->slots[1].tries_remaining = 0
info->slots[1].successful_boot = 0
info->crc32 = 0
Magic  is incorrect.
boot-info is invalid. Resetting.
save boot-info
info->magic =
info->version_major = 1
info->version_minor = 0
info->slots[0].priority = 15
info->slots[0].tries_remaining = 7
info->slots[0].successful_boot = 0
info->slots[1].priority = 14
info->slots[1].tries_remaining = 7
info->slots[1].successful_boot = 0
info->crc32 = -1075449479
Cannot find dev.
amlmmc cmd <NULL> failed

store - STORE sub-system

Usage:
store init flag
store read name addr off|partition size
    read 'size' bytes starting at offset 'off'
    to/from memory address 'addr', skipping bad blocks.
store write name addr off|partition size
    write 'size' bytes starting at offset 'off'
    to/from memory address 'addr', skipping bad blocks.
store rom_write add off size.
        write uboot to the boot device
store erase boot/data:
        erase the area which is uboot or data
store erase partition <partition_name>:
        erase the area which partition in u-boot
store erase dtb
store erase key
store disprotect key
store rom_protect on/off
store scrub off|partition size
        scrub the area from offset and size
store dtb iread/read/write addr <size>
        read/write dtb, size is optional
store key read/write addr <size>
        read/write key, size is optional
store ddr_parameter read/write addr <size>
        read/write ddr parameter, size is optional
store mbr addr
   update mbr/partition table by dtb

[burnup]Err:store_write_ops,L148:cmd [store  write misc 0x73e48b80  0x0  0x820] failed active slot = 0
active_slot: normal
Cannot find dev.
amlmmc cmd <NULL> failed

store - STORE sub-system

Usage:
store init flag
store read name addr off|partition size
    read 'size' bytes starting at offset 'off'
    to/from memory address 'addr', skipping bad blocks.
store write name addr off|partition size
    write 'size' bytes starting at offset 'off'
    to/from memory address 'addr', skipping bad blocks.
store rom_write add off size.
        write uboot to the boot device
store erase boot/data:
        erase the area which is uboot or data
store erase partition <partition_name>:
        erase the area which partition in u-boot
store erase dtb
store erase key
store disprotect key
store rom_protect on/off
store scrub off|partition size
        scrub the area from offset and size
store dtb iread/read/write addr <size>
        read/write dtb, size is optional
store key read/write addr <size>
        read/write key, size is optional
store ddr_parameter read/write addr <size>
        read/write ddr parameter, size is optional
store mbr addr
   update mbr/partition table by dtb

[burnup]Err:store_read_ops,L84:cmd failed, ret=1, [store  read recovery 0x1080000  0x0  0x100000]
Err imgread(L328):Fail to read 0x100000B from part[recovery] at offset 0
kvim3l#

It’s a bit off topic for this thread, but I would love to know if you have any ideas on what might be broken. It looks to me like it’s using the wrong boot configuration files.

The AMLG12.arm-xxxx-khadas-vim3l image from https://test.libreelec.tv/ might be a better starting point for you. LE is using mainline u-boot so you have a more generic u-boot environment that will support extlinux boot. It’s closer to what Armbian is expecting.

1 Like

I was able to install and boot COREELEC and then boot back into Armbian by inserting the sdcard. I then ran the install-aml.sh that copies Armbian to the EMMC, but it still fails to boot.

OK! if coreelec can start u dont have any problem with board

  1. just write mainline uboot to emmc , and try armbian installation again - must works, u can write main-uboot by any way
    for example by same krescue

The u-boot that was installed does appear to have the correct DDR parameters. This appears to be where it falls apart:

OK! nice

PS: write me about result