3. 实时系统基础
在AURIX多核系统中,“实时”并不等于“快”,而是指系统必须在规定的时间窗口内给出正确结果。一个任务即使计算结果完全正确,只要错过了截止时间,在实时语义下同样属于失败。因此,实时系统工程的核心不是追求平均性能,而是对最坏情况下的时间行为进行可证明、可测量、可约束的设计。
一、实时性的定义与两类约束
实时性包含两个维度:功能正确性与时间正确性。功能正确性要求输出值正确;时间正确性要求输出在截止时间之前产生。二者缺一不可。根据错过截止时间的后果,实时系统通常分为硬实时、软实时和固实时三类。
- 硬实时:错过截止时间会造成不可接受后果,如安全气囊点火、电机FOC电流环、刹车控制。必须保证最坏情况响应时间WCET满足截止时间。
- 软实时:偶尔超时只降低服务质量,如车载娱乐音视频、仪表刷新。允许一定概率的超时,但需控制超时比例。
- 固实时:介于两者之间,结果在截止时间后仍有价值但价值迅速衰减,如自适应巡航的感知融合。
二、任务周期、截止时间与释放抖动
周期性任务是实时系统的基本调度单元。任务τᵢ通常用四元组描述:(Cᵢ, Tᵢ, Dᵢ, Jᵢ)。其中Cᵢ为最坏执行时间,Tᵢ为周期,Dᵢ为相对截止时间,Jᵢ为释放抖动。在AURIX中,这些参数直接映射到GPT12、STM、GTM定时器触发的任务,以及中断服务例程的触发间隔。
| 参数 | 含义 | AURIX典型场景 | 约束关系 |
|---|---|---|---|
| Cᵢ | 最坏执行时间WCET | FOC电流环约8μs | 需实测+静态分析 |
| Tᵢ | 任务周期 | PWM载波周期100μs | 由GTM/STM配置 |
| Dᵢ | 相对截止时间 | 电流环D=T=100μs | D≤T为隐含截止 |
| Jᵢ | 释放抖动 | 中断延迟、核间同步偏差 | 影响响应时间上界 |
当Dᵢ = Tᵢ时称为隐含截止时间,这是最常见的设计假设;当Dᵢ < Tᵢ时称为约束截止时间,调度分析更复杂;当Dᵢ > Tᵢ时称为任意截止时间,可能出现同一任务多实例并存。
三、抖动、响应时间与利用率
释放抖动指任务实际释放时刻相对理想周期时刻的偏差,来源包括中断延迟、核间通信延迟、定时器分辨率、调度器排队等。抖动会直接放大响应时间上界。对于固定优先级调度,响应时间Rᵢ可通过迭代公式求解:
Rᵢ⁽⁰⁾ = Cᵢ + Jᵢ
Rᵢ⁽ᵏ⁺¹⁾ = Cᵢ + Jᵢ + Σ_{j∈hp(i)} ⌈(Rᵢ⁽ᵏ⁾ + Jⱼ)/Tⱼ⌉ · Cⱼ
迭代至 Rᵢ⁽ᵏ⁺¹⁾ = Rᵢ⁽ᵏ⁾ 或超过 Dᵢ 判定不可调度
其中hp(i)表示优先级高于τᵢ的任务集合。该公式体现了干扰累积效应:高优先级任务越多、周期越短、执行时间越长,低优先级任务的响应时间越大。CPU利用率U = Σ Cᵢ/Tᵢ,是判断系统负载的快速指标,但U < 1并不保证可调度,必须结合响应时间分析。
四、案例:AURIX三核电机控制的时间预算
某AURIX TC397电机控制器中,CPU0运行FOC电流环,周期100μs,WCET约8μs;CPU1运行速度环,周期1ms,WCET约30μs;CPU2运行CAN通信与诊断,周期10ms,WCET约200μs。若电流环中断被CAN接收中断阻塞,且CAN ISR执行时间达15μs,则电流环响应时间可能从8μs恶化到23μs以上。若再叠加核间同步抖动J=5μs,R可能接近28μs,虽仍小于100μs,但余量已从92μs压缩到72μs。
五、复盘与设计检查清单
- 每个任务是否明确标注Cᵢ、Tᵢ、Dᵢ、Jᵢ四个参数?
- WCET是否通过实测与静态分析双重确认,而非仅凭经验估计?
- 是否计算了最坏响应时间Rᵢ,并验证Rᵢ ≤ Dᵢ?
- 中断延迟、核间通信、DMA抢占是否计入抖动Jᵢ?
- 是否存在优先级反转风险,是否使用优先级继承或天花板协议?
- 多核共享资源访问是否引入额外阻塞时间,是否纳入响应时间分析?
实时系统设计的本质是把“时间”当作一等公民。在AURIX多核平台上,任务周期由GTM/STM精确产生,截止时间由控制算法与安全需求决定,抖动来自中断与核间同步,响应时间则由调度与干扰共同决定。只有把C、T、D、J、R五个量统一建模并持续验证,才能让多核实时系统从“能跑”走向“可证明地按时跑”。