PICO-IMX7 with Yocto

What a BSP provides for a board like the PICO-IMX7, and how Yocto assembles U-Boot, kernel and root filesystem into a bootable image.

BSP: Board Support Package

A BSP, or Board Support Package, provides the hardware-specific configuration required to build Linux for a particular board.

A BSP can contain:

  • Machine configuration
  • Linux kernel configuration
  • Device trees
  • Bootloader configuration
  • Hardware-specific recipes
  • Firmware
  • Patches

For example, when working with an NXP i.MX board, vendor-provided layers provide much of the hardware support needed to build Linux.

This saves us from having to implement all hardware support ourselves.

PICO-IMX7

One of the boards used in this work is the PICO-IMX7.

The board provides an embedded platform around the i.MX7 processor.

Instead of manually assembling a Linux system, Yocto can be used to generate a complete bootable system for the board.

The overall architecture is:

BSP and custom layer feed BitBake, which produces the bootable image Yocto BSP Custom Layer BitBake U-Boot Kernel RootFS Bootable Image PICO-IMX7
A custom layer only adds or overrides what the BSP already provides.

Bootloader

Before Linux starts, an embedded processor needs boot software.

For many ARM embedded platforms this is U-Boot.

The boot sequence can be simplified as:

Boot sequence of the i.MX7 board from power on to user space Power on Boot ROM Bootloader Linux kernel Device tree Root filesystem User space
Each stage hands over to the next, so a fault is easy to locate by watching where the console log stops.

The exact boot sequence depends on the SoC and board configuration.

Yocto can build the bootloader as part of the overall image-generation process.