Files
forgefirm/kas/forgefirm-glowforge.yml
T
ScottW514 0a05b6b114 docs: present-state build and update docs; fix the ring-size arithmetic
- kas/README.md: the real-time rationale rests on the feeder's bounded
  queue depth, not ring size; the ring is 16 MiB (~84 s at 200 kHz,
  ~28 min at the 10 kHz cloud tick), a capacity for cloud-mode preload.
- BUILD.md, kas config, release checklist, cold-build workflow: only
  forgefirm and meta-openglow (branch scarthgap) are cloned as
  siblings; every ForgeFIRM source repo is fetched by pinned SRCREV.
- UPDATE-SYSTEM.md reads as the present-state design: the cloud-mode
  compatibility baseline is the cloud client's configured firmware
  version, not release metadata; decisions and open items listed
  plainly.
- README.md states what GRBL mode still needs the Glowforge service
  for (camera-referenced homing) and what runs without it.
- BRINGUP.md: generic build-host and fwup-lab references, the retained
  reproductions of the no-fire drill, the System tab.
- LIGHTBURN.md: the arm-window timeouts are machine settings.
- forgefirm-image.bb describes forgectrl as the machine-services
  daemon and points at the right backlog entry.
- American spelling throughout.
2026-08-15 06:12:51 -04:00

127 lines
4.8 KiB
YAML

# ============================================================================
# ForgeFIRM — kas build configuration (factory Glowforge control board)
# ============================================================================
# The forgefirm repo is the BASE: it controls the build, the output firmware
# images land here (build/tmp/deploy/images/glowforge/), and the build/install
# docs live here (BUILD.md, INSTALL.md, SERIAL.md, kas/README.md).
#
# Target : Yocto Scarthgap (5.0 LTS) + linux-fslc 6.12 (mainline LTS)
# Machine: glowforge (i.MX6 Solo SOM inside Basic/Plus/Pro)
# Distro : forgefirm
#
# kas generates bblayers.conf and local.conf.
#
# Run from the forgefirm repo root so outputs land inside it:
# cd forgefirm
# kas build kas/forgefirm-glowforge.yml # fetch layers + full build
# kas shell kas/forgefirm-glowforge.yml # interactive bitbake env
# kas dump kas/forgefirm-glowforge.yml # show resolved config
#
# Reproducible pins (after first checkout):
# kas lock kas/forgefirm-glowforge.yml # writes kas/forgefirm-glowforge.lock.yml
# ============================================================================
header:
version: 14
machine: glowforge
distro: forgefirm
target: forgefirm-image
# kas uses KAS_WORK_DIR (the dir you run kas from = the forgefirm repo root).
# Upstream layers are cloned into ./layers/, the build runs in ./build/, and
# caches go in ./downloads + ./sstate-cache — all gitignored, all inside forgefirm.
repos:
# --- This repo (forgefirm) — auto-detected, no url/path needed -------------
forgefirm:
layers:
meta-forgefirm:
# --- Upstream layers (cloned + pinned to the scarthgap branch by kas) ------
poky:
url: https://git.yoctoproject.org/poky.git
branch: scarthgap
path: layers/poky
layers:
meta:
meta-poky:
meta-openembedded:
url: https://github.com/openembedded/meta-openembedded.git
branch: scarthgap
path: layers/meta-openembedded
layers:
meta-oe:
meta-python:
meta-networking:
meta-freescale:
url: https://github.com/Freescale/meta-freescale.git
branch: scarthgap
path: layers/meta-freescale
layers:
.:
meta-freescale-distro:
# Provides conf/distro/include/fslc-base.inc, required by the forgefirm distro.
url: https://github.com/Freescale/meta-freescale-distro.git
branch: scarthgap
path: layers/meta-freescale-distro
layers:
.:
# --- meta-openglow — Glowforge BSP layers ---------------------------------
# Referenced as a local sibling checkout (no url => kas performs no git ops,
# so in-place BSP edits are what gets built). The kernel-module-glowforge
# sources are NOT a layer; the kernel-module-glowforge.bb recipe fetches them
# by pinned SRCREV, so kas does not manage them here.
meta-openglow:
path: ../meta-openglow
layers:
meta-openglow-core:
meta-glowforge-bsp:
# meta-openglow-bsp (separate OpenGlow_std board) intentionally excluded.
#
# Pinned-remote alternative for a fully self-contained clone (see
# kas/README.md "Push & release order"):
# meta-openglow:
# url: https://github.com/ScottW514/meta-openglow.git
# branch: scarthgap # pin via kas lock / a tag at release
# path: layers/meta-openglow
# layers:
# meta-openglow-core:
# meta-glowforge-bsp:
# ----------------------------------------------------------------------------
# local.conf additions
# ----------------------------------------------------------------------------
local_conf_header:
# Accept the NXP/Freescale firmware EULA — required to unpack firmware-imx
# (i.MX SDMA/VPU firmware blobs) pulled in by the i.MX6 BSP. ForgeFIRM targets
# the factory i.MX6 Glowforge board, so this firmware is intrinsic to the image.
eula: |
ACCEPT_FSL_EULA = "1"
# The kernel defaults to linux-fslc 6.12 in conf/machine/glowforge.conf
# (with the factory drivers forward-ported — EPIT/SDMA/OV5648/glowforge.ko —
# see kas/README.md backlog #2). This explicit pin is redundant but harmless.
kernel: |
PREFERRED_PROVIDER_virtual/kernel = "linux-fslc"
PREFERRED_VERSION_linux-fslc = "6.12%"
# NOTE: debug-tweaks (passwordless root) is deliberately NOT set here. It
# would apply to every target built from this config, including the release
# forgefirm-image. It lives in forgefirm-image-dev.bb's IMAGE_FEATURES so a
# single build yields a hardened release image and a debug dev image.
# release.sh gates the release rootfs against a passwordless root entry.
build-tweaks: |
# Parallelism sized for a 12-core / 16 GB build VM; raise on larger hosts.
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"
# Caches kept inside the forgefirm repo (gitignored):
DL_DIR ?= "${TOPDIR}/../downloads"
SSTATE_DIR ?= "${TOPDIR}/../sstate-cache"