I have read the i.MX Yocto Project User's Guide and have gotten the build to succeed. But, it's less than clear what I'm accomplishing or what options I should be choosing along the way. The process is not a simple as follow the steps. You have to choose options along the way. And you have to choose options that make sense for what you're doing. And I don't always understand the options available.
To setup my env, I did this:
DISTRO=fsl-imx-wayland MACHINE=imx8mn-lpddr4-evk source ./imx-setup-release.sh -b nano
The MACHINE option of imx8mn-lpdd4-evk seems to match my hardware so I assume that's what I want.
Honestly, I don't what distro means in this context. But, fsl-imx-wayland seems the best option available none-the-less.
Later in the process you have to choose a target. This is where I'm much less sure what I'm doing. The instructions list the following options with details based on my research/understanding:
I assume the core* guys are not very useful except for testing that the build works. And I assume the imx* guys are more specific to my hardware and more likely to be useful.
As a headless device, I don't need any GUI stuff. Should I use fsl-image-machine-test? But that's not an IMX guy and it sounds like it's for testing. Is imx-image-core enough for me? or should I go large and use imx-image-full? I have no idea. How does anyone choose?
In particular (and getting to the title of the post), let's say I'd like to start with the build that I can download from NXP here. What is the target that builds that?
To match the prebuilt NXP image identify the Yocto target they use usually imx-image-full or imx-image-multimedia depending on the SoC. Since you're building a headless system, imx-image-core is often sufficient unless ML or Qt is needed. The fsl-image-machine-test is more for validation not production.
Understanding DISTRO (build configuration), MACHINE (hardware) and IMAGE (features) is key to build a software product that fits. We at CONTUS Tech typically customize Yocto layers for tailored embedded system deployments.
Hello,
The core images are used as you mention to confirm that the build works and also to confirm that the board is able to boot with some basic packages for testing.
imx images are used for testing of multimedia applications such as audio/video stuff and full image incorporates all the functionalities provided by our BSP.
Since you are testing a specific use case scenario, I suggest you go for a custom image according to your design requirements.
Our prebuilt BSP in web page has the two options imx-image-multimedia and imx-image-full.
Best regards.
Thanks for the reply.
I'm unsure why you refer to testing so much. What I'm building is not for testing. I am not testing. TBO so much talk of testing makes be uneasy. I don't want something that's only for testing.
Building a custom image sounds good. but... I don't know how to do that. Nor do I know how to learn how to do that. I've struggling to learn how to do this stuff for months. Making little progress.
The package that I download from the web (L6.12.3-1.0.0_MX8MN which is file LF_v6.6.36-2.1.0_images_IMX8MNEVK.zip) does have a file imx-image-full-imx8mnevk.wic. Maybe this is the result of a target imx-image-full. I do not see something called imx-image-multimedia. But, I don't think it would be particularly useful to me.
I did just completed a build of the imx-image-full target. I'd like to try it on the nano EVK to see if works as I need; works like the prebuilt (L6.12.3-1.0.0_MX8MN). ... but there are lots of generated files (too many to understand) while none that are clearly what I want based on the file name. They all include rootfs which seems to indicate it's only part of the system software
imx-image-full-imx8mn-lpddr4-evk.rootfs.manifest
imx-image-full-imx8mn-lpddr4-evk.rootfs.spdx.tar.zst
imx-image-full-imx8mn-lpddr4-evk.rootfs.tar.zst
imx-image-full-imx8mn-lpddr4-evk.rootfs.testdata.json
imx-image-full-imx8mn-lpddr4-evk.rootfs.wic.bmap
imx-image-full-imx8mn-lpddr4-evk.rootfs.wic.zst
Any thoughts and advise is welcome.
MACHINE=imx8mn-lpddr4-evk is right. In Yocto, DISTRO selects policy/stack (e.g., Wayland, multimedia, SDKs); MACHINE selects BSP; the image target defines what gets installed.
For i.MX, NXP’s prebuilts map 1:1 to targets:
To match a prebuilt, use the same DISTRO shown in the tarball name and bitbake that image (e.g., bitbake imx-image-core). For a headless device, prefer imx-image-core over fsl-image-machine-test (community).
Start there, then layer packages you need to build a software product. — CONTUS Tech
Hello,
I suggest you take a look at the next link:
Yocto Project customization guide - NXP Community
Regarding the missing imx-image-multimedia.wic file, last releases does not include that image in prebuilt files.
To flash your built image, please check the next link as reference:
Flashing Linux BSP using UUU - NXP Community
Best regards.