| .vscode | ||
| docs | ||
| scripts | ||
| src | ||
| tests | ||
| .gitignore | ||
| kas-bbai64-latest.yml | ||
| kas-bbai64-scarthgap.yml | ||
| kas-common-latest.yml | ||
| kas-common.yml | ||
| kas-qemu-dev.yml | ||
| kas-qemu-latest.yml | ||
| LICENSE | ||
| pytest.ini | ||
| README.md | ||
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/sdXdurch das tatsächliche Gerät ersetzen (z. B./dev/sdb). Die.wic.bmap-Datei wird automatisch erkannt, wenn sie neben der.wic.xzliegt.
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.