2013年,Bruno Pagano 在法兰西公学院讲授了《面向嵌入式系统的 SCADE 6 语言:从设计到编译》 的研讨讲座。

讲座内容的主题与SCADE 6有关。SCADE 6 巧妙融合了多种技术优势:以曾用于空客 A380 的 SCADE 4 的基础语言 Lustre 为核心,借鉴了 Esterel 语言的同步控制理念,同时整合了André C.的 SyncCharts。此外,SCADE 6 新增了数据的函数式处理能力与过程表功能。该语言已集成至一套软件工作平台中,平台包含与高级规范方法(如 Simulink、SysML 等)及软件工程工具(如文档编制、仿真、测试管理等)的接口。SCADE 6 的编译过程需遵循严格约束 —— 其编译器本身已通过 DO-178B 标准的最高 A 级认证。这一认证基于详尽的文档编制与测试工作,在技术层面则依赖于从源代码到目标代码的完整可追溯性机制。而该语言所具备的数学语义,为认证过程提供了重要支撑,使其获得了显著的商业竞争优势。

SCADE 编译(KCG)

B. Pagano在报告中介绍了 SCADE 6 语言及其编译方法,并重点阐述了其中的创新性技术要点:图形到文本的转换、可生成高效代码的调度机制、通过静态类型检测因果关系问题、类型多态性以及数组处理。
Scade编译(KCG)
SCADE KCG的编译流程中,首先将图形形式Scade模型转换为文本形式Scade模型。
在这里插入图片描述
在得到文本形式Scade模型后,将对其进行语法分析。
在这里插入图片描述
语法分析后,进行若干通用属性的分析,比如验证程序中符号唯一性、程序中的符号没有递归定义等。
在这里插入图片描述
通用属性分析后,进行类型分析。

在这里插入图片描述
类型分析后,进行时钟分析。
在这里插入图片描述
时钟分析后,进行因果性分析(ESOP’01)。
在这里插入图片描述
因果性分析后,进行初始化分析(STTT’2004)。
在这里插入图片描述
在程序解析与检查阶段后,将通过“源代码到源代码”的变换,转换为数据流内核语言(LCTES’08)。
在这里插入图片描述
得到时钟化的数据流内核语言表达(clocked data-flow kernel)后,将进行内联展开。
在这里插入图片描述
展开内联后,将对程序结构进行简化。
在这里插入图片描述
程序结构优化后,将进行方程排序与内存声明。通过对程序中的方程进行重新排列(scheduling),使其程序结构接近指令式程序(imperative program)结构,并对程序需要使用的内存进行声明。
在这里插入图片描述
之后程序结构将转换为命令式语言结构。至此,Scade 6的声明式(declarative)语言结构,以编译为命令式(imperative)语言结构。
在这里插入图片描述
之后的阶段,不在具有同步数据流语言编译的特色,与常规经典编译器的处理类似,最终进行C/Ada代码生成。
在这里插入图片描述

Scade 6 – KCG 6 的卡司阵容

Bruno 作为Esterel V7, Scade 6, Swan语言的联合作者,以及SCADE KCG 6的首席,在讲座末尾自豪地展示了Scade 6 – KCG 6 背后的Jean Louis Colaco,Gerard Berry, Marc Pouzet等一众卡司。
在这里插入图片描述

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐