当前位置: 首页 > news >正文

车载软件架构 --- 基于AUTOSAR软件架构的ECU开发流程小白篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身边有这样灵性的人,一定要好好珍惜他们眼中有神有光,干净,给人感觉很舒服,有超强的感知能力有形的无形的感知力很强,能感知人的内心变化喜欢独处,好静,清静,享受孤独,不打扰别人不喜欢被别人打扰,在自己人世界里做着自己喜欢的事。

时间不知不觉中,快要来到新的一年。2024结束,2025开始新的忙碌。成年人的我也不知道去哪里渡自己的灵魂,独自敲击一些文字算是对这段时间做一个记录。

在这里插入图片描述

一、背景信息

汽车ECU作为汽车电子控制系统的核心部件,其开发效率与质量直接关系到整车的性能与可靠性。然而,传统的ECU开发方法在系统级分析与建模方面存在诸多不足,如系统架构不够清晰、模块间耦合度高、扩展性差等问题。因此,引入AUTOSAR规范,以其层次化、模块化的系统架构,为解决这些问题提供了新的思路。

AUTOSAR(AUTomotive Open System ARchitecture)是一个开放且标准化的汽车电子软件架构,旨在提高汽车电子软件的可移植性、可重用性和可扩展性。其系统架构具有层次化和模块化的特点,通过明确的层间接口和模块间通信机制,实现了软件组件的高内聚低耦合。

二、AUTOSAR ECU开发流程总览

AUTOSAR系统架构与标准接口、基本方法与开发流程

1、AUTOSAR系统架构与标准接口

AUTOSAR(Automotive Open System Architecture)即汽车开放系统架构,由宝马、戴姆勒克莱斯勒、福特等主流汽车制造商,以及博世等零部件供应商和半导体、软件公司联合推出。它是一个开放的汽车电子系统架构标准,旨在提供汽车电子系统的标准化和模块化解决方案。

AUTOSAR的架构包括应用层、运行时环境(RTE)、基础软件(BSW)和硬件抽象层(HAL)等组件。其中:

应用层负责实现具体的功能。

-> RTE提供了应用层和BSW之间的接口,是AutoSAR架构中的一个重要组件,负责管理和协调汽车电子系统中的软件组件,包括通信管理、任务调度、事件触发、数据管理和错误管理等功能。

-> BSW提供了一系列的基础软件服务,如通信、诊断、操作系统等。

-> HAL提供了与硬件相关的接口和驱动程序。

此外,AUTOSAR还定义了多种类型的接口,包括标准接口、标准AUTOSAR接口和AUTOSAR接口,这些接口可实现操作系统和RTE、BSW模块和ECU内部之间的函数调用,以及软件组件之间的服务和数据交换。

2、AUTOSAR基本方法与开发流程

AUTOSAR为汽车电子软件系统开发定义了一套通用的解决方案,即AUTOSAR方法论。它描述了从系统层配置到ECU可执行代码的设计步骤,但并未规定要执行哪些活动,也没有定义“责任”和“角色”等。AUTOSAR方法论的开发流程通常包括以下几个步骤:

-> 需求分析:定义系统需求、功能需求以及性能需求,明确系统目标及各个模块的功能,确定软件组件(SWC)的功能,并根据需求编写需求文档。

-> 系统架构设计:设计系统的高层架构,包括硬件和软件组件的结构、ECU间的通信、资源分配等,定义系统架构(如SWC、ECU、通信等),设计BSW、RTE和OS的配置,以及ECU通信协议(如CAN、Ethernet等),并评估系统架构的可行性、性能和成本。

-> 软件组件设计与实现:开发符合功能需求的软件组件,并确保这些组件能够与其他系统模块无缝集成。这包括设计和实现SWC接口、实现业务逻辑和通信协议、开发组件的代码以及集成应用代码与底层软件框架。

-> ECU配置与基础软件配置:根据系统需求和软件组件,配置ECU硬件资源、BSW和中间件。

-> 代码生成与自动化:自动生成BSW、RTE、SWC集成代码,减少手动编码和集成的错误,并自动化测试和验证生成的代码是否符合需求。

-> 验证与测试:验证系统的功能和性能,确保系统符合设计需求。这包括软件单元测试、集成测试、硬件在环(HIL)测试和性能测试等。

-> 系统集成与调试:将所有的软件组件、基础软件和硬件集成在一起,进行调试和性能优化。

-> 功能验证与验收测试:确保系统按预期功能运行,并通过客户的验收测试。

-> 部署与生产:将系统部署到量产环境中,确保产品按计划投入生产。

-> 持续集成与维护:进行版本管理、持续集成,并根据需求进行后续维护。

3、符合AUTOSAR规范的汽车ECU软件开发解决方案

针对汽车电子系统日益复杂、软件代码量急速上升的问题,采用AUTOSAR架构可以显著提高ECU软件的可重用性、可扩展性和互操作性,从而降低开发和维护成本,并促进汽车电子系统的创新和发展。

在符合AUTOSAR规范的汽车ECU软件开发解决方案中,通常会采用一系列的工具和平台来支持开发过程。这些工具和平台包括但不限于:

-> 架构设计工具:如Vector PREEvision、Enterprise Architect、EB tresos Studio等,用于设计系统的高层架构和配置。

-> 集成开发环境(IDE):如Eclipse、Visual Studio等,以及AUTOSAR专用的开发工具,如EB tresos Studio、Vector DaVinci Developer等,用于软件组件的开发和实现。

-> 配置工具:如Vector DaVinci Configurator、EB tresos Studio等,用于ECU和基础软件的配置。

-> 代码生成工具:同样包括EB tresos Studio等,用于自动生成基础软件、RTE、SWC集成代码。

-> 测试工具:如Vector CANoe、dSPACE、EB Assist等,用于系统的验证和测试。

三、AUTOSAR系统架构与标准接口

分层的系统架构传统的汽车电控软件开发是以硬件为中心的,软件严重依赖于硬件平台, 如图所示, 硬件平台的改 变 将 导 致 软 件 维 护 成 本 剧 增。 而 AUTOSAR 的提出, 旨在为汽车电子软件行业提供一个统一的开放的软件架构标准, 以解决传统汽车电子软件可靠性、 重用性低的缺陷。 如图所示, 通过定义标准化的软件功能组件与软件功能组件接口, 将与硬件有关的基础软件进行标准化与平台化, 从而实现上层应用软件和与底层硬件有关的软件 相 互 独 立, 切 实 提 高 软 件 的 更 新 和 升 级能力。

在这里插入图片描述

由于 AUTOSAR 提供底层 ECU 抽象, 使得不再因更换 ECU 而需要对上层应用软件进行适应性修改; 用户可以拥有独立于硬件的、 自上而下的以软件为中心的软件平台, 缩减软件的维护成本, 特别是图 AUTOSAR软件与硬件分离

在这里插入图片描述

整车厂可以将精力集中放在上层应用程序的开发上, 专注于更有竞争价值的上层功能实现。具体地, AUTOSAR 将运行在底层硬件之上的软件划分为三大层, 即应用层、 运行时环境层与基础软件层, 如图所示。

1、应用层。 应用软件以软件组件(SWC) 的形式进行设计, 每个SWC 都封装一段运行在 AUTOSAR 基础软件架构上的可执行程序, 并具有标准化的应用程序接口(API) , 通过运行时环境(RTE) 进行通信。

2、运行时环境(RTE) 层。 RTE 提供基础的通信服务, 支持SWC 之间的、 以及SWC 与 BSW 之间的通信(包括 ECU 内部的程序调用、ECU 外部的总线通信等) 。 RTE 的思想是提供一个虚拟功能总线(VFB) , 从而允许SWC 请求任意的输入数据, 而不必知道这些数据是从哪个 ECU 传送过来的, 只需要向 RTE 发出请求即可。 RTE 使应用层软件完全脱离于具体的单个 ECU 和 BSW。

3、基础软件(BSW) 层。 BSW 层又被划分为3个子 层: 服 务 层、 ECU 抽 象 层、 微 控 制 器 抽 象 层(MCAL) , 还存在一个特殊的复杂驱动层。 每一子层又划分为不同的功能模块。

在这里插入图片描述

服务层分为系统服务、 内存服务、 通信服务等模块。 ECU 抽象层分为板载设备抽象、 内 存 设 备 抽象、 通 信 硬 件 抽 象 与 I/O 抽 象 等。 MCAL 分 为MCU 驱动、 内存驱动、 通信驱动与I/O 驱动等。MCAL 是 BSW 的 最 底 层, 包 含 了 访 问 MCU的驱动。 MCAL 使上层软件与 MCU 分离, 以便应用程 序 的 移 植。 ECU 抽 象 封 装 了 MCAL 以 及MCU 外围设备的驱动, 并且将 MCU 外围设备的访问进行了 统 一, 使 上 层 应 用 与 ECU 硬 件 相 剥 离。

服务层是 BSW 的最上层, 将各种基础软件功能模块以服务的形式封装起来, 供应用层调用。复杂驱动层可以直接访问 MCU, 以实现一些复杂的传感器和控制器操作, 比如喷油控制、 曲轴信号采集等。 复杂驱动层具有重要意义, 首先, 它可以用于实现 AUTOSAR 不支持或者尚未标准化的硬件驱 动; 其 次, 它 可 以 作 为 已 存 在 的 应 用 程 序 向AUTOSAR 过渡的接口。

三、AUTOSAR方法与开发流程

1、SWC(软件组件)在汽车电子开发中的应用

SWC(Software Component)作为汽车电子开发中的核心组成部分,封装了汽车电子系统的各种功能模块,包括应用软件、传感器/执行器、标定、服务、ECU抽象以及复杂设备驱动等。这些SWC通过VFB(Virtual Function Bus,虚拟功能总线)进行交互,共同构成了汽车电子系统的应用软件。

在这里插入图片描述

SWC的结构与功能

1、端口与端口接口:

SWC的对外表现形式是一系列的端口(Port)及对应的端口接口(Port-Interface)。

每个SWC都需要定义Port,通过Port和Port-Interface实现SWC之间的通信或SWC与BSW(Basic Software,基础软件)之间的通信。

2、运行实体:

SWC的内部行为通过运行实体(Runnable)表达,每个SWC由若干个运行实体组成, 每个运行实体由一组指令序列构成,与一个特定的RTE事件(RTEEvent)绑定。当绑定的RTEEvent发生时,对应的运行实体就会被触发。

3、功能与数据交互:

运行实体通过Port的数据或操作完成自身的功能,并把结果通过Port对外提供。这种交互通过RTE(Runtime Environment,运行环境)进行,使得运行实体的实现与平台无关,从而SWC也是与平台无关的。

在这里插入图片描述

SWC的开发与描述

1、代码实现:

SWC必须提供功能模块的代码实现,即源代码。代码实现可以通过建模工具进行设计并生成代码,也可手工编制。

2、描述文件:

描述文件用于描述SWC的外在属性,包括所使用的端口、端口接口、运行实体及对应的RTEEvent等。描述文件最终以扩展标记语言(XML)文件形式对外提供,方便集成和管理。

SWC的优势与应用

1、可移植性与重用性:

由于SWC与平台无关,因此具有良好的可移植性和重用性。这使得在不同的汽车电子项目中,可以方便地复用已有的SWC,降低开发成本和提高开发效率。

2、模块化设计:

SWC的模块化设计使得汽车电子系统更加清晰、易于管理和维护。开发人员可以专注于单个SWC的开发,而无需关注整个系统的复杂性。

在这里插入图片描述

3、支持复杂系统开发:

在复杂的汽车电子系统中,SWC的引入使得系统可以更加灵活地应对各种需求和变化。通过组合和配置不同的SWC,可以快速构建出满足特定需求的汽车电子系统。

SWC在汽车电子开发中发挥着重要作用,它封装了汽车电子系统的各种功能模块,并通过标准化的接口和交互机制实现了模块之间的通信和协作。通过采用SWC,可以显著降低开发成本、提高开发效率,并增强汽车电子系统的可移植性和重用性。

在这里插入图片描述

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者

相关文章:

车载软件架构 --- 基于AUTOSAR软件架构的ECU开发流程小白篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…...

汇编基础语法及其示例

1.汇编指令 1.1汇编指令的基本格式 <opcode>{<cond>}{s} <Rd> , <Rn> , <shifter_operand> <功能码>{<条件码>}{cpsr影响位} <目标寄存器> , <第一操作寄存器> , <第二操作数> 注&#xff1a;第一操作寄存器…...

android获取EditText内容,TextWatcher按条件触发

android获取EditText内容&#xff0c;TextWatcher按条件触发 背景&#xff1a;解决方案&#xff1a;效果&#xff1a; 背景&#xff1a; 最近在尝试用原生安卓实现仿element-ui表单校验功能&#xff0c;其中涉及到EditText组件内容的动态校验&#xff0c;初步实现功能后&#…...

Blazor-Blazor Web App项目结构

让我们还是从创建项目开始&#xff0c;来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式&#xff0c;有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…...

【线上问题定位处理】及【性能优化】系列文章

目录 性能优化 性能优化 九大服务架构性能优化方式 如何进行GC调优 如何排查线上系统出现的Full GC MySQL - 性能优化 MySQL - 分库分表 大数据查询的处理方案 MySQL优化手段有哪些 服务CPU100%问题如何快速定位? 服务内存OOM问题如何快速定位? JVM调优6大步骤 线…...

现代 linux 里一个进程允许打开几个文件:答案是 1024 或者更多

&#xff08;1&#xff09; 测试一下&#xff1a; &#xff08;2&#xff09; 谢谢...

【仓颉】仓颉编程语言Windows安装指南 配置环境变量 最简单解决中文乱码问题和其他解决方案大全

适用于版本&#xff1a; 0.53.13 &#xff5c; 发布日期&#xff1a; 2024-10-24 &#xff08;以后的可能也适用&#xff09; 本机windows版本&#xff1a;24H2 内部版本号windows 10.0.26100 因为仓颉的官方文档一直没更新&#xff0c;所以在这里写一下如何在windows上完成这些…...

dm8在Linux环境安装精简步骤说明(2024年12月更新版dm8)

dm8在Linux环境安装详细步骤 - - 2025年1月之后dm8 环境介绍1 修改操作系统资源限制2 操作系统创建用户3 操作系统配置4 数据库安装5 初始化数据库6 实例参数优化7 登录数据库配置归档与备份8 配置审计9 创建用户10 屏蔽关键字与数据库兼容模式11 jdbc连接串配置12 更多达梦数据…...

学技术学英语:elasticsearch查询的两阶段queryingfetching

To understand Elasticsearch’s distributed search, let’s take a moment to understand how querying and fetching work. Unlike simple CRUD tasks, distributed search is like navigating through a maze of shards spread across the cluster. In Elasticsearch, CRU…...

Linux_线程互斥

互斥的相关概念 共享资源&#xff1a;指多个进程或线程可以共同访问和操作的资源临界资源&#xff1a;被保护的共享资源就叫做临界资源临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区互斥&#xff1a;任何时刻&#xff0c;互斥保证有…...

基于 NodeJs 一个后端接口的创建过程及其规范 -- 【elpis全栈项目】

基于 NodeJs 一个后端接口的创建过程及其规范 一个接口的诞生&#xff1a; #mermaid-svg-46HXZKI3fdnO0rKV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-46HXZKI3fdnO0rKV .error-icon{fill:#552222;}#mermaid-sv…...

企业知识库提升企业核心竞争力促进团队协作和知识分享

内容概要 在快速发展的数字化时代&#xff0c;企业知识库的构建与运用变得愈发重要。其重要性不仅体现在信息的集中管理上&#xff0c;更在于推动企业整体竞争力的提升。一个高效的知识库可以作为团队合作的重要平台&#xff0c;促进不同部门之间的信息交流与协作&#xff0c;…...

C++ unordered_map和unordered_set的使用,哈希表的实现

文章目录 unordered_map&#xff0c;unorder_set和map &#xff0c;set的差异哈希表的实现概念直接定址法哈希冲突哈希冲突举个例子 负载因子将关键字转为整数哈希函数除法散列法/除留余数法 哈希冲突的解决方法开放定址法线性探测二次探测 开放定址法代码实现 哈希表的代码 un…...

games101-作业3

由于此次试验需要加载模型&#xff0c;涉及到本地环节&#xff0c;如果是windows系统&#xff0c;需要对main函数中的路径稍作改变&#xff1a; 这么写需要&#xff1a; #include "windows.h" 该段代码&#xff1a; #include "windows.h" int main(int ar…...

【Block总结】高效多尺度注意力EMA,超越SE、CBAM、SA、CA等注意力|即插即用

论文信息 标题: Efficient Multi-Scale Attention Module with Cross-Spatial Learning 作者: Daliang Ouyang, Su He, Guozhong Zhang, Mingzhu Luo, Huaiyong Guo, Jian Zhan, Zhijie Huang 论文链接: https://arxiv.org/pdf/2305.13563v2 GitHub链接: https://github.co…...

Pwn 入门核心工具和命令大全

一、调试工具&#xff08;GDB 及其插件&#xff09; GDB 启动调试&#xff1a;gdb ./binary 运行程序&#xff1a;run 或 r 设置断点&#xff1a;break *0x地址 或 b 函数名 查看寄存器&#xff1a;info registers 查看内存&#xff1a;x/10wx 0x地址 &#xff08;查看 10 个 …...

探索AI(chatgpt、文心一言、kimi等)提示词的奥秘

大家好&#xff0c;我是老六哥&#xff0c;我正在共享使用AI提高工作效率的技巧。欢迎关注我&#xff0c;共同提高使用AI的技能&#xff0c;让AI成功你的个人助理。 "AI提示词究竟是什么&#xff1f;" 这是许多初学者在接触AI时的共同疑问。 "我阅读了大量关于…...

利用飞书机器人进行 - ArXiv自动化检索推荐

相关作者的Github仓库 ArXivToday-Lark 使用教程 Step1 新建机器人 根据飞书官方机器人使用手册&#xff0c;新建自定义机器人&#xff0c;并记录好webhook地址&#xff0c;后续将在配置文件中更新该地址。 可以先完成到后续步骤之前&#xff0c;后续的步骤与安全相关&…...

小白爬虫冒险之反“反爬”:无限debugger、禁用开发者工具、干扰控制台...(持续更新)

背景浅谈 小白踏足JS逆向领域也有一年了&#xff0c;对于逆向这个需求呢主要要求就是让我们去破解**“反爬机制”**&#xff0c;即反“反爬”&#xff0c;脚本处理层面一般都是decipher网站对request设置的cipher&#xff0c;比如破解一个DES/AES加密拿到key。这篇文章先不去谈…...

Ubuntu中MySQL安装-02

服务器端安装 安装服务器端&#xff1a;在终端中输入如下命令&#xff0c;回车后&#xff0c;然后按照提示输入 sudo apt-get install mysql-server 当前使用的ubuntu镜像中已经安装好了mysql服务器端&#xff0c;无需再安装&#xff0c;并且设置成了开机自启动服务器用于接…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...