Variscite VAR-SOM-MX8M-MINI : NXP i.MX 8M Mini

Hi Drew

Thank you for the quick reply. Its really appreciated :slight_smile:

I manged to build the image, though I didn’t have to make any changes to u-boot-imx.bbappend nor to u-boot-variscite.bbappend. I just enabled “mender-uboot” feature in the local.conf file (MENDER_FEATURES_ENABLE_append = " mender-image-sd mender-uboot" ). For other Linux distributions (Sumo) I did not have to add this, and the integration was successful, so its a bit strange I had to do it this time.

Nevertheless, even though the image was built successfully, it is not booting. Serial boot messages show this error message: “Bad Linux ARM64 Image magic!”

Here are the full boot messages:

U-Boot SPL 2019.04-lf-5.4.y_v2019.04_var01+gbcdb05a53e (Apr 28 2021 - 08:00:24 +0000)
Normal Boot
Trying to boot from MMC1

U-Boot 2019.04-lf-5.4.y_v2019.04_var01+gbcdb05a53e (Apr 28 2021 - 08:00:24 +0000)

CPU: Freescale i.MX8MMQ rev1.0 1800 MHz (running at 1200 MHz)
CPU: Commercial temperature grade (0C to 95C) at 45C
Reset cause: POR
Model: Variscite VAR-SOM-MX8M-MINI
DRAM: 2 GiB
MMC: FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC… OK
In: serial
Out: serial
Err: serial

BuildInfo:

  • ATF 7b3389d
  • U-Boot 2019.04-lf-5.4.y_v2019.04_var01+gbcdb05a53e

Part number: VSM-MX8MM-101
Assembly: AS2002150192
Production date: 2020 Apr 06
Serial Number: f8:dc:7a:3e:81:ba
flash target is MMC:1
Net: eth0: ethernet@30be0000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
Bad Linux ARM64 Image magic!

This is the boot environment:

u-boot=> printenv
altbootcmd=run mender_altbootcmd; run bootcmd
arch=arm
baudrate=115200
board=imx8mm_var_dart
board_name=VAR-SOM-MX8M-MINI
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/bootaa64.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_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc2 mmc1
bootargs=root=/dev/mmcblk1p1
bootcmd=run mender_setup; setenv bootargs root=${mender_kernel_root} ${bootargs}; if test “${fdt_addr_r}” != “”; then load ${mender_uboot_root} ${fdt_addr_r} /boot/${mender_dtb_name}; fi; load ${mender_uboot_root} ${kernel_addr_r} /boot/${mender_kernel_name}; ${mender_boot_kernel_type} ${kernel_addr_r} - ${fdt_addr_r}; run mender_try_to_recover
bootcmd_mfg=run mfgtool_args;if iminfo ${initrd_addr}; then if test ${tee} = yes; then bootm ${tee_addr} ${initrd_addr} ${fdt_addr}; else booti ${loadaddr} ${initrd_addr} ${fdt_addr}; fi; else echo “Run fastboot …”; fastboot 0; fi;
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_mmc2=devnum=2; run mmc_boot
bootcount=1
bootdelay=1
bootdir=/boot
bootlimit=1
cma_size=cma=640M@1376M
console=ttymxc3,115200 earlycon=ec_imx6q,0x30a60000,115200
cpu=armv8
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
emmc_dev=1
ethaddr=f8:dc:7a:3e:81:ba
ethprime=FEC
fastboot_dev=mmc1
fdt_addr_r=0x43000000
fdt_high=0xffffffffffffffff
fdtcontroladdr=b6d2d7c0
fdtfile=imx8mm-var-som.dtb
findfdt=if test $fdtfile = undefined; then if test $board_name = VAR-SOM-MX8M-MINI; then if test $som_rev = som_rev10; then setenv fdtfile imx8mm-var-som-rev10.dtb; else setenv fdtfile imx8mm-var-som.dtb; fi;else setenv fdtfile imx8mm-var-dart.dtb;fi; fi;
image=Image.gz
img_addr=0x42000000
initrd_addr=0x43800000
initrd_high=0xffffffffffffffff
kboot=booti
kernel_addr_r=0x40480000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x40480000
loadm4bin=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootdir}/${m4_bin}; cp.b ${loadaddr} ${m4_addr} ${filesize}
m4_addr=0x7e0000
m4_bin=hello_world.bin
mender_altbootcmd=if test ${mender_boot_part} = 1; then setenv mender_boot_part 2; setenv mender_boot_part_hex 2; else setenv mender_boot_part 1; setenv mender_boot_part_hex 1; fi; setenv upgrade_available 0; saveenv; run mender_setup
mender_boot_kernel_type=booti
mender_boot_part=1
mender_boot_part_hex=1
mender_boot_part_name=/dev/mmcblk1p1
mender_check_saveenv_canary=1
mender_kernel_name=Image
mender_kernel_root=/dev/mmcblk1p1
mender_kernel_root_name=/dev/mmcblk1p1
mender_pre_setup_commands= if test “${ramsize_check}” != “”; then run ramsize_check; fi; if test “${mmcargs}” != “”; then run mmcargs; fi; if test “${videoargs}” != “”; then run videoargs; fi; if test “${optargs}” != “”; then run optargs; fi; run findfdt; setenv mender_dtb_name ${fdt_file}; setenv kernel_addr_r ${loadaddr};
mender_saveenv_canary=1
mender_setup=if test “${mender_saveenv_canary}” != “1”; then setenv mender_saveenv_canary 1; saveenv; fi; if test “${mender_pre_setup_commands}” != “”; then run mender_pre_setup_commands; fi; if test “${mender_systemd_machine_id}” != “”; then setenv bootargs “systemd.machine_id=${mender_systemd_machine_id} ${bootargs}”; fi; setenv mender_kernel_root /dev/mmcblk1p${mender_boot_part}; if test ${mender_boot_part} = 1; then setenv mender_boot_part_name /dev/mmcblk1p1; else setenv mender_boot_part_name /dev/mmcblk1p2; fi; setenv mender_kernel_root_name ${mender_boot_part_name}; setenv mender_uboot_root mmc 0:${mender_boot_part_hex}; setenv mender_uboot_root_name ${mender_boot_part_name}; setenv expand_bootargs “setenv bootargs \”${bootargs}\“”; run expand_bootargs; setenv expand_bootargs; if test “${mender_post_setup_commands}” != “”; then run mender_post_setup_commands; fi
mender_try_to_recover=if test ${upgrade_available} = 1; then reset; fi
mender_uboot_boot=mmc 0:1
mender_uboot_dev=0
mender_uboot_if=mmc
mender_uboot_root=mmc 0:1
mender_uboot_root_name=/dev/mmcblk1p1
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc clk_ignore_unused
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
mmcdev=0
mmcpart=1
ramsize_check=if test $sdram_size -le 512; then setenv cma_size cma=320M; else setenv cma_size cma=640M@1376M; fi;
runm4bin=if test ${m4_addr} = 0x7e0000; then echo Booting M4 from TCM; else echo Booting M4 from DRAM; dcache flush; fi; bootaux ${m4_addr};
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}; 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/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.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
script=boot.scr
sd_dev=0
sdram_size=2048
serial#=220c1a09dab4b749
soc=imx8m
soc_type=imx8mm
som_rev=som_rev11
stderr=serial
stdin=serial
stdout=serial
upgrade_available=0
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
use_m4=no
vendor=variscite

Environment size: 6623/131067 bytes

After going though posts from people facing similar error:

https://hub.mender.io/t/issue-with-variscite-var-som-mx8m-nano/2840/11
https://hub.mender.io/t/variscite-var-dart-imx8mm-problem/2811

I made a couple of changes to the local.conf according to those posts, but I am still getting the same error message.

local.conf:

INHERIT += “rm_work”

MENDER_ARTIFACT_NAME = “release-2”
INHERIT += “mender-full”
DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager = “systemd”
DISTRO_FEATURES_BACKFILL_CONSIDERED = “sysvinit”
VIRTUAL-RUNTIME_initscripts = “”

MENDER_STORAGE_TOTAL_SIZE_MB_imx8mm-var-dart = “13312”
#MENDER_IMAGE_BOOTLOADER_FILE_imx8mm-var-dart = “imx-boot-imx8mm-var-dart-sd.bin”
MENDER_IMAGE_BOOTLOADER_FILE_imx8mm-var-dart = “imx-boot”
MENDER_IMAGE_BOOTLOADER_BOOTSECTOR_OFFSET_imx8mm-var-dart = “66”

IMAGE_BOOT_FILES_imx8mm-var-dart = “”
MENDER_BOOT_PART_SIZE_MB_imx8mm-var-dart = “0”

IMAGE_FSTYPES_remove = “tar.gz wic.gz wic.bmap mender.bmap sdimg.bmap sdcard.gz wic ext4”

MENDER_FEATURES_ENABLE_append = " mender-image-sd mender-uboot"
MENDER_FEATURES_DISABLE_append = " mender-image-uefi mender-grub"

MENDER_STORAGE_DEVICE_imx8mm-var-dart = “/dev/mmcblk1”
MENDER_UBOOT_STORAGE_DEVICE_imx8mm-var-dart= “0”
UBOOT_CONFIG_imx8mm-var-dart = “sd”

MACHINE_ESSENTIAL_EXTRA_RDEPENDS = “kernel-image kernel-devicetree”
KERNEL_IMAGETYPE_mender-uboot = “Image”

IMAGE_POSTPROCESS_COMMAND_remove = “do_qbsp_image;”

MACHINE_EXTRA_RDEPENDS = “u-boot-fw-utils”
IMAGE_BOOT_FILES = “u-boot.bin”
#MENDER_BOOT_PART_SIZE_MB_mender-uboot = “16”
#PREFERRED_PROVIDER_u-boot-fw-util= “u-boot-fw-utils-mender-auto-provided”

Do have any suggestions to how I can fix this problem? Thank you