Assembly input and rejected selections¶
The authored configuration authority is one schema-2 TOML assembly. SoC and Board
facts remain maintained JSON; resolved.json is output, not an authored alternative.
CMake owns software dependencies. Failed TOML resolution never falls back to Kconfig,
cache variables, schema-1 JSON or old generated headers.
Before running the resolver, prepare the fixed source and recursive dependencies.
Complete maintained input¶
schema = 2
board = "native_reference"
backend = "native"
clock = "model"
optimization = "Os"
[memory]
main_stack_bytes = 2048
flash_load_limit_bytes = 65536
static_ram_limit_bytes = 32768
libc_heap_bytes = 0
[uart.uart0]
binding = "uart0"
mode = "irq"
baud = 115200
[uart.uart0.rx]
format = "bytes"
capacity = 32
[uart.uart0.irq]
priority = 5
Selection |
Meaning and rejection boundary |
|---|---|
|
Authored TOML generation; unknown keys reject |
|
Maintained immediate child of |
|
External package path relative to the assembly; alternative to |
|
Explicit |
|
Maintained exact profile matching Board and SoC facts |
|
Maintained optimization/debug/LTO profile; no arbitrary compiler override |
|
Byte budgets for stack, libc heap, static RAM and Flash LOAD |
|
Explicit optional strong IDs and capability metadata |
Kind instance table |
Stable authored name, reviewed binding, mode and bounded options |
SPI/I2C device table |
Separate endpoint identity tied to an existing controller |
|
Assert reviewed CPU architecture/FPU/float ABI; cannot invent chip features |
Resource checks cover actual pin/AF, controller, IRQ ceiling, shared timer/timebase, physical DMA controller/stream, clock, exact memory domain, mode and endpoint identity. A syntactically valid selector can still reject because that provider does not implement the route. The resolver never silently changes pins, modes or clock.
Inspect and generate¶
Run from the repository root, using a new output you own:
python tools/configure/configure.py list-bindings --assembly tools/configure/assemblies/native-uart.toml
python tools/configure/configure.py check --assembly tools/configure/assemblies/native-uart.toml
python tools/configure/configure.py explain --assembly tools/configure/assemblies/native-uart.toml
python tools/configure/configure.py generate --assembly tools/configure/assemblies/native-uart.toml --output /tmp/nexus-native-config
check and explain do not generate output. generate publishes one atomic owned
bundle; failure invalidates its owned output without replacing unrelated data.
Inspect resolved.json, input identities, generated nexus_config.h, bindings,
factory, linker memory and budgets. Changing declared inputs requires a fresh
resolution; separate Board/backend combinations use separate build roots.
CPU-only Runtime has a separate authored runtime TOML using the shared CPU resolver. It emits Core/Arch/optional OS policy, no SoC/Board/startup/factory. Do not use it to claim a full device platform. The build contract, integration contract and production field model/schema own detailed accepted fields; editor completion does not establish hardware capability.