车载软件架构 --- 基于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影响位} <目标寄存器> , <第一操作寄存器> , <第二操作数> 注:第一操作寄存器…...

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

Blazor-Blazor Web App项目结构
让我们还是从创建项目开始,来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式,有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…...
【线上问题定位处理】及【性能优化】系列文章
目录 性能优化 性能优化 九大服务架构性能优化方式 如何进行GC调优 如何排查线上系统出现的Full GC MySQL - 性能优化 MySQL - 分库分表 大数据查询的处理方案 MySQL优化手段有哪些 服务CPU100%问题如何快速定位? 服务内存OOM问题如何快速定位? JVM调优6大步骤 线…...

现代 linux 里一个进程允许打开几个文件:答案是 1024 或者更多
(1) 测试一下: (2) 谢谢...

【仓颉】仓颉编程语言Windows安装指南 配置环境变量 最简单解决中文乱码问题和其他解决方案大全
适用于版本: 0.53.13 | 发布日期: 2024-10-24 (以后的可能也适用) 本机windows版本:24H2 内部版本号windows 10.0.26100 因为仓颉的官方文档一直没更新,所以在这里写一下如何在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_线程互斥
互斥的相关概念 共享资源:指多个进程或线程可以共同访问和操作的资源临界资源:被保护的共享资源就叫做临界资源临界区:每个线程内部,访问临界资源的代码,就叫做临界区互斥:任何时刻,互斥保证有…...
基于 NodeJs 一个后端接口的创建过程及其规范 -- 【elpis全栈项目】
基于 NodeJs 一个后端接口的创建过程及其规范 一个接口的诞生: #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…...

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

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

games101-作业3
由于此次试验需要加载模型,涉及到本地环节,如果是windows系统,需要对main函数中的路径稍作改变: 这么写需要: #include "windows.h" 该段代码: #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 入门核心工具和命令大全
一、调试工具(GDB 及其插件) GDB 启动调试:gdb ./binary 运行程序:run 或 r 设置断点:break *0x地址 或 b 函数名 查看寄存器:info registers 查看内存:x/10wx 0x地址 (查看 10 个 …...

探索AI(chatgpt、文心一言、kimi等)提示词的奥秘
大家好,我是老六哥,我正在共享使用AI提高工作效率的技巧。欢迎关注我,共同提高使用AI的技能,让AI成功你的个人助理。 "AI提示词究竟是什么?" 这是许多初学者在接触AI时的共同疑问。 "我阅读了大量关于…...

利用飞书机器人进行 - ArXiv自动化检索推荐
相关作者的Github仓库 ArXivToday-Lark 使用教程 Step1 新建机器人 根据飞书官方机器人使用手册,新建自定义机器人,并记录好webhook地址,后续将在配置文件中更新该地址。 可以先完成到后续步骤之前,后续的步骤与安全相关&…...
小白爬虫冒险之反“反爬”:无限debugger、禁用开发者工具、干扰控制台...(持续更新)
背景浅谈 小白踏足JS逆向领域也有一年了,对于逆向这个需求呢主要要求就是让我们去破解**“反爬机制”**,即反“反爬”,脚本处理层面一般都是decipher网站对request设置的cipher,比如破解一个DES/AES加密拿到key。这篇文章先不去谈…...

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

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...

RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...