How to compile a kernel with a Custom Device Tree on Torizon BSP Verdin 1.0B with Easy Installer Reference Image for BSP 5.1?

Hi Toradex,

I have created a custom carrier board using Gumstix for the Verdin imx8m mini. The carrier board came with a custom DTS file. I sought to compile the DTS into a DTB to integrate with a supplied reference image from Build U-Boot and Linux Kernel from Source Code | Toradex Developer Center.

Following the link above, I encountered an obstacle in finding a reference Easy Installer image for BSP 5.1 that would be compatible with my Verdin imx8mm 1.0B module. I additionally had to edit the makefile in the freescale folder of the kernel source in order to have the top level Makefile create my custom dtb.

Specifically, I performed the following steps:

First, I cloned the linux-toradex branch for BSP version 5.1 (that is supposed to be compatible with the Verdin 1.0b)

$ mkdir -p ~/workdir
$ cd ~/workdir
$ git clone -b toradex_5.4-2.1.x-imx git://git.toradex.com/linux-toradex.git

Second, I configured the kernel with default configuration for BSP 5.1

$ cd ~/workdir/linux-toradex
$ make defconfig

Third, I did some custom work to enable compilation of my custom DTS here before following the standard kernel compilation procedures. I began by entering the freescale directory and edited the Makefile to include my custom carrier board’s dts (that had appropriate verdin dtsi includes):

$ cd ~/workdir/linux-toradex/arch/arm64/boot/dts/freescale
$ emacs Makefile

Specifically, inside the Makefile in the freescale directory, I added my custom device tree name underneath the existing verdin ones so I would be able to build my dtb.

dtb-$(CONFIG_ARCH_MXC) += imx8mm-evk.dtb imx8mm-evk-rpmsg.dtb imx8mm-evk-rm67191.dtb \
			  imx8mm-ddr4-evk.dtb imx8mm-evk-root.dtb imx8mm-evk-inmate.dtb \
			  imx8mm-ddr4-evk-rm67191.dtb imx8mm-evk-revb.dtb imx8mm-ddr4-evk-revb.dtb \
			  imx8mm-ddr4-evk-revb-rm67191.dtb imx8mm-ddr3l-val.dtb \
			  imx8mm-evk-usd-wifi.dtb \
			  imx8mm-verdin-nonwifi-dahlia.dtb \
			  imx8mm-verdin-nonwifi-dev.dtb \
			  imx8mm-verdin-nonwifi-v1.1-dahlia.dtb \
			  imx8mm-verdin-nonwifi-v1.1-dev.dtb \
			  imx8mm-verdin-wifi-dahlia.dtb \
			  imx8mm-verdin-wifi-dev.dtb \
			  imx8mm-verdin-wifi-v1.1-dahlia.dtb \
			  imx8mm-verdin-wifi-v1.1-dev.dtb \
			  MyCustomTree.dtb

Fourth, I went back up the toplevel of linux-toradex and performed compilation of the kernel:

$ make -j$(nproc) Image.gz 2>&1 | tee build.log
$ make DTC_FLAGS="-@" freescale/MyDeviceTree.dtb

Fifth, following the guide exactly, I recompiled the kernel’s modules:

$ make -j$(nproc) modules

And then I reached the steps where I deploy the kernel to the image (Build U-Boot and Linux Kernel from Source Code | Toradex Developer Center). However, when following the link to available Easy Installer reference images (Reference Images for Yocto Project Software Downloads | Toradex Developer Center), I was only able to find reference images for 5.2.0 which do not support Verdin 1.0B or higher. The lowest I found was Verdin iMX8M Mini (2021-04-08 | 5.2.0+build.7 | 40.06 MB).

Is there a location where I can find a 5.1 BSP Reference Image? Are Verdin 1.0B’s generally not supported anymore? Lastly - is there a better way of building a custom dtb rather than editing the Makefile in the freescale directory of linux-toradex as I detailed above?

Thank you,
DVLevine

Greetings @DVLevine,

Can you please clarify what image you are using/referencing for your device? You marked your question as “Torizon” but then you’re talking about our BSP reference image. These are two different images so which one are you using?

Either way to access older images please notice on this page: Download Links | Toradex Developer Center

Please notice under the tables there’s an drop down to access older releases:

As for whether your method is correct, it’s fine if you’re using the our BSP references images, if you’re using Torizon there are alternative methods. So again please specify which of our images you are using.

As for support of Verdin 1.0B, in general support is limited to only 5.1 images or older. There is no support past these images. Also be aware that newer fixes and such will most likely only be for newer Verdin software/hardware. For a more comprehensive view of the changes/differences please see here: Verdin Family Specification | Toradex Developer Center

Best Regards,
Jeremias

Understood, @jeremias.tx. We had gotten a bit mixed up between Torizon and BSP Reference Images, and had missed that link to the older images.

Our goal is to put a custom device tree onto a Torizon Core Image with Easy Installer for Verdin 1.0b. In this question we were using the BSP reference images, which are not Torizon Core, which is our mistake.

Which process would you recommend for putting a custom device tree onto a Torizon Core Image?

Thank you,

DVLevine

For customizing Torizon I would suggest taking a look at our TorizonCore Builder tool: TorizonCore Builder Tool - Customizing TorizonCore Images | Toradex Developer Center

We have a specific article on it’s usage with device trees: Device Tree Overlays on Torizon | Toradex Developer Center

Using the tool you can compile device tree overlays or entire device trees. The tool can then create a Toradex Easy Installer with your customization for flashing.

Best Regards,
Jeremias