Technical articles
编译器可靠性验证
一、概述
以计算机技术为核心的嵌入式系统,可以与各种复杂的设备或系统有机地结合在一起,从而非常灵活地实现各种监测、控制和管理功能,已在各行各业中被广泛应用。嵌入式软件作为嵌入式系统的核心,其安全性和可靠性尤为重要,尤其在高安全性、高可靠性领域更是被重点关注。嵌入式软件想要在嵌入式硬件中运行,就需要将高级语言翻译为机器语言,此过程是离不开编译器的。
本质上讲,编译器是实现精密算法的复杂软件,它是产生代码的工具。编译器主要是将高级语言写的程序翻译成底层芯片能够认识的二进制码,主要包括编译器、汇编器、链接器。如果编译器有问题,可能导致生成可执行程序的行为和源程序语义不一致,使得程序出现意想不到的错误,这种错误对应用程序开发人员来讲,不容易被检测和发现,容易导致重大事故。尤其对于安全关键领域,如轨道交通、汽车电子、航空航天、工业控制等领域,编译器问题更是不容忽视。
二、各行业标准中也对编译器提出相关要求:
ISO 26262 标准第 8 部分第 11 节规定,用于创建组件的工具也需要经过资格认证,编译器就是这样一种工具。
IEC 61508标准第 3 部分的第 7.4.4 节规定了对支持工具和编程语言的要求。编译器是T3类的“软件离线支持工具”。要求中规定应对T2和T3类离线支持工具进行评估,以确定对这些工具的依赖程度以及可能影响可执行软件的工具的潜在故障机制。
在EN 50128标准的第6.7节中,对T1、T2、T3三种不同的工具类别给出要求。而属于T3类工具的编译器,需要对其进行说明、测试与验证。
三、针对不同行业标准要求,国内在安全关键领域的编译器主要有两种解决方案:
从国内目前的发展状况来说,第二种解决方案正在逐渐成为主流,且了解到已有多家单位推出了自己的编译器,无论是基于开源代码,还是基于GCC等的二次封装,但由此也面临着编译器可靠性验证问题,即如何确保编译器本身的正确性,且使得编译器能够满足各行业认证标准成为新的难题。
15vip太阳集团提供的SuperTest编译器测试和验证套件提供了一个完整的编译器测试与验证环境,使客户能够达到ISO语言和功能安全标准所要求的软件质量水平。
四、SuperTest 是面向C 和 C++ 编译器及库的测试与验证套件,伴随 (ISO) 语言规范已有 30 多年的历史。它是一个完整的验证环境,具有:
同时支持对标准C库的测试验证及鉴定。15vip太阳集团可以提供SuperGuard C 库安全认证套件,它是 C 标准库的基于需求的测试套件,在从 ISO C 语言定义派生的需求和各个库测试之间具有完全的可追溯性。它旨在支持对安全关键型应用的 C 标准库实现进行鉴定,包括第三方 (COTS) 和自行开发或维护的 C 库实现。
五、SuperGuard具备如下特性:
总结
本质上讲,编译器是实现精密算法的复杂软件,它是产生代码的工具。编译器主要是将高级语言写的程序翻译成底层芯片能够认识的二进制码,主要包括编译器、汇编器、链接器。如果编译器有问题,可能导致生成可执行程序的行为和源程序语义不一致,使得程序出现意想不到的错误,这种错误对应用程序开发人员来讲,不容易被检测和发现,容易导致重大事故。尤其对于安全关键领域,如轨道交通、汽车电子、航空航天、工业控制等领域,编译器问题更是不容忽视。
技术文章