BeagleBone AI64 Yocto Demos
Find a file
2026-03-22 19:06:51 +01:00
.vscode project 2 and fix image 2026-03-21 20:16:35 +01:00
docs maintain and docs 2026-03-22 19:06:51 +01:00
scripts maintain and docs 2026-03-22 19:06:51 +01:00
src flashing and tests 2026-03-22 18:30:14 +01:00
tests flashing and tests 2026-03-22 18:30:14 +01:00
.gitignore flashing and tests 2026-03-22 18:30:14 +01:00
kas-bbai64-latest.yml maintenance 2026-03-22 18:48:29 +01:00
kas-bbai64-scarthgap.yml video projekte 2026-03-21 17:23:55 +01:00
kas-common-latest.yml maintenance 2026-03-22 18:48:29 +01:00
kas-common.yml maintain and docs 2026-03-22 19:06:51 +01:00
kas-qemu-dev.yml fix QEMU tests 2026-03-22 12:32:14 +01:00
kas-qemu-latest.yml maintenance 2026-03-22 18:48:29 +01:00
LICENSE Initial commit 2026-03-21 17:21:22 +01:00
pytest.ini basic config and docs 2026-03-21 17:23:54 +01:00
README.md maintain and docs 2026-03-22 19:06:51 +01:00

BeagleBone AI-64 DO9ITA Yocto/KAS Build

Yocto-basierte Linux-Distribution für das BeagleBone AI-64 Board mit ROS 2 Jazzy Jalisco, Hardware-Beschleunigung und Sensor-Integration, gebaut mit KAS.

Hardware-Übersicht

Eigenschaft Details
SoC Texas Instruments TDA4VM (J721E), K3-Generation
CPU Dual-Core ARM Cortex-A72 + Quad-Core Cortex-A53
GPU Imagination Rogue BXS-4-64 (Mesa-PVR, OpenGL ES 3.2, Vulkan 1.0)
DSP 2× C66x (40 GFLOPS), 1× C7x + MMA (8 TOPS INT8)
Vision 2× VPAC (ISP, LDC, NF), 1× DMPAC (SDE, DOF)
Video VXE Encoder (H.264/HEVC, 4Kp30), VXD Decoder (H.264/HEVC/VP9, 4Kp60)
RAM 4 GB LPDDR4
Speicher microSD, eMMC (16 GB)
Ethernet Gigabit Ethernet
USB USB 3.0 Type-C (Host + Gadget), USB 2.0 Type-A
PCIe PCIe Gen 3 x1 (Endpoint + NTB)
Display Mini-HDMI, MIPI DSI
Kamera 2× MIPI CSI-2 (OV5640, IMX219 Dual, FPDLink III)
Erweiterung 2 × 23-Pin Cape Header (P8, P9) BeagleBone-kompatibel
Schnittstellen I2C, SPI, UART, CAN-FD, PWM (EPWM0/2/4), GPIO
Sicherheit ARM TrustZone, OP-TEE, Secure Boot (RSA-4096, SHA-512)
Realtime 2× Cortex-R5F (MCU-Domain), 1× Cortex-M3 (Power-Controller)
Formfaktor BeagleBone (ca. 55 × 86 mm)

Voraussetzungen

  • Linux-Host (getestet unter Ubuntu 22.04+)
  • Python 3.10+ mit venv
  • Typische Yocto-Host-Pakete (gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 python3-subunit zstd liblz4-tool file locales libacl1)

Schnellstart

# 1. Python-Umgebung aktivieren
python3 -m venv .venv
source .venv/bin/activate
pip install kas

# 2. BBAI64 Hardware-Image bauen
kas build kas-bbai64-scarthgap.yml

# 3. Oder QEMU-Entwicklungsimage bauen
kas build kas-qemu-dev.yml

Das fertige WIC-Image liegt nach dem Build unter:

build/deploy-ti/images/beaglebone-ai64/do9ita-bbai64-image-beaglebone-ai64.rootfs.wic.xz

SD-Karte flashen

# bmaptool installieren (falls noch nicht vorhanden)
sudo apt install bmap-tools

# Image flashen (schneller als dd, da nur beschriebene Blöcke kopiert werden)
sudo bmaptool copy \
  build/deploy-ti/images/beaglebone-ai64/do9ita-bbai64-image-beaglebone-ai64.rootfs.wic.xz \
  /dev/sdX

Hinweis: /dev/sdX durch das tatsächliche Gerät ersetzen (z. B. /dev/sdb). Die .wic.bmap-Datei wird automatisch erkannt, wenn sie neben der .wic.xz liegt.

Projektstruktur

.
├── kas-bbai64-scarthgap.yml   # KAS: BBAI64 Hardware-Build (gepinnt)
├── kas-qemu-dev.yml           # KAS: QEMU aarch64 Entwicklungs-Build (gepinnt)
├── kas-common.yml             # KAS: Gemeinsame Layer und Konfiguration (gepinnt)
├── kas-bbai64-latest.yml      # KAS: BBAI64 Build (Branch-basiert)
├── kas-qemu-latest.yml        # KAS: QEMU Build (Branch-basiert)
├── kas-common-latest.yml      # KAS: Gemeinsame Layer (Branch-basiert)
├── scripts/
│   ├── flash-emmc.py          # eMMC über Serial + TFTP flashen
│   ├── build_and_test.sh      # Build + Test Pipeline
│   ├── update_and_build.sh    # Layer aktualisieren + bauen
│   └── maintain.py            # Wartung: Update, Build, Test, Pin
├── src/
│   ├── meta-do9ita/           # Eigener Meta-Layer (Distro, Images, Netzwerk)
│   └── meta-do9ita-bbai64/    # BBAI64-spezifisch (DT-Overlays, Kernel-Config)
├── layers/                    # Geklonte Yocto-Layer (von KAS verwaltet)
│   ├── poky/                  #   Yocto Reference (Scarthgap LTS)
│   ├── meta-openembedded/     #   OE Ergänzungslayer
│   ├── meta-arm/              #   ARM Toolchain + BSP
│   ├── meta-ti/               #   TI BSP (K3/J721E)
│   └── meta-ros/              #   ROS 2 Jazzy Jalisco
├── tests/                     # labgrid/pytest Integration-Tests
├── docs/                      # Dokumentation
└── build/                     # Bitbake Build-Verzeichnis

Build-Konfiguration

BBAI64 Hardware-Build (kas-bbai64-scarthgap.yml)

Eigenschaft Wert
Machine beaglebone-ai64
Distro do9ita-ai64
Image do9ita-bbai64-image
Yocto Release Scarthgap (LTS)
BSP-Profil bb_org-6_6 (BeagleBoard.org Kernel 6.6)
Init systemd (networkd, resolved, timesyncd)

QEMU Entwicklungs-Build (kas-qemu-dev.yml)

Eigenschaft Wert
Machine qemuarm64
Distro do9ita
Image do9ita-qemu-image
Kernel linux-yocto 6.6
RAM 2 GB (cortex-a72)

Gemeinsame Downloads und sstate-cache liegen unter ~/.yocto/ und können projektübergreifend wiederverwendet werden.

Enthaltene Pakete

Gemeinsam (alle Images)

  • Netzwerk: OpenSSH-Server, systemd-networkd (DHCP), systemd-resolved (DNS-over-TLS), systemd-timesyncd (NTP)
  • Bus-Tools: i2c-tools, spitools, can-utils, ethtool, pciutils, usbutils
  • Python: Python 3
  • ROS 2 Jazzy: ros-base, sensor-msgs, std-msgs, geometry-msgs, nav-msgs, diagnostic-msgs

Nur BBAI64

  • Wireless/BT: linux-firmware, BlueZ 5, wpa-supplicant, iw
  • Kamera: v4l-utils, media-ctl, yavta, libcamera, kernel-module-uvcvideo
  • GPIO: libgpiod, libgpiod-tools, python3-libgpiod
  • ROS 2 (zusätzlich): cv-bridge, image-transport
  • Speicher: mmc-utils

Nur QEMU

  • Debug: gdb, strace, tcpdump, htop, vim, curl
  • Paketverwaltung: debug-tweaks, tools-debug, tools-profile

Sensor-Unterstützung (BBAI64)

Vorkonfigurierte Device-Tree-Overlays und Kernel-Module für:

Sensor Typ DT-Overlay
OV5640 / IMX219 MIPI CSI-2 Kamera k3-j721e-evm-csi2-ov5640.dtbo / k3-j721e-sk-csi2-dual-imx219.dtbo
USB-Webcam (UVC) USB Video Kein Overlay nötig
HC-SR04 Ultraschall k3-j721e-beagleboneai64-hcsr04.dtbo
MPU-6050 6-Achsen IMU (I²C) k3-j721e-beagleboneai64-mpu6050.dtbo
VL53L0X Time-of-Flight Laser (I²C) k3-j721e-beagleboneai64-vl53l0x.dtbo

Tests

Integration-Tests mit labgrid + pytest lauffähig sowohl auf QEMU als auch auf realer Hardware:

# QEMU-Tests (Standard)
pytest

# HW-Tests über serielle Konsole
pytest --lg-env tests/bbai64-env.yaml

Testabdeckung: Boot, Netzwerk, Dateisystem, Paket-Verfügbarkeit.

Siehe docs/tests.md für das vollständige Test-Setup.

Skripte

Skript Beschreibung
scripts/flash-emmc.py eMMC über Serial + TFTP flashen (kein SD nötig)
scripts/build_and_test.sh Build + Test Pipeline (QEMU + optional HW)
scripts/update_and_build.sh Layer auf neuesten scarthgap-Stand bringen + bauen
scripts/maintain.py Update → Build → Test → Pin (vollständige Wartung)

Siehe docs/scripts.md für Details.

Dokumentation

Dokument Inhalt
docs/bbai64/ Hardware-Referenz (SoC, Beschleuniger, Cores)
docs/bbai64/tftp-update.md U-Boot TFTP Update-Anleitung
docs/hw/ Sensor-Anleitungen (CSI, USB-Cam, HC-SR04, MPU-6050, VL53L0X)
docs/ros2-tutorial.md ROS 2 Jazzy Tutorial (Topics, Services, Parameter, TF2)
docs/power-management.md K3 Power-Management, DVFS, PMIC
docs/scripts.md Skript-Referenz (flash, build, maintain)
docs/tests.md Test-Setup und -Ausführung
docs/projects/project1/ Videostreaming-Projekte (H.265, Multi-Kamera, PiP)

Lizenz

Siehe LICENSE.