装配输入与拒绝规则¶
配置权威是一份人工编写的 schema-2 TOML 装配。SoC 和 Board 事实保持维护中的 JSON;resolved.json 是输出,不是另一份人工编写的输入。CMake 拥有软件依赖。TOML 解析失败绝不回退 Kconfig、缓存变量、schema-1 JSON 或旧生成头。
运行解析器前,先准备固定源码与递归依赖。
完整维护输入¶
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
选择 |
含义与拒绝边界 |
|---|---|
|
人工编写的 TOML 生成;未知键拒绝 |
|
|
|
相对装配定位的外部包路径;与 |
|
显式 |
|
匹配 Board 与 SoC 事实的维护中精确配置 |
|
维护中的优化/调试/LTO 配置;不接受任意编译器覆盖 |
|
以字节记录栈、libc 堆、静态 RAM 和 Flash LOAD 预算 |
|
显式可选强类型 ID 和能力元数据 |
类别实例表 |
稳定人工编写的名称、复核绑定、模式与有界选项 |
SPI/I2C 器件表 |
关联已有控制器的独立端点身份 |
|
断言复核 CPU architecture/FPU/float ABI;不能虚构芯片特性 |
资源检查覆盖实际引脚/AF、控制器、IRQ 系统调用优先级阈值、共享定时器/时间基准、物理 DMA 控制器/流、时钟、准确内存域、模式及端点身份。即使选择项语法合法,仍可能因提供者未实现该路由而被拒绝。解析器绝不静默改变引脚、模式或时钟。
检查并生成¶
从仓库根目录执行,使用自己拥有的新输出:
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 与 explain 不生成输出。generate 发布一个原子自有 bundle;失败使其自有输出失效,不替换无关数据。检查 resolved.json、输入身份、生成的 nexus_config.h、绑定、factory、链接器内存和预算。声明输入变化要求重新解析;不同 Board/backend 组合使用独立构建根目录。
CPU-only Runtime 使用独立人工编写的 runtime TOML 和共享 CPU 解析器。它只生成 Core/Arch/可选 OS 策略,不生成 SoC/Board/startup/factory。不得据此声明完整设备平台。构建合同、接入合同和生产字段模型/schema 拥有详细合法字段;编辑器补全不建立硬件能力。