Skip to article

Build and offline verification

Checked 2026-11-01

Use this page to change source code and verify implementation. For ordinary installation, follow published-image flashing. Building a raw binary does not replace producing and validating an encoded image and matching manifest.

Toolchain and commands

Install arm-none-eabi-gcc, Make, Python 3 and a host C compiler supporting AddressSanitizer/UndefinedBehaviorSanitizer. Run from the repository root in an environment with those tools:

make
make verify

For an ARM toolchain outside PATH:

make verify ARM_PREFIX=/path/to/toolchain/bin/arm-none-eabi-

Replace /path/to/toolchain/bin/ with its actual location. The root Makefile delegates to firmware/. Firmware outputs go to build/motor-release/ and native tests to build/host/. These commands do not flash hardware.

Source, firmware build and offline verification stages

Check coverage

Command Scope
npm test / PowerShell npm.cmd test Node.js driver, shared controller and tools using simulated hardware
make verify Firmware build, C regressions, register/storage contracts and image layout
tools/flash/.venv/bin/python -m unittest discover -s tools/flash/tests -v Flashing and factory repair with simulated serial devices
npm run test:driver-package Driver packaging and installation with available npm cache

The Python path in the table is for macOS/Linux; use tools\flash\.venv\Scripts\python.exe on Windows. Viewer tests require its separate Python 3.12 dependencies; the test directory is tools/simulation/test and the import directory is tools/simulation.

Software tests do not establish arm accuracy, real-load thermal behavior or suitable motor gains. Hardware-diff tests are a separate operation: they can move motors and replace settings/reset templates. Do not substitute them for stationary diagnostics on an assembled arm.

Implementation layout

Responsibilities of firmware, host driver and tools

Directory Purpose
firmware/app/ Coordination, runtime, Extension and device services
firmware/core/ Control, sensing, protocol, registers and storage
firmware/platform/gd32f130/ Hardware drivers, startup, linker script and vendor code
firmware/tests/ C regressions and Python checks
host/servo-driver/ Packet encoding and transport
host/arm-control/ Sessions, profiles, gravity and cleanup
tools/ Settings, flashing, poses, teleoperation, tuning, diagnostics and viewing

Retain vendor attribution and licensing. A wire-contract change requires coordinated updates to firmware, driver, tests, protocol version and documentation.

Current limits

Software checks do not replace trials on the actual mechanism. Temperature protection uses raw readings whose stability still needs validation. Load, gains, calibration and mechanical limits must be checked for the particular assembly. Published-image limitations are listed in the v0.1-preview release notes.


Documentation home · Source revision: a995f77. Extension 9.0.