Skip to content
neuralSPOT-X
API reference
HELIA HUB

nsx flash

Build and flash a generated NSX app

nsx flash [-h] [--app-dir APP_DIR] [--board BOARD]
[--build-dir BUILD_DIR] [--toolchain TOOLCHAIN]
[--target TARGET] [--sdk-root SDK_ROOT]
[--probe-serial PROBE_SERIAL] [--jobs JOBS] [--update]
[--frozen] [--timeout SECONDS]
[app]
Positional arguments
OptionValueDefaultDescription
appvalueoptionalApp name or directory (overrides --app-dir; resolved under ./ and ./examples)
Options for nsx flash
OptionValueDefaultDescription
--app-dir APP_DIRvalue.App directory containing nsx.yml
--board BOARDvalueoptionalOverride board from nsx.yml
--build-dir BUILD_DIRvalueoptionalBuild directory override
--toolchain TOOLCHAINvalueoptionalToolchain override (gcc, armclang, atfe)
--target TARGETvalueoptionalOptional executable target to flash
--sdk-root SDK_ROOTvalueoptionalOptional out-of-tree AmbiqSuite root passed as NSX_AMBIQSUITE_ROOT_OVERRIDE
--probe-serial PROBE_SERIALvalueoptionalOptional SEGGER J-Link USB serial number to use
--jobs JOBSvalue8Parallel build jobs
--updateflagoptionalRe-resolve module constraints to upstream tip and re-vendor before flashing
--frozenflagoptionalWhen a (re)configure is needed, error on any drift between nsx.yml, nsx.lock, and modules/ instead of correcting it; modules missing from modules/ are fetched at their locked revision and verified. Note: passing --probe-serial always forces a reconfigure; --frozen only changes how the accompanying module sync behaves, not whether it runs.
--timeout SECONDSvalueoptionalWall-clock budget per subprocess (seconds). Kills the whole process group on timeout.

J-Link Commander is discovered from JLINK_PATH, PATH, or the standard SEGGER install locations on Linux, macOS and Windows. The resolved path is passed into CMake so discovery is consistent across NSX operations.

Flashing uses the board-defined flash settings and requires the selected target’s .bin and the generated jlink/<target>/flash_cmds.jlink recipe. A successful process exit is rejected unless J-Link reports an actual flash-download operation.

--sdk-root warns that nsx.lock and the SBOM no longer describe the flashed binary, cannot be combined with --frozen, and forces a reconfigure when it differs from the cached override. With --frozen, explicit probe selection still forces configure.

Terminal window
cd <app-dir>
nsx flash
# Flash another executable finalized by the same NSX/CMake project.
nsx flash --target hpx_profiler_power

--app-dir names the app directory containing nsx.yml; when it is omitted NSX searches upward from the current directory. The positional app argument overrides --app-dir and is resolved under the current directory and under examples/.

The out-of-tree SDK escape hatch is described under SDK provider selection in the guides.

--target names an executable to flash; omitting it selects the app’s primary executable.

-v/--verbose, -q/--quiet are parsed by nsx itself, so they go before the command name, as nsx -v flash.