Creating a new machine to be used by Poky is a straightforward task. It essentially provides the information needed for a machine to work. The bootloader, kernel, and hardware support drivers must be checked before starting to integrate the board into the BSP layer.
The Yocto Project supports x86-32, x86-64, ARM32, ARM64, MIPS, MIPS64, and PowerPC, representing the most currently-used embedded architectures.
The prevailing set of variables used in a machine definition is as follows:
- TARGET_ARCH: This sets the machine architecture, for example, ARM and i586
- PREFERRED_PROVIDER_virtual/kernel: This overrides the default kernel (linux-yocto) in case you need to use a specific one
- SERIAL_CONSOLES: This defines serial consoles and their speeds
- MACHINE_FEATURES: This describes hardware features, so the software stack needed is included in the images by default
- KERNEL_IMAGETYPE: This is used to choose the kernel image type, for example, zImage and uImage
- IMAGE_FSTYPES: This sets the generated filesystem image types, for example, tar.gz, ext4, and ubifs
You can see examples of machine definition files inside the Poky source code in meta-yocto-bsp/conf/machine/. When describing a new machine, we should pay special attention to specific features supported by it in MACHINE_FEATURES. This way, the needed software to support these features is installed into the images. The current available values for MACHINE_FEATURES are listed as follows:
-
acpi: Hardware has ACPI (x86/x86_64 only)
-
alsa: Hardware has ALSA audio drivers
-
apm: Hardware uses APM (or APM emulation)
-
bluetooth: Hardware has integrated BT
-
efi: Support for booting through EFI
-
ext2: Hardware HDD or Microdrive
-
irda: Hardware has IrDA support
-
keyboard: Hardware has a keyboard
-
pcbios: Support for booting through BIOS
-
pci: Hardware has a PCI bus
-
pcmcia: Hardware has PCMCIA or CompactFlash sockets
-
phone: Mobile phone (voice) support
-
qvga: Machine has a QVGA (320x240) display
-
rtc: Machine has a real-time clock
-
screen: Hardware has a screen
-
serial: Hardware has serial support (usually RS232)
-
touchscreen: Hardware has a touchscreen
-
usbgadget: Hardware is USB gadget device compatible
-
usbhost: Hardware is USB host compatible
-
vfat: FAT filesystem support
-
wifi: Hardware has integrated Wi-Fi