How to build the system software to match the prebuilt?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to build the system software to match the prebuilt?

788 Views
chillinwithscb
Contributor III

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:

  • **core-image-minimal** A small image that only allows a device to boot. [poky]
  • **core-image-base** A console-only image that fully supports the target device hardware. [poky]
  • **core-image-sato** An image with Sato, a mobile environment and visual style for mobile devices. The image supports a Sato theme and uses Pimlico applications. It contains a terminal, an editor and a file manager. [poky]
  • **imx-image-core** An i.MX image with i.MX test applications to be used for Wayland backends. This image is used by our daily core testing. [meta-imx/meta-sdk]
  • **fsl-image-machine-test** An FSL Community i.MX core image with console environment - no GUI interface. [meta-freescale-distro]
  • **imx-imagemultimedia** Builds an i.MX image with a GUI without any Qt content. [meta-imx/meta-sdk]
  • **imx-image-full** Builds an opensource Qt 6 image with Machine Learning features. These images are only supported for i.MX SoC with hardware graphics. They are not supported on the i.MX 6UltraLite, i.MX 6UltraLiteLite, i.MX 6SLL, i.MX 7Dual, i.MX 8MNanoLite, or i.MX 8DXL [meta-imx/meta-sdk]

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?

0 Kudos
Reply
6 Replies

224 Views
ramnarayanan
Contributor I

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.

0 Kudos
Reply

781 Views
JorgeCas
NXP TechSupport
NXP TechSupport

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.

0 Kudos
Reply

766 Views
chillinwithscb
Contributor III

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 Here are the ones that start "imx-image-full":

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.

0 Kudos
Reply

141 Views
ramnarayanan
Contributor I

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:

  1. imx-image-core = headless + i.MX test tools (NXP-supported)
  2. imx-image-multimedia = GUI stack (no Qt)
  3. imx-image-full = Qt6 + ML features

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

0 Kudos
Reply

752 Views
JorgeCas
NXP TechSupport
NXP TechSupport

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.

0 Kudos
Reply

725 Views
chillinwithscb
Contributor III
The customization guide looks intriguing. Thanks.

WRT "last releases does not include that image", begs the question: Why mention it in earlier msg? Maybe you didn't know when you wrote that.

I am pretty good using UUU now. But... the linked info and all info I've found on using UUU is less than good. I had to learn how to use UUU by reading its source code and trial and error. Conceptually, UUU is great. But, docs ... and the CLI ... are terrible.
0 Kudos
Reply