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。当前物理测量均未执行,直到真实工位记录。