ARM 处理器逐渐拓展应用
伴随移动的风潮,加上持续扩展的生态系统提供支持,基于ARM核心处理器的应用已从智能手机与嵌入式等器件,拓展到基础架构设备及数据服务器。现在,设计人员也逐渐开始将它们导入安全相关的应用。
这类应用涵盖了工业(马达控制、工厂自动化、远距监控);汽车(底盘控制、车身与安全、仪表板、智能传感器、引擎控制、防抱死刹车);医疗(注入泵、起搏器、病患监控);铁路(信号与通讯控制);核能(控制面板、马达控制、系统监控)与航空电子等领域。
ARM处理器横跨消费类与数据服务器应用领域,打入汽车电子、工业电子等各种产业,然而在这些领域当中,IEC 61508、ISO 26262等标准所规范的功能性安全需求,为微控制器软件开发社群带来了新的压力。
整体而言,系统对智能功能的需求增加,带动了ARM处理器为市场所广泛采用,但这也要求业者必须具备整合能力与弹性以降低成本,提供更多功能,并随时更新系统。与此同时,许多采用硬编码逻辑来提供各种功能的设计,现在都逐渐整合到由软件所控制的32位微控制器,从而又产生出新的问题。
设计重心逐渐移转至微控制器与程序编码功能,也同时将安全问题推向软件领域,让安全应用程序符合IEC 61508标准的责任,也因此落在软件开发人员的肩上。这套标准原本规范的是电气与/或电子系统的功能安全性,现在则同时涵盖安全系统的电子组件。
IEC 61508及相关产业专用标准,能协助安全相关的电气、电子与可编程系统符合最新要求。
功能性安全能让安全相关系统针对输入做出正确响应,进而避免不必要的直接或间接风险以及损伤。
由于IEC 61508标准用语模糊,因此衍生出各种产业专用的标准,例如专供铁路运输使用的EN50126/8/9、医疗器件专用的IEC 60601、核能专用的IEC 60880,还有陆上交通工具专用的ISO 26262。 ISO 26262适用于3,500公斤以下量产客用车的安全相关系统,但不包括残障专用等特殊用途车辆。
一般汽车里的微控制器往往多达150个,而随着消费者导向的导航系统被整合到驾驶辅助、运动检测系统、推进、车载动态控制与主动/被动安全系统时,汽车逐渐成为运算装置涉足安全系统的一个研究案例。
安全系统开发人员所面临的压力与日俱增,汽车也成为典型案例。相较于过去动辄长达3到10年的产品生命周期,现在还得配合消费类装置(12到18个月)的设计周期。
汽车里的150个微控制器都仰赖软件程序运转,有时甚至像编译器这样的基本组件也会造成系统故障,只因注入了不容易发现的错误,并在功能测试阶段有可能无法检测。
这会对系统持续造成风险,但只要符合IEC 61508标准,再加上ISO 26262,就能将风险降至可以容忍的程度。举例来说,IEC 61508最佳实务准则建议一开始就要使用可以信赖的工具。
一般普遍认为编译器是T3分类的离线支持工具,表示编译器会直接或间接影响安全系统的可执行代码,因此选择编译器“是有其正当性的”。
我们可以藉由通过验证且正在使用的实证,来展现工具的成熟度与稳定性,再加上来自业界专家的第三方评估以及厂商担保,藉此证明选择的正当性。
最佳实务准则还能加以延伸,用来验证输出以及语言子集的使用,像是MISRA C/C++。测试目标所使用的软件自然重要,但要如何得知已经测试了每种可能发生的状况?毕竟没有执行的程序代码就无法测试。这时就要利用代码覆盖率分析,来辨识尚未执行的程序代码,进而确保整个应用程序均已测试完毕。分析代码覆盖率可利用源代码插装或跟踪数据,因为串流跟踪的影响程度最小。
至于语言子集,在许多案例当中,高阶程序设计语言的定义不完整或模糊不清,造成不同编译器的行为也有所不同。
“严格模式”,还有MISRA C/C++之类的语言子集,就是为了消除这些模棱两可的状况所设计,同时还能:确保使用的语言与标准语言一致;替未定义的行为设定规则;移除免工具使用选项;强制统一编码式样(例如:/*.。.*/ versus //);改善可读性;并缩小整体所需测试范围。
ISO 26262比IEC 61508更进一步,提供的架构更讲究细节,在这样的架构下可考虑采用以其它技术为基础所开发的安全系统。涵盖范围从产品周期管理到供货商关系,但对于软件开发人员来说,它提供了一种专为汽车设计、以风险为基础的方法来评判完整性,而这套方法就称为汽车安全完整性等级。
使用ASILs明确定义ISO 26262的适用要求,以避免不合理的剩余风险,同时提供验证需求与确认措施,以确保达到足够且可接受的安全程度。