Mistake on this page? Email us

Machine configuration files

This section describes the ${MACHINE}.conf, ${machine}.conf and [soc-family].inc entities in the BSP recipe relationship UML diagram (Figure 4.0). The discussion is applicable to all targets.

${MACHINE}.conf: the top level BSP control file

Figure 4.0 illustrates the ${MACHINE}.conf machine configuration file using a UML class entity with symbols.

The MBL meta-[soc-vendor]-mbl ${MACHINE}.conf file includes the community meta-[soc-vendor] ${machine}.conf and customizes key symbols to specify how ATF, OP-TEE, U-Boot and linux will be built and configured. MBL uses ${MACHINE}.conf to override and modify the configuration specified configuration in ${machine}.conf.

The key symbols modified in ${MACHINE}.conf are:

  • PREFERRED_PROVIDER_virtual/atf = "atf-${MACHINE}". This symbol in ${MACHINE}.conf specifies which recipe to use to build ATF. The recipe packages bootchain artifacts into the FIP image as specified in System architecture.
  • KERNEL_CLASSES = "mbl-fitimage". This symbol changes the kernel.bbclass processing to inherit the mbl-fitimage.bbclass, which packages the kernel in a FIT image as specified in System architecture.
  • KERNEL_IMAGETYPE = "fitImage". This symbol customizes kernel.bbclass processing to generate a FIT image rather than a zImage, for example.
  • KERNEL_DEVICETREE = "XXX". This symbol definition is used to specify additional device trees that can be included in the FIT image.
  • UBOOT_ENTRYPOINT = "0xabcdefab". This symbol specifies the U-Boot entry point called by OP-TEE, for example.
  • UBOOT_DTB_LOADADDRESS = "0xabcdefab". This symbol specifies the memory address where the U-Boot DTB is loaded into memory.
  • UBOOT_SIGN_ENABLE = "1". This symbol enables FIT image signing of subcomponents by u-boot-mkimage.
  • MBL_WKS_BOOTLOADERxxx = "xxx". These symbols are used to set the offsets, sizes and filenames of bootloaders used in mbl.wks.in. See meta-mbl/meta-mbl-distro/classes/mbl-partitions.bbclass for details.

Partitioning software components into FIP/FIT image specifies that the Linux kernel image is packaged into a FIT image, so the kernel FIT image can be written to a dedicated partition and independently updated. FIT image generation is achieved using the linux*, kernel.bbclass, mbl-fitimage.bbclass and kernel-fitimage.bbclass entities shown in Figure 4.0, and by setting the symbols KERNEL_CLASSES and KERNEL_IMAGETYPE. See linux* and the kernel-fitimage.bbclass subsection for more details.

See Example: imx7s-warp-mbl BSP recipe/package relationships for details on the ${MACHINE}.conf file for imx7s-warp-mbl.

${machine}.conf: the community BSP control file

The meta-[soc-vendor] machine configuration files ${machine}.conf orchestrate U-Boot and kernel creation using virtual providers (see the section "Using Virtual Providers" in the Yocto Mega Manual). Virtual providers allow the selection of a specific package recipe from among several providers. For example, consider the case of two u-boot* recipes each providing the same package functionality by declaring they provide the virtual/bootloader symbolic package name:

  • u-boot-fslc.bb declares its ability to build a bootloader by specifying the virtual provider directive PROVIDES="virtual/bootloader".
  • u-boot-imx.bb declares the virtual provider directive PROVIDES="virtual/bootloader".

A ${machine}.conf (by including [soc-family].inc) selects a specific bootloader package recipe by setting the PREFERRED_PROVIDER_virtual/bootloader symbol to the actual recipe (package) name:

PREFERRED_PROVIDER_virtual/bootloader="u-boot-fslc"

Figure 4.0 shows it is the [soc-family].inc recipe included by ${machine}.conf that specifies the virtual providers for the U-Boot and kernel components: [soc-family].inc is an include file containing target SoC symbol definitions common to a family of processors, and may be used in more than one ${machine}.conf. For example:

  • [soc-family].inc specifies the U-Boot recipe by setting PREFERRED_PROVIDER_virtual/bootloader = u-boot-XXXX.
  • [soc-family].inc specifies the Linux kernel recipe by setting PREFERRED_PROVIDER_virtual/kernel = linux-XXXX.

See imx-base.inc for an example of the [soc-family].inc recipe.

Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.