AUTOSAR架构下,持续集成CI的最佳实践

news/2024/10/24 13:43:55

随着汽车电子技术的快速发展,汽车软件的复杂性与日俱增,如何确保软件开发的高效性与稳定性成为了一个关键问题。为了解决这个问题,许多汽车企业和供应商逐渐引入了AUTOSAR架构,并在此基础上构建了持续集成(CI)流程。今天,我们就来探讨一下基于AUTOSAR架构的CI流程实践,并通过对流程的详细讲解,展示其在实际开发中的重要性和优势。

 

 

什么是AUTOSAR架构?

 

 

 
 
 

首先,AUTOSAR(Automotive Open System Architecture)是一个开放的、标准化的汽车电子软件架构。它旨在通过提供一个标准的接口和抽象层,减少复杂的汽车软件开发流程,并提升软件的可复用性、模块化和可维护性。AUTOSAR架构中的核心模块可以分为应用软件层(ASW)、基础软件层(BSW)和运行时环境(RTE)、微控制器四个层面,它们各自承担不同的功能。

 

 

为什么要在AUTOSAR架构中引入CI?

 

 

随着汽车软件规模的日益庞大,软件开发的复杂度也不断增加,传统的开发方式往往难以应对复杂系统的集成挑战。尤其是在高度模块化的AUTOSAR架构下,软件的各个层次和模块相互依赖,任何代码变更都有可能影响整体系统的稳定性。为此,开发团队需要一种高效的机制来快速检测问题,确保每次代码修改后的系统都能正常工作。这时,持续集成(CI)流程的重要性便凸显出来,它能够自动化地进行代码集成、测试和反馈,确保软件的质量与稳定性。接下来,我们将介绍在AUTOSAR框架中CI实现的详细流程。

 

CI流程简介

 

持续集成(CI)是一种软件开发实践,它强调开发者频繁将代码集成到共享的代码库中,并通过自动化测试和构建系统,确保每次集成都能够得到及时的反馈。那么在本次介绍中的CI在基于AUTOSAR架构的软件开发中,CI流程不仅仅是一个简单的自动化工具链,而是保证软件稳定性和一致性的关键所在。

虽然硬件在环(HIL)测试在开发流程中也扮演着重要角色,但它属于硬件验证的范畴,并不包含在CI流程之内。因此,本文中的CI流程将专注于软件层面的集成和测试,不涉及HIL测试部分。

在本次介绍的CI流程实践中,AUTOSAR框架的测试主要集中在三个部分:

  1. ASW(应用层):这一层主要基于MATLAB模型进行开发,因此在测试过程中,重点是对模型的验证。在模块开发的早期阶段,测试的重点是确保模型本身的正确性和稳定性。当模型测试通过后,该模型模块会被集成到整个开发工程中进行编译,以此验证其与最新代码层是否兼容,并确保功能正常。这一过程可以保证每个模块在合入到整体系统前已经过充分验证。
  2. BSW(基础软件层):这里的BSW层指的是通过框架生成软件自动生成出的代码,通过AUTOSAR架构生成的代码来实现软件功能的更新和维护。每当BSW层的代码更新时,CI流程会自动触发项目的整体编译,从而验证所有基础功能在最新更新下的一致性和稳定性。这一机制确保了基础软件层的变更不会破坏系统的整体功能。
  3. CDD(复杂设备驱动层):该层主要负责复杂设备的驱动程序开发。CDD层通常涉及手写代码,用来满足客户的特定需求。每当CDD层的代码更新后,CI系统会自动执行代码分析和验证,确保新编写的驱动程序与系统的其他部分协调工作,并符合功能要求。

通过这三大模块的分层测试和自动化验证,CI流程确保了AUTOSAR架构下的软件在开发和更新过程中始终保持高效和稳定。

下图展示了一个典型的基于AUTOSAR架构的CI流程,通过Jenkins调度服务器和Gitlab版本管理工具实现模块的自动化集成和测试。

 
 
 基于AUTOSAR架构的CI流程实践
 

从流程图中可以看出,整个CI流程主要围绕ASW模块变更、BSW模块变更和CDD模块变更展开,并且根据不同模块的变更类型,分别定义了相应的测试和编译步骤。接下来,我们逐一对各个模块的CI流程进行讲解。

1. ASW模块变更流程

ASW(应用软件)模块的变更通常是由模型开发人员和模型测试人员手动触发的。当ASW模块发生变更时,CI流程将执行一系列的静态和动态模型测试、代码生成以及编译,确保变更后的代码不会引入新的问题。

1. 静态模型测试:使用静态模型测试工具(MXAM)导入模型并进行测试,确保模型的完整性和正确性。

2. 动态模型测试:通过动态模型测试工具(TPT)执行测试用例,并生成测试报告上传到版本管理系统,最后通过邮件通知到对应的模型更改人员。

3. 代码生成:通过MATLAB进行模型生成代码,将其上传至版本管理系统。

4. 编译:完成模型生成代码后,该模型模块代码会被集成到整个开发工程中进行编译,以此验证其与最新代码层是否兼容,并确保功能正常。

在ASW模块的CI流程中,Jenkins服务器会根据预定的触发条件,如代码提交或配置文件的变化,自动执行上述步骤,并将结果通知给相关开发人员。

2. BSW模块变更流程

BSW(基础软件)模块的触发后的执行流程相对简单,通常包括整体工程的编译以及编译后的结果自动上传,其主要目的是确保基础软件的功能和性能在各个开发阶段的一致性。

1. 代码上传:从拉取最新的代码,开发人员根据变更需求对代码进行调整并重新上传。

2. BSW模块编译:从版本管理系统中拉取开发上传好的代码,然后进行编译,最后将编译结果传递到版本管理系统中,并通知到对应的开发人员。

3. CDD模块变更流程

CDD(手写代码)模块的变更与测试也在整个CI流程中占据重要位置。其主要作用是通过静态代码测试和动态代码测试来验证组件的正确性以及组件的合规情况。

1. 静态代码测试:通过Helix QAC工具对导入的代码进行静态分析,检查代码的命名规则和编码规范是否符合标准要求。

2. 动态代码测试:使用VectorCAST工具对组件进行动态测试,并生成测试报告上传到版本管理系统供开发人员查看。

3. 编译:完成模型生成代码后,该模型模块代码会被集成到整个开发工程中进行编译,以此验证其与最新代码层是否兼容,并确保功能正常。

在CDD模块的CI流程中,Jenkins服务器会根据预定的触发条件,如代码提交或配置文件的变化,自动执行上述步骤,并将结果通知给相关开发人员。

  1. 基于AUTOSAR的CI流程优势

通过上述流程的详细解读,我们可以看出基于AUTOSAR架构的CI流程具有以下几个显著的优势:

1. 自动化测试与集成:通过Jenkins服务器自动执行代码的集成、测试和发布流程,减少了开发人员和测试人员的手动操作,提高了开发效率。

2. 代码质量保证:静态代码分析和动态测试用例的自动化执行,确保了代码的规范性和正确性,极大地降低了潜在的代码缺陷风险。

3. 及时反馈机制:CI流程中的每个步骤都伴随着详细的报告生成与邮件通知,使得开发人员能够及时获取变更结果,快速进行问题定位和修复。

4. 固定的文件结构:由于AUTOSAR架构中的文件结构是固定和标准化的,CI链路能够很好地利用这一特点,实现高效的集成和自动化测试。这种标准化结构使得代码的组织和管理更加一致,有助于CI流程的自动化处理,进一步提升了集成效率并减少了出错的可能性。

 

实践中的挑战与建议

 

虽然基于AUTOSAR架构的CI流程在实际应用中展示了极大的优越性,但在实施过程中也可能会遇到一些挑战:

1. 工具链集成复杂:由于AUTOSAR涉及多个不同的工具,如MXAM、HeliX QAC、TPT、VectorCAST等,工具链的集成和维护需要耗费较多精力。建议企业在实施过程中设立专门的CI工具链维护团队或让供应商进行链路搭建,后续可以通过内部人员进行维护,确保工具链的高效运转。

2. 团队协作要求高:CI流程的顺利实施需要开发、测试、运维等多方团队的紧密协作,因此在实践中应加强团队之间的沟通与协同,定期进行流程优化与改进。

 

 

结语

 

 

基于AUTOSAR架构的CI流程是汽车软件开发中不可或缺的一环。它通过自动化的集成与测试,保证了软件的高质量和稳定性。在未来,随着汽车智能化和自动驾驶技术的发展,CI流程的重要性将愈发凸显。因此,持续优化和完善CI流程,是每个从事汽车软件开发的企业都需要高度重视的问题。

通过这次流程的实践介绍,相信大家对基于AUTOSAR的CI流程有了更加清晰的认识。希望本文能够为正在或即将实施CI流程的企业和团队提供有益的参考与启发。北汇信息已为国内汽车客户提供相应的服务内容,欢迎垂询!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/75458.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

哇!树链剖分(重链剖分学习笔记)

听说有人不会树链剖分? 前置芝士线段树 树状数组 Splay FHQ-Treap以上五种任意一种即可,这里主要讲线段树做法。 引入 树链剖分(Tree Line Pow Divide),一种解决树上快速路径修改查询问题的算法,一般指 重链剖分(Heavy Path Decomposition)。 思想图解 一个问题 如题,…

某SCADA系统发电机过速故障研究

某SCADA系统发电机过速故障研究 直观上讲,发电机转速过高故障最显然的特征应该就是“发电机转速”,因此对故障发生时的发电机转速进行可视化研究:如上图所示,对发电机转速进行了 Min-Max 归一化。该次故障报警时,确实存在转速较高的情况,但显然,并非转速高就会报警。通过…

CANOpen协议SDO中止报文(内存不足的解决方法)

今天在开发过程中,使用SDO进行字符串传输的时候出现了错误,检查到SDO服务器返回的报文帧是一个中止帧,中止代码为0x05040005这时候去翻CIA301的手册查中止代码的含义为内存不足经过断点调试跟踪,发现在config.h中是一个配置宏设置的是32,而我的字符串的长度为50,所以就中…

WinDbg快速分析异常情况Dump文件

https://syxdevcode.github.io/2017/12/04/WinDbg%E5%BF%AB%E9%80%9F%E5%88%86%E6%9E%90%E5%BC%82%E5%B8%B8%E6%83%85%E5%86%B5Dump%E6%96%87%E4%BB%B6/WinDbg快速分析异常情况Dump文件 生产环境偶尔会出现一些异常问题,WinDbg 或 GDB 就是解决此类问题的利器。调试工具 WinDb…

20222317 2024-2025-1 《网络与系统攻防技术》实验三实验报告

一、实验内容 本次实验目的为通过多次加密、文件格式欺骗、填充、加壳等技术手段实现恶意代码免杀,产生恶意程序,并尝试通过杀毒软件,不被杀毒软件检测出来。具体实验内容如下: 1.正确使用msf编码器,使用msfvenom生成如jar之类的其他文件; 2.能够使用veil,加壳工具; …

EventTranscript.db占用空间太大,文件能否移动到其他位置?

在大多数情况下,EventTranscript.db 文件可以被移动到其他位置(不建议移动、删除),这样做可能会对系统日志记录功能产生影响:日志记录功能:移动 EventTranscript.db 文件可能会导致系统日志记录工具无法正常工作。系统完整性:在操作系统中,日志文件的位置是系统配置的一…

Windows下dump文件生成与分析

一 生成Dump文件 生成dump文件有三种方式:任务管理器生成,windbg抓取,源码中添加dump转储代码。需要根据实际情况选择。 1.1 任务管理器 在程序崩溃后,先不关闭程序,在任务管理器中找到该程序对应的进程。右键—>创建转储文件。 1.2 WinDbg抓取 程序运行崩溃后,先不关…

P5663 [CSP-J2019] 加工零件 题解

最短路对于上图,如果我们相知道 $2$ 号工人想要一个 $3$ 阶段的零件,其实是看 $2$ 到 $1$ 有没有一条长度为 $3$ 的路径.但如果要求 $4$ 阶段的路径,那就不一定了. 所以我们直接求一遍最短路,分奇最短路和偶最短路. 处理完后,最后一次 $\Theta (1)$ 的回答,如果路径长度过…