Hello everyone,
I have a Colibri iMX7 1GB eMMC and a Iris Carrier Board. I’m trying to run some code from an old project that contain a Cortex-M4 firmware and some Linux applications.
After following this tutorial I was able to create a linux image, load it on my board and boot successfully. However, after loading the M4 firmware my linux kernel got stuck after the “Starting Kernel …” message.
Because I use UART2 and SPI I created a custom device tree to disable those peripherals:
/dts-v1/;
#include "imx7d-colibri-emmc.dtsi"
#include "imx7-colibri-eval-v3.dtsi"
/ {
model = "Toradex Colibri iMX7D 1GB on Colibri Evaluation Board V3";
compatible = "toradex,colibri_imx7d_emmc-eval", "toradex,colibri_imx7d_emmc", \
"fsl,imx7d";
};
/delete-node/&bl;
&ecspi3 {
status = "disabled";
};
&usbotg2 {
vbus-supply = <®_usbh_vbus>;
status = "okay";
};
&uart2 {
status = "disabled";
};
Next, to add it to my build, I added the .dts
file to the meta-toradex-nxp/recipes-kernel/linux/linux-toradex
directory and the file linux-toradex_%.bbappend
to meta-toradex-nxp/recipes-kernel/linux
.
linux-toradex_%.bbappend
file:
SRC_URI += "file://mobitec_iris_imx7.dts;subdir=git/arch/${ARCH}/boot/dts"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PACKAGE_ARCH = "${MACHINE_ARCH}"
Finally, I edited /meta-toradex-nxp/conf/machine/colibri-imx7-emmc.conf
to alter KERNEL_DEVICETREE
:
KERNEL_DEVICETREE += "imx7d-colibri-emmc-eval-v3.dtb imx7d-colibri-emmc-aster.dtb mobitec_iris_imx7.dtb"
The Yocto project is something new for me and I know that the right way of doing all this is to create a new layer… however this process isn’t clear for me yet…
Well… After all of this I was able to compile, load and boot the image successfully. I was also able to verify that my device tree was compiled and it’s .dtb
file was present at the boot partition.
Unfortunately, after loading the M4 firmware, the kernel still gets stuck in the same place…
Any idea of what could be causing this problem?
Best,
Mauricio