谈谈CP AUTOSAR软件开发的3种工作流

汽车   2024-09-24 08:41   上海  

作者 | 不可说

出品 | 汽车电子与软件




#01

前  言

   

随着汽车技术的飞速进步,尤其是电气化、自动化及互联化的深度融合,汽车行业正经历着一场前所未有的变革。在这场变革中,汽车不再仅仅是机械与金属的简单堆砌,而是转变为集成了高度复杂电子系统、先进算法与智能互联技术的移动空间。这一转变的核心驱动力之一,便是软件在汽车设计与功能实现中日益凸显的主导地位,标志着汽车正式步入了“软件定义汽车”(Software-Defined Vehicle, SDV)的新时代。

在这样的背景下,AUTOSAR(AUTomotive Open System ARchitecture)作为汽车行业广泛采用的软件架构标准,其经典平台(Classic Platform, CP)软件应运而生并持续演进,以更好地适应和推动这一变革。AUTOSAR CP软件通过提供一套标准化、模块化的软件组件和中间件,旨在解决当前汽车开发中面临的诸多挑战,包括但不限于:

  1. 复杂性管理:面对汽车中日益增长的ECU(电子控制单元)数量和错综复杂的软件交互,AUTOSAR CP通过清晰的层次结构和标准化的接口定义,有效降低了系统的整体复杂度,提高了开发效率和可维护性。


  2. 软件重用与模块化:鼓励并促进软件组件的跨车型、跨品牌重用,加速产品上市时间,同时降低开发成本。AUTOSAR CP的模块化设计使得汽车制造商(OEM)和一级供应商(Tier 1)能够灵活组合和定制功能,快速响应市场变化。


  3. 安全性与可靠性:随着自动驾驶等高级功能的引入,汽车软件的安全性变得尤为重要。AUTOSAR CP通过提供安全相关的软件架构、开发流程和验证工具,帮助确保汽车软件的高可靠性和安全性,符合ISO 26262等国际标准。


  4. 互联与数据管理:支持车辆与云端、基础设施及其他车辆的互联互通,AUTOSAR CP通过集成通信协议栈和数据管理功能,为车辆提供强大的信息交换能力,促进新服务和新商业模式的创新。  
 
为了充分利用AUTOSAR CP的优势,各家OEM和Tier 1纷纷建立了基于AUTOSAR的软件开发流程与方法论。这些流程通常包括需求分析、系统设计、软件编码、集成测试、验证与认证等多个阶段,并强调跨职能团队的合作,以确保软件质量、满足法规要求并快速响应市场变化。同时,许多企业还积极参与AUTOSAR的开放合作,共同推动AUTOSAR标准的持续演进,以适应汽车行业不断变化的需求。

         

 

所以本文将探讨下基于模型化(Model-Based Design, MBD)开发AUTOSAR软件架构与软件的工作流区别、特点等。



#02

CP AUTOSAR工作流说明 

   

CP AUTOSAR开发的工作流一般分为自上而下、自下而上与混合模式三种工作流,这三种工作流算是三种种不同的开发方法,它们在项目开发和集成过程中有着显著的区别。下面将详细阐述这两种工作流的具体步骤和特点。  
 

A、自上而下(Top-Down)工作流  



自上而下的工作流示意

1. 定义和架构设计

  • 应用架构设计:首先,在AUTOSAR编辑工具(如Davinci Developer、AutoSAR Builder、ISOLAR-A等(MATLAB新版工具箱也支持))中设计应用架构。这包括定义软件组件(SWC)、可运行实体(Runnable)、接口(Interface)、端口(Port)等元素。
         

 

  • 导出SWC描述文件:设计完成后,将架构SWC信息导出为ARXML文件。ARXML文件是AUTOSAR标准的数据交换格式,包含了类型、接口、端口、可运行实体、事件等详细信息。
         

 

2. 算法实现与模型搭建

  • 建模工具实现算法:使用MBD建模工具(如Simulink)根据ARXML文件中的描述搭建模型,实现算法等应用功能。

  • 生成代码:在建模工具中完成算法实现后,生成符合AUTOSAR标准的代码。
         

 

   
3. 集成与调试

  • 准备基础软件层(BSW):首先,确保基础软件层(如操作系统、服务层、ECU抽象层等)已经根据AUTOSAR标准正确实现并经过验证。这包括检查BSW的版本兼容性、配置正确性以及必要的驱动和中间件的支持。

  • 代码生成与适配:将应用层或中间件层通过模型或手动编码生成的代码,根据BSW的接口规范进行适配。这包括修改数据类型的映射、调整接口函数的调用方式以及配置必要的资源(如内存、中断等)。

  • 集成构建:使用AUTOSAR构建系统(如AR Builder)将应用层代码、中间件代码和基础软件层代码集成在一起,生成完整的软件镜像。此过程涉及链接库的选择、依赖关系的解析以及优化选项的配置。

  • 运行时环境(RTE)生成:在集成构建过程中,RTE生成器会根据软件组件之间的交互关系自动生成运行时环境代码。RTE负责处理组件之间的通信、数据同步以及资源调度等任务,确保软件能够按照设计预期运行。

  • 静态分析:在代码集成后,首先进行静态代码分析,以检查潜在的编程错误、逻辑错误以及安全漏洞。静态分析工具可以帮助开发人员快速定位问题,提高代码质量。

  • 单元测试:对软件中的每个模块或组件进行单元测试,验证其功能是否符合设计要求。单元测试可以独立运行,无需依赖其他模块,有助于快速发现和修复问题。

  • 集成测试:在完成单元测试后,进行集成测试以验证各个模块之间的交互是否正确。集成测试关注于软件的整体功能,确保各模块在集成后能够协同工作。

  • 系统测试:将集成后的软件部署到目标ECU上,进行实际环境下的系统测试。系统测试涵盖功能测试、性能测试、可靠性测试等多个方面,以验证软件在实际应用中的表现。 
   
  • 调试与优化:在测试过程中发现的问题需要进行详细的调试。开发人员使用调试工具(如MATLAB的Simulink Debugger、GDB等)来跟踪程序执行流程、查看变量值以及设置断点等。根据调试结果对代码进行优化,以提高软件的性能和稳定性。

  • 文档记录:在整个集成与调试过程中,详细记录测试步骤、测试结果以及问题解决方案。这些文档对于后续的维护工作具有重要意义,也有助于团队成员之间的知识共享和协作。

4. 下载与测试

  • 下载代码:将调试完成的代码下载到目标ECU中。

  • 测试:在目标ECU上进行全面的测试,包括功能测试、性能测试、可靠性测试等。
         

 

B、自下而上(Bottom-Up)工作流  



自下而上的工作流示意

1. 算法实现与模型搭建

  • 建模工具实现算法:首先,在建模工具(如Simulink)中搭建模型,实现算法等应用功能,或者直接应用其他已经有的、可以在该项目上复用的模型。

  • 导出ARXML文件:将模型中的元素(如类型、接口、端口等)导出为ARXML文件,这一过程也是将SIMULINK元素转换为AUTOSAR元素。   
         

 

2. 定义和架构设计

  • 根据ARXML文件设计应用架构:在AUTOSAR编辑工具中,根据ARXML文件中的描述设计应用架构。这包括创建软件组件、定义可运行实体、接口和端口等元素。
         

 

3. 后续步骤与自上而下相同

  • 与BSW层集成:将生成的代码与基础软件层(BSW)集成,生成运行时环境(RTE)。

  • 调试:对集成后的代码进行调试。

  • 下载与测试:将调试完成的代码下载到目标ECU中,并进行全面的测试。
         

 

C、混合工作流(Round-trip)  



混合工作流示意

混合工作流是一种高效且灵活的软件开发策略,它巧妙地将自上而下的系统级规划与自下而上的详细设计与实现相结合。这种方法首先强调对系统架构的整体规划,确保系统的高层次目标和需求得到明确和满足。同时,它也注重在具体实现层面的灵活性和创新性,允许开发团队根据实际需求和技术可行性,灵活地进行模块或算法的设计、实现与集成。通过这种方式,混合工作流不仅保证了系统的整体一致性和稳定性,还促进了技术创新和快速响应市场变化的能力。   
         

 

1. 系统架构规划与设计

  • 使用AUTOSAR编辑工具进行系统的顶层架构设计,包括定义软件组件、通信接口、资源分配等。

  • 确立系统的主要功能需求、性能指标及非功能需求(如安全性、可靠性、实时性等),为后续开发提供明确指导。
         

 

2. 并行开发与实现

  • 在系统架构规划的同时,利用建模工具(如Simulink、Stateflow)进行算法和应用功能的详细设计与实现。这些工具支持快速原型设计和仿真验证,加速开发进程。

  • 开发人员根据系统架构的划分,并行开发各个模块或子系统,提高开发效率。

  • ARXML文件交换与迭代。

  • 架构设计和各个模块开发之间通过ARXML(AUTOSAR XML)文件进行信息的导出和导入。ARXML文件作为中间媒介,确保了不同开发工具之间的数据一致性和互操作性。

  • 通过不断的导出/导入和修改,形成一个闭环的迭代过程,使系统架构和具体实现之间能够相互完善、相互验证。

3. 与基础软件层(BSW)集成

  • BSW集成,生成RTE。
         

 

   
4. 算法代码集成与调试

  • 将建模工具中验证通过的算法代码转换为C/C++代码,并集成到应用层中。

  • 将集成并调试完成的软件镜像下载到目标ECU中,进行实车或模拟环境下的测试。

  • 根据测试结果进行必要的调整和优化,直至软件满足所有设计要求和性能指标。
       


#03

总  结

   

自上而下和自下而上的工作流在AUTOSAR开发中各有优缺点。
         

 

自上而下方法强调系统架构的清晰性和模块间的接口定义,适用于对系统整体功能有清晰规划的项目;从架构设计开始,有利于整体规划和标准化,但可能在后续实现中遇到与预期不符的问题。
         

 

自下而上方法强调模块或算法的具体实现和快速原型开发,适用于对系统整体架构尚不明确的初期探索阶段;从具体实现开始,更加灵活,但可能需要在后期进行大量的架构调整和优化。
         

 

混合工作流则强调系统架构与具体实现的有机结合,适用于需要平衡系统架构规划与快速原型开发的项目。
         

 

在实际项目中,可以根据项目需求、开发周期和团队经验等因素选择合适的工作流。同时,也可以采用混合式方法,将自上而下和自下而上的优点结合起来,以提高开发效率和软件质量。
   

 
/ END /


汽车电子与软件
每天分享一篇技术文章!
 最新文章