Ambient Intelligence · Hardware Platform

AM62x Firmware

Step-by-step build, test, and deployment process for the TI AM62x + IWR6843AOP platform.

ambientintel/ambientfirm
Environment
Build
Bring-Up
Production
Goal
Dev Board
SK-AM62-LP
AM625 · A53 × 4 @ 1.4 GHz
Prod Module
OSD62x-PM
AM6254 + 1 GB DDR4 · 500-ball BGA
Radar
IWR6843AOP
60 GHz · antenna-on-package
SDK
11.02.08.02
2026 LTS · Kernel 6.12.57+git-ti
OTA
Mender
Hosted · A/B rootfs · update-modules
STEP 01
Setupone-time setup
Complete

Host Environment

Docker Desktop + QEMU x86_64 on Apple Silicon. Rosetta must be disabled.

Open Docker Desktop → Settings → General. Uncheck "Use Rosetta for x86/amd64 emulation on Apple Silicon." Rosetta has a .bss section size overflow bug that silently corrupts linked binaries — U-Boot SPL was the symptom. Use QEMU emulation only.

Ubuntu 22.04 x86_64. Workspace bind-mount: ~/ti-am62x/workspace (Mac) ↔ /workspace (container). Run all builds inside the container. Commits and pushes happen on the Mac host to preserve SSH credentials.

$ from macOS host
cd ~/ti-am62x
./enter.sh
sudo apt install -y \
  swig python3-dev python3-setuptools \
  libgnutls28-dev uuid-dev libftdi-dev \
  libusb-1.0-0-dev libcap-dev libpython3-dev \
  pkg-config python3-yaml python3-pyelftools \
  python3-jsonschema python3-lxml
sudo pip3 install yamllint

U-Boot 2025.01 requires these beyond stock Ubuntu 22.04. Missing swig causes cryptic Python import errors mid-build.

Build Checklist
Complete53%
Open Decisions
1Wi-Fi/BLE module: Murata 1YN (NXP IW416) vs CYW43xx class — TI SDK driver maturity check pending. Drives schematic Wi-Fi integration, antenna count, and certification scope.
2Physical connectivity: Wi-Fi / Ethernet / BLE / cellular mix — required before BOM finalization.
3AMBIENT_RADAR_DEVICE per phase: Phase 1a/1b uses /dev/ttyACM1 (USB-CDC over EVM); EVT-0.1 uses /dev/ttyS<n> (TBD from EE pin assignments). Set in /etc/ambient/ambient.env and DeviceAllow in ambient.service. See docs/radar-bench-rig.md phase table.
4EVT-0.1 bring-up inputs: 7 items blocking OSD62x-PM work — DDR timing header (Octavo), SYSBOOT strap values (EE Gavin), radar UART + GPIO pins (EE), USB-C pin config (EE), eMMC pin config (EE/Octavo), BSP licensing (Octavo). See docs/osd62x-pm-bringup.md consolidated input table.
5Fab stackup: 8-layer vs 10-layer HDI for OSD62x-PM 500-ball BGA escape routing — pending Octavo OSD62x-PM Layout Guide review.
6OP-TEE trusted app scope — key storage only, or also fall-event timestamp signing?
7CI self-hosted runner strategy for 14 GB SDK dependency
8ambientapp events module: parquet writer + S3 uploader DONE (feat/telemetry-module). Still needed: MQTT publisher (QoS 1 fall alerts), shadow client, IoT credential refresh loop, offline buffer, clock sync monitor — see device-cloud-contract.md v0.2.