软件功能安全开发中主要针对的是软件的系统性失效。这里面主要是针对各阶段开发活动提出了相应的规范性要求,并对不同ASIL等级软件开发,所需要进行的具体测试方法和内容。 图1避免软件系统性失效 软件功能开发遵循V模型开发,即从需求开始,分层次进行软件的架构设计、单元设计和具体的代码开发。与每阶段设计开发对应的是相应的集成和测试工作。 图2 软件V模型开发 ISO26262里对软件开发的很多具体规范性要求很多,并且比较详细。但对这些规范的合规性检查就是不太容易操作的事情了。对于代码的静态分析和语义代码分析,在开发中可以借助专业工具依据具体的规范标准(如MISRA-C等)进行检查,工具可以帮助查找所有错误和不符合项。而对于一些设计规则,如软件架构设计要注意层次性,高内聚,低耦合。这种指导性的要求,在实际开发中,开发者不太容易对开发产物进行准确评价。这里简单介绍一下业界使用比较广泛的架构设计标准和设计思路。 汽车电子领域最常用的软件架构设计标准之一是AUTOSAR(AUTOmotive Open System Architecture)。AUTOSAR标准是2003年欧洲宝马为首几家OEM联合一些Tier1成立的联盟,目标是开发适用于汽车电子开发的支持分布式、功能驱动的汽车电子软件开发方法和软件架构标准化方案。AUTOSAR采用了分层式的设计,实现了软件和硬件的分离。 AUTOSAR通过中间层RTE(Runtime Enviroment)作为虚拟总线,成功的实现上层应用软件层(Application Software Layer)和下层基于硬件的基础软件层(Basic Software)。采用AUTOSAR架构设计,在进行应用层软件开发时,可以不受硬件ECU的限制,摆脱了对硬件的依赖。RTE集合了所有AUTOSAR提供的通信机制。应用软件被划分为各个组件,通过系统配置,软件组件会被映射到指定的ECU上,而组件间的虚拟连接也同时映射CAN,FlexRay,MOST等总线上。软件组件与RTE通信,是通过预先定义好的端口来实现的。各软件组件之间不允许直接互相通信,RTE层封装好COM等通信层BSW后,为上层应用软件提供RTE API,软件组件再使用端口的方式进行通信。 图3 AUTOSAR架构简介 AUTOSAR架构中共分六层: 1.应用软件层(Application Layer) 2.运行环境RTE(RuntimeEnvironment) 3.服务层(Services Layer) 4.ECU抽象层(ECU Abstraction Layer) 5.微控制器抽象层(MicrocontrollerAbstraction Layer) 6.复杂驱动(Complex DeviceDrivers) 图4 AUTOSAR 分层 微控制器抽象层是处理控制器依赖的各功能,包括IO驱动、通信驱动、内存驱动和微控制器驱动。这一层也相当于传统嵌入式开发中的底层驱动。 ECU抽象层是基于ECU依赖的各功能,这一层经过微控制器抽象层的隔离,已经是不依赖特定的微控制器了。ECU抽象层主要包括IO硬件抽象层、通信抽象层、内存抽象层和车载设备抽象层。ECU抽象层将微控制器抽象层各功能抽象为ECU层的功能。 服务层主要包括了通信服务、内存服务和系统服务。这一层可以隔离大部分ECU依赖的功能。而在开发中,一些极高实时性的传感器采样、执行器控制等功能,需要通过专门的复杂驱动来实现。 软件开发中采用AUTOSAR架构,成功的将应用层与底层隔离开了。这样车厂或者Tier1可以专心进行与产品功能直接相关的应用层开发,在应用层上建立起区别于对手的特征。对于中间层和底层,可以交由专业的供应商来完成,而且这一部分有越来越趋同的现象。中间层和底层对用户是不可见的,车厂对于这部分工作甚至可以采用共同的平台供应商,这样对成本和产品成熟、稳定性都是有很大帮助的。 当然,上面提到的AUTOSAR的优势只是理论上的。在实际产品开发中,应用层开发方或者最终产品负责方是不可能真的做到完全不管中间层和底层实现的,只是这种参与和投入程度相比传统的方式大大减少。作为系统开发和集成方,对于功能安全产品开发,其负责的工作不仅包括软件开发,也包括达到标准对硬件指标的要求。而对于硬件设计,其是与采用的控制器型号、外围驱动和通信设备、甚至电容电阻是直接相关的。对于硬件相关的诊断,大多需要相应的软件功能来调用和实现。对于很多软件功能诊断,同样会对硬件设备提出要求。在系统架构设计上,需要兼顾软硬件需求,合理设计系统架构。汽车设计中常采用的架构包括从传统发动机设计演变而来的EGAS三层架构。在功能安全的系统架构设计中,我们可以考虑借鉴类似EGAS这种业界比较成熟的架构设计思路。 图5 EGAS三层架构 (本文及功能安全开发系列文章中,所有例子和相关参数均为个人交流使用,所有均为假设,无任何项目相关或验证。仅供参考学习) |
|