Machine Configuration Reference¶
This document explains the machine configuration files in meta-garg/conf/machine/.
BeagleBone Black (beaglebone-black.conf)¶
The BeagleBone Black uses a TI AM335x SoC (ARM Cortex-A8).
Header Comments¶
#@TYPE: Machine
#@NAME: BeagleBone Black
#@DESCRIPTION: Machine configuration for BeagleBone Black (AM335x)
These are metadata comments used by tools like the layer index to describe the machine.
SoC and Architecture¶
require conf/machine/include/ti-soc.inc
SOC_FAMILY = "ti-am335x"
DEFAULTTUNE = "cortexa8hf-neon"
require conf/machine/include/arm/armv7a/tune-cortexa8.inc
| Variable | Meaning |
|---|---|
require conf/machine/include/ti-soc.inc |
Pulls in TI-specific SoC defaults from meta-ti |
SOC_FAMILY |
Identifies the SoC family for BSP layer matching |
DEFAULTTUNE |
Compiler tuning: Cortex-A8, hard-float, NEON SIMD |
tune-cortexa8.inc |
Sets GCC flags: -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard |
Kernel Configuration¶
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
PREFERRED_VERSION_linux-yocto = "6.6%"
KERNEL_IMAGETYPE = "zImage"
KERNEL_DEVICETREE = "am335x-boneblack.dtb"
| Variable | Meaning |
|---|---|
PREFERRED_PROVIDER_virtual/kernel |
Which kernel recipe to use (linux-yocto is the Yocto-maintained kernel) |
PREFERRED_VERSION_linux-yocto |
Pin to 6.6.x LTS kernel (% is wildcard) |
KERNEL_IMAGETYPE |
zImage = compressed ARM 32-bit kernel image |
KERNEL_DEVICETREE |
Device tree blob describing the BeagleBone Black hardware |
Bootloader¶
| Variable | Meaning |
|---|---|
UBOOT_MACHINE |
U-Boot defconfig to build (AM335x EVM covers BeagleBone) |
SPL_BINARY |
Secondary Program Loader filename (first-stage bootloader loaded by ROM) |
UBOOT_SUFFIX |
U-Boot binary extension (produces u-boot.img) |
Boot flow: ROM → MLO (SPL) → u-boot.img → zImage + DTB
Machine Features¶
MACHINE_FEATURES = "usbgadget usbhost vfat ext2 screen alsa ethernet wifi"
MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree"
| Feature | What it enables |
|---|---|
usbgadget |
USB device mode (BeagleBone can appear as USB device) |
usbhost |
USB host mode (connect USB devices) |
vfat |
FAT filesystem support (for boot partition) |
ext2 |
ext2/3/4 filesystem support |
screen |
Display/framebuffer support |
alsa |
Audio support |
ethernet |
Wired networking |
wifi |
Wireless networking |
MACHINE_EXTRA_RRECOMMENDS installs kernel modules and device tree into the image.
Serial Console & Image¶
SERIAL_CONSOLES = "115200;ttyS0"
IMAGE_FSTYPES = "tar.xz wic wic.bmap"
WKS_FILE = "beaglebone-yocto.wks"
| Variable | Meaning |
|---|---|
SERIAL_CONSOLES |
Baud rate and serial device for getty |
IMAGE_FSTYPES |
Output formats: tarball, WIC disk image, bmap for fast flashing |
WKS_FILE |
Wic kickstart file defining partition layout |
Raspberry Pi 5 (raspberrypi5.conf)¶
The Raspberry Pi 5 uses a BCM2712 SoC (ARM Cortex-A76, quad-core).
Architecture¶
| Variable | Meaning |
|---|---|
DEFAULTTUNE |
Compiler tuning for Cortex-A76 (ARMv8.2-A, 64-bit) |
tune-cortexa76.inc |
Sets GCC flags for A76: -mcpu=cortex-a76 with crypto extensions |
The RPi5 is significantly more powerful than the BeagleBone new_text64-bit, out-of-order, superscalar.
Kernel Configuration¶
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
PREFERRED_VERSION_linux-yocto = "6.6%"
KERNEL_IMAGETYPE = "Image"
KERNEL_DEVICETREE = "broadcom/bcm2712-rpi-5-b.dtb"
| Variable | Meaning |
|---|---|
KERNEL_IMAGETYPE |
Image = uncompressed AArch64 kernel (RPi firmware handles decompression) |
KERNEL_DEVICETREE |
BCM2712 device tree for RPi 5 Model B |
Bootloader¶
| Variable | Meaning |
|---|---|
UBOOT_MACHINE |
U-Boot config for RPi 64-bit |
RPI_USE_U_BOOT |
Use U-Boot instead of direct kernel boot from RPi firmware |
ENABLE_UART |
Enable serial console on GPIO pins |
DISABLE_OVERSCAN |
Disable TV overscan compensation (for monitors) |
Boot flow: RPi Firmware (GPU) → U-Boot → Image + DTB
Note: The Raspberry Pi has a unique boot process where the VideoCore GPU loads firmware from the SD card's FAT partition, which then loads U-Boot (or the kernel directly).
Machine Features¶
MACHINE_FEATURES = "usbhost wifi bluetooth alsa screen ethernet"
MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree linux-firmware-rpidistro-bcm43455"
The linux-firmware-rpidistro-bcm43455 package provides WiFi/BT firmware blobs needed for the onboard wireless chip.
Serial Console & Image¶
| Variable | Meaning |
|---|---|
SERIAL_CONSOLES |
ttyAMA10 is the PL011 UART exposed on GPIO 14/15 on RPi5 |
rpi-sdimg |
RPi-specific SD card image format with boot partition |
Key Differences Summary¶
| Aspect | BeagleBone Black | Raspberry Pi 5 |
|---|---|---|
| Architecture | ARMv7-A (32-bit) | ARMv8.2-A (64-bit) |
| CPU | Cortex-A8, single core | Cortex-A76, quad core |
| Kernel image | zImage (compressed) | Image (uncompressed) |
| Boot flow | ROM → MLO → U-Boot | GPU FW → U-Boot |
| Serial port | ttyS0 | ttyAMA10 |
| WiFi firmware | External (cape) | Onboard (needs blob) |
| Image format | wic | rpi-sdimg / wic |
Adding a New Machine¶
To add support for another board:
- Create
meta-garg/conf/machine/<machine-name>.conf - Set
DEFAULTTUNEand include the appropriate tune file - Configure kernel, bootloader, and device tree
- Define
MACHINE_FEATURESfor available hardware - Set
SERIAL_CONSOLESandIMAGE_FSTYPES - Add the BSP layer to
bblayers.conf - Create a manifest XML if using repo