测量资源并准备硬件验收

使用本指南区分链接后的软件成本与物理 MCU 行为。平台提供测量与 HIL 工具;产品选择工作负载、电气限制、安全输出和发行策略。真实设备执行已审查范围之前,任何 Board 都没有实板资格。

先准备固定源码与递归依赖,再为精确选择的装配准备锁定工具链。

测量精确镜像

记录干净源码、装配/resolved 摘要、依赖、编译器和标志。在变更前后构建同一负载。核对实际 ELF/BIN/map 与资源报告,不使用对象数量估算。分别记录 Flash LOAD、Flash 占用范围、各物理 RAM 预留、MSP、任务栈/TCB、队列和 I/O 缓冲区。栈容量不是实测栈高水位。

构建合同维护资源检查。使用维护中的 tools/measurement/ 门禁;执行预算说明范围。速度结论必须包含单位、时钟、输入规模、负载、采样方法和不确定度。DWT 32 位快照需要有界回绕间隔;主机到达时间戳不能证明 MCU cycles 或 IRQ 延迟。

H743 精确内存与缓存所有权参考

FIG-09 是精确 H743 参考。启用缓存的 TX 要求拥有完整 32 字节缓存行,并可达 AXI SRAM;DMA 完成、线上完成和借用结束分别判断。它不授权 RX DMA 或 TCM 放置。

保持同一问题再比较成本

资源回归比较等价的 CPU、ABI、优化、时钟、后端、路由、模式、栈/heap 预算和编译器身份。每项指标使用显式非负增长上限。新增控制器、slot 或模式的比较解释边际成本,不能证明等价实现变小。随比较保留实际 ELF 文件和装载布局报告。

Flash LOAD、RAM 区间、provider 状态、缓冲区和预留 RTOS 存储是不同观察视角;嵌套类别不能重复累加。不能由任意符号名称推断产品栈使用量。动态 high-water mark 需要测量。改变共享操作表组织前,必须审计实际 ELF 变体中保留的符号;没有测得收益,本实验就不能成为拆分生产方法表的依据。

物理 IRQ 延迟和吞吐需要原始采集、明确单位、镜像/测试站身份、时钟及负载。host 测试耗时不是 MCU cycle;观测到的最大延迟不是 WCET。未执行的测量保持 not_executed,不猜测阈值或转换模型结果。

在不操作设备的情况下准备

先配置并构建所选维护装配。以下仓库根目录命令使用梁山派裸机参考的实际输出:

python tools/dev/dev.py configure --preset gd32-liangshan-baremetal
python tools/dev/dev.py build --preset gd32-liangshan-baremetal --parallel 4
python tools/hil/prepare.py     --fixture tools/hil/fixtures/gd32f470_liangshan.json     --resolved build/gd32-liangshan-baremetal/generated/resolved.json     --report /tmp/nexus-hil-preparation.json
python tools/hil/measure.py plan     --fixture tools/hil/fixtures/gd32f470_liangshan.json     --resolved build/gd32-liangshan-baremetal/generated/resolved.json     --report /tmp/nexus-hil-measurement-plan.json

锁定 ARM 编译器必须位于 PATH。检查报告中的型号、引脚、选择模式和 not_executed 项。准备流程不打开串口、不刷写,也不操作电源设备。数值限制和仪器在审查前保持未绑定。G474/H743/U575 软件参考夹具会明确拒绝物理工位准入;未来实板夹具需要独立审查的工具集成。

选定模式 HIL 合同为 H743 开启 Cache 的 SPI4 DMA、使用 IRQ TX 的连续 USART3 RX,以及独立选择的有限 TX DMA/连续 RX 双向模式,另为 U575 有限 USART1 硬件链 TX 和 LPTIM2 RUN 单次计数增加精确准备。选择对应维护中的装配,并分别保留模式、线上、内存和生命周期观察记录。这些协议保留上面的软件参考 fixture 边界;有效计划或合成 parser 测试不提供实板 station 结果。

ThreadX 准备使用独立采集合同,覆盖任务、IRQ 唤醒、上下文、栈、deadline、生命周期和 fail-stop。物理计划必须选择三块受维护 M4 Board 之一;Native 只建立主机软件行为证据。通过 tools/hil/os_acceptance.py plan 从精确解析后的 ThreadX 配置生成 OS 计划。这七项不会沿用 FreeRTOS 低功耗验收合同。在真实设备提供必需观察记录且完整 station 准入成功之前,计划仍为 prepared_unbound/not_executed。

只执行真实且经过审查的工位

将实际观察的 PCB/型号/UID、探针、稳定串口路径、接线和供电绑定到精确 ELF、resolved 配置与资源报告。锁定采集工具、操作配方、仪器和数值上下限。遵守维护中的 HIL 采集合同:识别、刷写、验证、复位、串口和清理。失败保留原始日志;清理失败继续隔离保留工位,并要求实物检查。

采集完成只表示执行过,尚未取得资格。分别验证实际基本功能检查、测量和 OS 记录。不得合成物理跟踪记录或将软件模型当作 HIL。资格只覆盖已记录观察,不证明未观察的 WCET、电气安全或产品发行。

比较两份已准入的原始测量

实际采集后,比较两份已有原始记录及其 station 准入。从同一固定源码根目录执行,使用自己拥有的新报告路径:

python tools/hil/measure.py compare \
    --baseline-raw /path/baseline-raw.json \
    --baseline-admission /path/baseline-admission.json \
    --candidate-raw /path/candidate-raw.json \
    --candidate-admission /path/candidate-admission.json \
    --report /path/new-comparison.json

重新验证两份准入和原始 trace,包括允许的时效(--maximum-age-s 默认为 86400)。比较要求硬件、station、fixture、有效配置 profile、负载字节、时钟、负载状态、执行者、IRQ 策略、测量方法、校准、分辨率、观测窗口及各指标样本数一致。实现对比允许源码和 ELF 身份不同,采集专属的 DWT epoch 也可以不同。源码溯源与有效配置相等性分开保留。改变负载或模式回答的是另一个问题,此入口会拒绝。

报告保留原指标及带符号的最小值、最大值和均值差量。成功时 status = compared、physical_status = comparison_only:它只比较已采集观测,从不操作设备。它不会把某个变化方向标为更优,不建立统计显著性、不推断 WCET,也不提升候选资格。合成回归 trace 只验证比较合同。没有实际原始采集时,物理测量仍为 not_executed;不编造基线值或阈值。