Build and offline verification
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.
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
| 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.

