I have a 0058 Verdin iMX8M-Plus. Here’s the tdx-info:
Software summary
------------------------------------------------------------
Bootloader: U-Boot
Kernel version: 5.15.129-6.4.0+git.67c3153d20ff #1-TorizonCore SMP PREEMPT Wed Sep 27 12:30:36 UTC 2023
Kernel command line: root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.1/torizon/ef4c7d153a661abaee3124825cb354ad214e6fb2fece45f99041e0b2e1be75e5/0
Distro name: NAME="TorizonCore"
Distro version: VERSION_ID=6.4.0-build.5
Hostname: verdin-imx8mp-15230201
------------------------------------------------------------
Hardware info
------------------------------------------------------------
HW model: Toradex Verdin iMX8M Plus WB on Yavia Board
Toradex version: 0058 V1.1B
Serial number: 15230201
Processor arch: aarch64
------------------------------------------------------------
Here’s the boot log:
U-Boot SPL 2022.04-6.4.0+git.dc27426aa417 (Jan 01 1970 - 00:00:00 +0000)
DDRINFO: start DRAM init
DDRINFO: DRAM rate 4000MTS
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
DDR configured as dual rank
SEC0: RNG instantiated
Normal Boot
WDT: Started watchdog@30280000 with servicing (60s timeout)
Trying to boot from BOOTROM
Boot Stage: Primary boot
Find img info 0x&4802e000, size 888
Download 941056, Total size 941904
NOTICE: BL31: v2.6(release):lf_v2.6-g3c1583ba0a
NOTICE: BL31: Built : 00:00:00, Jan 1 1970
U-Boot 2022.04-6.4.0+git.dc27426aa417 (Jan 01 1970 - 00:00:00 +0000)
CPU: i.MX8MP[8] rev1.1 1600 MHz (running at 1200 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 40C
Reset cause: POR
DRAM: 4 GiB
Core: 89 devices, 23 uclasses, devicetree: separate
WDT: Started watchdog@30280000 with servicing (60s timeout)
MMC: FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
Model: Toradex 0058 Verdin iMX8M Plus Quad 4GB WB IT V1.1B
Serial#: 15230201
Carrier: Toradex Yavia V1.0A, Serial# 35128035
SEC0: RNG instantiated
BuildInfo:
- ATF 3c1583b
flash target is MMC:2
Net: eth1: ethernet@30be0000, eth0: ethernet@30bf0000 [PRIME]
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc2(part 0) is current device
Scanning mmc 2:1...
Found U-Boot script /boot.scr
973 bytes read in 0 ms
## Executing script at 50280000
6672 bytes read in 1 ms (6.4 MiB/s)
89730 bytes read in 2 ms (42.8 MiB/s)
148 bytes read in 2 ms (72.3 KiB/s)
Applying Overlay: verdin-imx8mp_dsi-to-hdmi_overlay.dtbo
3037 bytes read in 2 ms (1.4 MiB/s)
Applying Overlay: verdin-imx8mp_spidev_overlay.dtbo
433 bytes read in 2 ms (210.9 KiB/s)
Applying Overlay: verdin-imx8mp_hmp_overlay.dtbo
2503 bytes read in 2 ms (1.2 MiB/s)
Applying Overlay: verdin-imx8mp_abc_overlay.dtbo
941 bytes read in 2 ms (459 KiB/s)
13426599 bytes read in 42 ms (304.9 MiB/s)
11574520 bytes read in 37 ms (298.3 MiB/s)
Uncompressing Kernel Image
## Flattened Device Tree blob at 50200000
Booting using the fdt blob at 0x50200000
Loading Device Tree to 00000000ffac1000, end 00000000ffaf9fff ... OK
Starting kernel ...
[ 1.057147] clk: failed to reparent hsio_axi to sys_pll2_500m: -16
[ 1.072947] clk: failed to reparent hsio_axi to sys_pll2_500m: -16
[ 1.083375] clk: failed to reparent hsio_axi to sys_pll2_500m: -16
[ 2.363418] regulator-dummy: Underflow of regulator enable count
[ 2.589536] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/bus@32c00000/mipi_dsi@32e60000 to encoder DSI-34: -517
[ 2.601247] imx_sec_dsim_drv 32e60000.mipi_dsi: Failed to attach bridge: 32e60000.mipi_dsi
[ 2.609522] imx_sec_dsim_drv 32e60000.mipi_dsi: failed to bind sec dsim bridge: -517
Starting version 250.5+
As you can see, I’m loading in the verdin-imx8mp_hmp_overlay for RemoteProc, and it does appear present in the running system.
The content of verdin-imx8mp_abc_overlay just removes some devices for use by the M7:
/dts-v1/;
/plugin/;
/ {
compatible = "toradex,verdin-imx8mp";
};
// Removing UART1
&uart1 {
status = "disabled";
};
// Removing UART2
&uart2 {
status = "disabled";
};
&iomuxc {
// Removing GPIO 1-4. I.e. they are normally in this list.
pinctrl-0 = <&pinctrl_gpio7>, <&pinctrl_gpio8>,
<&pinctrl_gpio_hog2>, <&pinctrl_gpio_hog3>, <&pinctrl_gpio_hog4>,
<&pinctrl_hdmi_hog>;
};
I follow the documented instructions to download the M7 SDK and it gives me SDK_2.15.000_MIMX8ML8xxxKZ. I get the appropriate ARM cross-compiling gcc toolchain downloaded.
I compile the release version of hello_world found in the NXP SDK with zero modifications to any files. I copy the resulting .elf to the target and launch it:
root@verdin-imx8mp-15230201:/var/rootdirs/home/torizon# echo -n /var/rootdirs/home/torizon > /sys/module/firmware_class/parameters/path
root@verdin-imx8mp-15230201:/var/rootdirs/home/torizon# echo hello_world.elf > /sys/class/remoteproc/remoteproc0/firmware
root@verdin-imx8mp-15230201:/var/rootdirs/home/torizon# echo start > /sys/class/remoteproc/remoteproc0/state
At this point the module is locked up hard and responds to nothing. There is no panic on the console and within 20-30 seconds it appears a hardware watchdog hits and the board reboots.
I’ve also done dmesg --follow
on the console while starting the M7 and it gets this far before locking up:
[ 1958.028581] remoteproc remotep
I can do this exact same procedure on an iMX8M-Mini and it all works as expected. Another engineer is experiencing the same thing on another iMX8M-Plus and having repeated the steps above in his own development environment.
We could use some help figuring out what we are doing wrong…
Ping @gustavo.tx and @alvaro.tx who have been very helpful with these sorts of issues for other folks!