接入复核的 Board 包¶
精确 SoC 已有维护提供者时使用本指南。Board 增加 PCB 事实与复核绑定,不复制厂商 SDK,也不授权每一条硅片路由。实际未观察的 PCB 版本、焊桥和电压保持未知。
使用下面的解析器或构建命令前,先准备固定源码与递归依赖。
收集最小事实¶
记录完整料号、封装、来源文档版本和保留来源依据。记录晶振值、供电条件、SWD 预留、引脚、有效电平、跳线条件和安全初始输出。区分文档默认与这块实际板卡的观察。先接入一个 LED 和一条控制台路由。
选择与这些晶振事实匹配的已维护固定时钟 profile。新的 Board 晶振数值不会合成任意 PLL、电源、Flash wait-state 或外设 kernel-clock 方案。授权新组合前须增加并验证精确 SoC profile;解析成功不代表实测时钟或电气资格。
下面是完整维护 Board 文件,包含 soc_family:
{
"schema_version": 1,
"id": "stm32f407zg-qiming-v31",
"soc": "STM32F407ZGT6",
"soc_family": "stm32f407",
"source_revision": "V3.1",
"physical_pcb_revision": null,
"clocks": {
"hse_hz": 8000000
},
"bindings": [
{
"id": "led0",
"controller": "GPIOE",
"route": "gpio-pe3",
"initial": 8,
"mask": 8
},
{
"id": "led1",
"controller": "GPIOE",
"route": "gpio-pe4",
"initial": 16,
"mask": 16
},
{
"id": "led2",
"controller": "GPIOG",
"route": "gpio-pg9",
"initial": 512,
"mask": 512
},
{
"id": "uart1",
"controller": "USART1",
"route": "usart1-pa9-pa10"
},
{
"id": "flash0",
"controller": "FLASH",
"route": "flash-internal"
},
{
"id": "iwdg0",
"controller": "IWDG",
"route": "iwdg"
},
{
"id": "can1",
"controller": "CAN1",
"route": "can1-pa11-pa12"
},
{
"id": "can2",
"controller": "CAN2",
"route": "can2-pb12-pb13"
}
],
"reserved_resources": [
"PA13",
"PA14"
],
"unknowns": [
"Physical PCB revision and fitted options not inspected",
"SPI/I2C/PWM/ADC/EXTI external wiring not bound or physically qualified",
"CAN optional fitted transceivers, termination and jumper positions not inspected; software pad routes only, physical CAN qualification not executed"
],
"provenance": [
{
"url": "https://github.com/petercwq/STM32407/blob/master/启明欣欣407开发板(高配版)V3.1例程使用手册.pdf",
"scope": "V3.1 LED identities and low-active behavior"
},
{
"repository": "https://github.com/petercwq/STM32407",
"tree": "08c5f513f1677388fcacaa519dca0c9ef00b6d2e",
"led_header_blob": "63ed6144e8d33f947fbe2784a9962d2913028ac8",
"led_source_blob": "4adeb6f04323f6c8ae4eabf3308334e3e6910277",
"clock_source_blob": "e99736d005f731db67300447d77ce96901d4c3ec",
"uart_source_blob": "e0f9a0fdf6633de6ef5f1c451c2966f22dae204b",
"scope": "LED pins and inactive initialization; HSE_VALUE 8 MHz with PLL_M 8 / PLL_N 336 / PLL_P 2; USART1 PA9/PA10 AF7"
},
{
"repository": "https://github.com/petercwq/STM32407",
"tree": "08c5f513f1677388fcacaa519dca0c9ef00b6d2e",
"scope": "CAN1 sample blob 8731616cf0d5bf02917c76463c49e722b39eb415 PA11/PA12 AF9; CAN2 blob ef8da679c5e7c7163fe2a48a80b6ce8f9d6ecfaa PB12/PB13 AF9. Fitted transceiver options and jumper positions require commissioning inspection."
}
]
}
接入合同拥有字段与资源要求。描述私有 PCB 数据的 Board 包保留在外部产品仓库。公开可复用包位于 boards/;普通包只需 board.json 与 README。仅当维护数据不能表达电气动作时,才增加有界中性 Board 钩子。
通过实际解析器验证¶
从 Nexus 仓库根目录执行,编写前先检查已知合法参考:
python tools/configure/configure.py list-bindings --assembly tools/configure/assemblies/qiming-baremetal-uart.toml
python tools/configure/configure.py check --assembly tools/configure/assemblies/qiming-baremetal-uart.toml
python tools/configure/configure.py explain --assembly tools/configure/assemblies/qiming-baremetal-uart.toml
自己的包在外部完整 assembly 中选择 board_package,以绝对 assembly 路径运行同样命令。相对包路径从人工编写的 assembly 定位。仅 JSON 语法检查不能证明 SoC 身份、时钟、路由或资源兼容。未知字段与未复核路由必须拒绝。
从已复核的私有包创建装配时,显式选择它的时钟和 binding。下面是命令模板:运行前用包中经过复核的事实替换包路径、时钟和 binding。
python tools/configure/configure.py init \
--board-package /path/to/private-board --backend baremetal \
--clock REVIEWED_CLOCK --profile gpio --binding REVIEWED_BINDING \
--instance led --output /path/to/product/assembly.toml
python tools/configure/configure.py provider-check \
--assembly /path/to/product/assembly.toml --json
--board 和 --board-package 必须且只能选择一个。CLI 包路径相对于工作目录解析;生成的 TOML 将其保存为相对于自身目录的路径。解析器拒绝含符号链接的包路径,允许普通父目录引用,因此私有 Board 和产品配置可一起移动,无需把私有事实放入 Nexus。
provider-check 解析同一 typed IR,并在临时目录中实际生成静态 bundle。报告记录 family、完整料号、Board、后端、选定控制器、配置模块路径、事实输入身份和生成文件哈希。可选的 --expect-family 与 --expect-part 拒绝意外选择。resolved_typed_ir 和 static_bundle_emitted 是生成检查,不建立编译、实例行为或物理资格。同 family 实例通过已复核路由和已有 provider 接入;只有实际 SoC 确实需要时才维护新 family 实现。
构建并记录选定范围¶
通过自己的 assembly 和锁定 ARM 工具链配置外部消费工程。裸机与 FreeRTOS 使用独立输出根。检查 resolved claim、向量表/startup、强符号处理函数、ELF/BIN/map 及每个物理 RAM/Flash 预算。Factory 在启动前查找必须纯净,实例状态必须独立。模型/链接测试使用软件 Board 夹具,并准确标注其接线性质。
无设备时准备 HIL 计划。物理资格要求独立复核工位、实际 Board/part/UID/探针/接线、精确镜像和真实原始测量。来源复核的焊盘不建立连接器连通、抗扰或安全电气行为。