SoC 执行预算

作者装配与不可变解析 IR 选择精确控制器模式、容量及 clock profile。本文件说明如何审查执行成本,不是另一能力 registry 或配置输入。派生能力矩阵持有维护中的选择投影。产品调度和过载策略留在外部。

工作量、时间与完成

有限工作次数不是实测时间上限。启动 loop 使用显式 poll limit,因为单调时钟可能尚未存在。运行时绝对 deadline 属当前启动时钟域。IRQ 延迟、DMA 仲裁、总线 stall、通知延迟及 service 间隔须对精确固件/硬件负载测量。

每种所选模式须说明最大 IRQ 工作、任务 service 工作、critical-section 范围、调用方存储及终止谓词。排空 deadline 限制进入隔离前时间,绝不授权释放借用内存。执行者必须继续 service/recovery,直到硬件、IRQ、队列及观察者真正撤销引用。

当前机制

模式族

有界工作与进展

最终所有权条件

GPIO

直接授权寄存器命令;toggle 需写入者串行

引脚释放前 join 外部直接写入者

UART IRQ 字节/事件

每 IRQ 最多一个 TX/RX 硬件字节;read 每短 critical section 复制一个环元素

真实 wire TC 或已审 reset abort、TX IRQ 撤销及已捕获 wake join

UART IRQ 数据块

每 IRQ 一个硬件字节;block acquire/release 显式

最终 prefix 发布、硬件源撤销且全部 consumer loan 归还

UART 有限 TX DMA

每 IRQ 处理一个选定 channel 的终止事实;任务 service 独立观察 DMA 与 UART

DMA engine/source 关闭和真实 UART wire 完成后才 SETTLED

UART RX DMA 空闲/连续与双向

选定 bank/IDLE/error 事实;调用方提供有限 buffer/block 和替换容量

memory engine 停止、稳定 prefix/bank 已证明;保留 RX loan 和独立 TX drain

SPI 短轮询

每调用有限长度和绝对 deadline;无 IRQ 模式回退

整个 CS 区间 controller 和 endpoint 均保留所有权

SPI 有限全双工 DMA

两个所选 engine;任务 service 检查 memory 和 shifter 事实

两个 DMA 源撤销、wire idle,之后才释放 CS 并 SETTLED

I2C 轮询

有限 message/byte 数;已审 ACK window 与有界 STOP 工作

STOP/master/line 状态满足精确实现合同

I2C IRQ/DMA 消息

共享 V1 IRQ 最多消费两个 DATA 字节;DMA 观察所选方向

protocol STOP、wire/master 状态及 DMA/source 撤销全部成功

ADC 轮询/触发数据块

每次任务侧 rearm 最多配置 scan;有限 block 容量

trigger/conversion 停止、DMA 实际关闭,之后才发布/回收

ADC 连续触发数据块

double-bank 终止事实和显式 replacement;不覆盖借出 block

producer 与 DMA 源关闭;全部 outstanding block loan 归还

EXTI

只按生成确定次序访问所选 line;每 pending line 一个 queue 事实

本 line mask/ack、活动 shared vector join、wake 撤销

PWM/高级 PWM

固定授权 channel/period 操作和锁存 break

timer 所有权释放前进入已审 inactive 输出

定时器捕获

有限所选 channel 与可见 capture/overflow 事实

event 存储释放前 capture IRQ/source 撤销

经典 CAN

三个 TX mailbox;两个 RX FIFO 各最多三帧初始队列

各 mailbox abort/terminal 事实、INAK/RX drain 及 publisher join

USB FS 设备 PIO

每 IRQ 最多八个 RX header/128 payload word;进展扫描所选 endpoint 数

endpoint 请求排空、FIFO/source 撤销、publisher join 和 clock release

原始 Ethernet/MDIO

任务进展由所选 descriptor 数限定;MDIO 有绝对 deadline

descriptor/DMA 所有权撤销、IRQ publisher join、全部 RX loan 归还

内部 Flash

有限已审物理操作与绝对 deadline;geometry 为芯片特定

hardware busy 清除或明确保留恢复责任

看门狗

有限 enable/feed 操作;使能不可逆

stop 绝不虚构释放活动硬件 watchdog

精确实现与配置限值保持权威:

  • UART:soc/*/drivers/uart*.c;G474 和 U575 使用 IRQ 字节。H743 RX 也使用 IRQ 字节;显式选定的有限 TX DMA 有独立内存/Cache 与排空合同。F407/G474/H743/U575 的线侧排空余量为 20000000 / baud + 100 微秒。GD IRQ 使用已审 reset-abort,不套用 ST 线侧排空公式。

  • SPI:soc/*/drivers/spi*.c;有限 DMA drain 余量 200 微秒。

  • I2C:soc/common/i2c_v1_async.c 与 SoC 包装;V1 async drain 余量 1,000 微秒,polling STOP 有独立有限工作。

  • ADC/EXTI/timer:所选 SoC driver 和私有状态;scan、queue、channel 限值来自解析输入或显式调用方存储。

  • CAN/USB/Ethernet:io/src/can_controller.c、usb_device_controller.c、eth_mac.c;poll/drain 限制和所选容量在冷态准入校验。IRQ 通知只是提示,绝不替代谓词。

成本审查与证据

将精确解析配置、编译器身份、flags、链接 ELF/map、资源预算及 retention 输出一同保留。比较等价 CPU/ABI、backend、clock、内存布局和容量。源码指令数、object 大小或不同容量镜像不能建立等价整镜像收益。分别报告 Flash、static RAM、reservation 和调用方存储。反汇编是真实工具输出,不是周期测量。

tools/measurement/soc_costs.py 观察实际链接函数与 ELF 资源成本,保留完整原始命令凭据及 input/tool hash。比较拒绝 routes、bindings、claims、backend、capacity profile 改变,避免把它们静默归为实现优化成本。Empty/selected、baremetal/FreeRTOS 维度是有用选择成本报告,但不是相同 profile 回归比较。SoC 执行记录标明已完成观察的 source scope 与 pending 最终基线。

中断/并发行为变更时,GoogleTest/GoogleMock 调用真实生产源码,只模型化外部 register/CPU port。记录实际 RED 后 GREEN,保留 admission、loss ordering、cancel、quarantine、wake 及 instance isolation 回归。ARM budget/retention 证明真实链接。软件检查不认证物理 IRQ latency 或 DMA throughput。

没有所选 producer rate、storage、hardware 和 interference budget,就不声明最大 service interval 数值。外部产品须为该间隔及过载策略建立资格。错过 service deadline 不能撤销接受的 request 或 block loan。当前物理测量均未执行,直到真实工位记录。