嵌入式系统编译优化与电源管理技术解析
1. 编译器与时序分析的协调
如今,几乎所有可用的编译器都不包含时序模型。因此,实时软件的开发通常需要采用迭代方法:使用不了解任何时序信息的编译器对软件进行编译,然后使用如 aiT 这样的时序分析器对生成的代码进行分析。如果不满足时序约束,则必须更改编译器运行的某些输入,并重复该过程,这就是基于“试错”的实时软件开发方法。
这种方法存在几个问题:
- 所需的设计迭代次数最初是未知的。
- 该方法中使用的编译器是“优化”的,但除了代码大小之外,无法精确评估目标。
- 由于现代处理器复杂的时序行为,编译器编写者对其“优化”能改善代码质量的期望缺乏证据支持。
- 基于“试错”的实时软件开发要求设计者找到对编译器输入的适当修改,以使最终满足实时约束。
为避免这种“试错”方法,可以将时序分析集成到编译器中。多特蒙德工业大学开发的最坏情况执行时间感知编译器 WCC 就是基于这一目标。WCC 将时序分析器 aiT 集成到用于 TriCore 架构的实验性编译器中,其整体结构如下:
graph LR
A[C 源代码] --> B[ICD - C 编译器基础设施]
B --> C[高级中间表示 HL - IR]
C --> D[优化 HL - IR]
D --> E[代码选择器]
E --> F[低级中间表示 LLIR]
F --> G[LLIR2CRL 转换器]
G --> H[aiT 时序分析器]
H --> I[CRL2L