Building Linux for i.MX7

How MACHINE connects the generic build system to an NXP i.MX7 board, and what the first build for that platform looks like.

Machine configuration

One of the most important variables in Yocto is:

MACHINE

MACHINE describes the target hardware.

For example, the build system needs to know:

  • Which CPU is being used
  • Which board is being used
  • Which kernel configuration is required
  • Which device tree should be used
  • Which bootloader configuration applies
  • Which hardware-specific packages are required

The machine configuration connects the generic Yocto build system with the actual target board.

Conceptually:

A generic Yocto tree is pointed at a specific board with one MACHINE setting Generic Yocto MACHINE Target Board CPU Kernel Device Tree
The same tree serves every target; only the machine configuration changes.

The i.MX7 platform

The NXP i.MX7 is an ARM-based application processor family designed for embedded applications.

It is particularly interesting for embedded Linux because it combines:

  • ARM processing
  • Hardware peripherals
  • Networking
  • Storage interfaces
  • Display capabilities
  • USB
  • Serial interfaces
  • Other embedded peripherals

The exact features depend on the specific i.MX7 variant and board.

The important point from a Yocto perspective is that the generic Yocto build system needs hardware-specific information.

That information comes from the BSP layers and machine configuration.

Building Linux for an i.MX7 board

The exact machine name depends on the BSP version and board.

Once the appropriate BSP layers are configured, the general process is:

source oe-init-build-env

Configure the machine:

MACHINE = "<your-imx7-machine>"

Then build an image:

bitbake core-image-minimal

For a graphical or more feature-rich system, a different image target can be used.

The important thing is that the machine configuration determines which hardware-specific components are included.