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

技术科普:汽车开放系统架构AUTOSAR

01.AUTOSAR简介

汽车是现代人类实现“千里江陵一日还”的交通工具,而计算机则是使人脱离繁杂重复脑力劳动的生产技术,两者的结合催生了汽车电子产业的蓬勃发展。

21世纪初,随着汽车电子应用需求的不断增多与硬件资源不断丰富,软件系统也随之变得日趋复杂。汽车电子的主要任务本应是实现新的功能,然而越来越多的资源却被花费到【将现有解决方案移植到不同的环境中】。同时,互联组件数量的增加也使汽车电子的复杂性指数级提高,传统开发方法难以处理。为了充分发挥各个厂商的优势,分工合作共同完成复杂的ECU控制系统开发,越来越多的汽车整车与零部件厂商开始重视软件标准化。

为了处理汽车电子领域软件功能剧增的问题,通过工业范围内的标准化软件设施来大大减少结构上的复杂性,AUTOSAR协会于2003年夏天正式成立,并于次年启动了主要工作。AUTOSAR关注的范围覆盖了半导体工业、工具、软件厂商甚至汽车制造商本身,不仅可以给软件系统及车辆电子提供一个高效管理平台,也促进了两者之间的更新与交换。

AUTOSAR是AUTomotive Open System Architecture,即汽车开放系统架构的简称,定义了一套支持分布式的、功能驱动的汽车电子软件开发方法和电子控制单元上的软件架构标准化方案,以便应用于不同的汽车和平台,提高软件复用、降低开发成本。 AUTOSAR提倡在汽车电子领域创造出一个标准:既是功能上、接口上的标准,也是方法上、流程上的标准,使得各个厂商可以在一个开放的平台下提供符合标准的不同实现。也就是说,在同样的标准下,谁实现得好,谁就可以赢得竞争。

具体来说,AUTOSAR的目的有:

  • 解决汽车功能可用性和安全性需求;
  • 保持汽车电子系统一定的冗余;
  • 方便移植到不同的汽车和平台;
  • 实现标准的基本系统功能作为汽车供应商的标准软件模块;
  • 通过网络共享软件功能;
  • 集成多个开发商提供的软件模块;
  • 贯穿整个产品生命期的软件维护;
  • 更充分地利用硬件平台的处理能力;
  • 进行汽车电子软件的更新和升级。

02.AUTOSAR架构分析

AUTOSAR架构是AUTOSAR协会为了降低ECU软件开发的复杂度而提出的一套经过实践验证的软件架构,是汽车嵌入式应用功能管理的基础架构,也是开发可重用应用程序的基础。

为了实现基本系统功能及功能接口的标准化,使得功能易于继承和修改,切实提高软件的更新和升级能力,AUTOSAR将汽车电子软件架构的整体框架进行分层式设计,以中间件RTE(Runtime Environment)为界,隔离上层的应用层(Application Layer)与下层的基础软件(Basic Software)。

2.1 应用软件层

应用软件层包含若干个软件组件(Software Component,SWC),包括应用软件组件、传感器和执行器软件组件。软件组件间通过端口进行交互,再根据底层软件功能,合理地拆分为不同抽象层,这样每个抽象层都有不同的功能模块。每个软件组件可以包含一个或者多个运行实体(Runnable Entity,RE),运行实体中封装了相关控制算法,其可由RTE事件(RTE Event)触发。

从方法论上来说,应用层软件架构的基本框架为:

输入-->设定控制目标-->执行器控制-->输出-->RTE

应用层中的功能由各软件组件(SWC)实现,组件中封装了部分或者全部汽车电子功能,包括对其具体功能的实现以及对应描述,如控制大灯,空调等部件的运作,但与汽车硬件系统没有连接。

2.2 运行时环境

运行时环境(Runtime Environment,RTE)为应用层软件组件提供通讯服务,抽象了ECU之间的通信,是单个ECU内部或者多个ECU之间信息交换的通讯中心,作为应用软件层与基础软件层交互的桥梁,为软硬件分离提供了可能。

RTE可以实现软件组件间、基础软件间以及软件组件与基础软件之间的通信,封装了基础软件层的通信和服务,为应用层软件组件提供了标准化的基础软件和通信接口,使得应用层可以通过RTE接口函数调用基础软件的服务,实现了对I/O、存储和其他基本服务的访问,使AUTOSAR软件组件独立于特定的ECU,开发人员得以屏蔽底层硬件的实现细节,进行应用软件的开发,并将应用软件应用在任何符合AUTOSAR标准的ECU中。

2.3 基础软件层

基础软件层(Basic Software Layer,BSW)是标准化的软件层,向AUTOSAR软件组件提供必要的服务,主要提供硬件驱动、网络通信、实时任务调度等底层服务。BSW本身又可分为四层,即服务层(Services Layer)、ECU抽象层(ECU Abstraction Layer)、微控制器抽象层(Microcontroller Abstraction Layer,MCAL)和跨越三个层次的复杂驱动(Complex Drivers),详见下图:

服务层(Services Layer):为应用层提供各种后台服务,比如网络管理、存储器管理、总线通信管理服务以及操作系统等。

ECU抽象层(ECU Abstraction Layer,ECUAL):在ECU相关硬件的基础上,为ECU提供外围设备的驱动程序,使应用层不用关心外设的位置,主要关心ECU硬件的布局和属性,与微控制器无关。ECU抽象层封装了微控制器层及外围设备的驱动,并对微控制器内外设的访问进行了统一,实现了软件应用层与硬件系统的分离,比如CAN报文内容的解析、网关报文的转发、存储器读写流程的控制等等。

微控制器抽象层(Microcontroller Abstraction Layer,MCAL):定义了内存接口、I/O驱动接口和通信接口,其实现与微控制器高度相关,是与硬件直接相关的驱动软件。

复杂设备驱动(Complex Device Drivers,CDD):可以直接访问微控制器,以实现一些复杂的传感器和控制器操作,如喷油控制、曲轴信号采集等有计时需求的特定操作。CDD为用户提供可以自行编写特殊设备驱动软件的可能,由于复杂驱动可能涉及严格的时序,所以应用层通过RTE直接访问硬件。复杂驱动层具有重要的意义,首先,它可以用于实现AUTOSAR不支持或者未标准化的硬件驱动,其次,它可以作为已经存在的应用程序向AUTOSAR过渡的接口。

详细内容见下图所示:

03.总结

AUTOSAR概念的提出,为汽车电子系统开发模式从ECU驱动向功能驱动和架构集成的转变奠定了技术和方法学的基础。随着AUTOSAR的进一步完善和推广应用,不仅能够实现底层软件的解耦、模块化、可重用等功能,还能通过复杂驱动来实现特殊化的需求,保持一定的灵活性,实现一套代码适用多个项目,加快研发进程,降低研发成本。

相关文章:

技术科普:汽车开放系统架构AUTOSAR

01.AUTOSAR简介 汽车是现代人类实现“千里江陵一日还”的交通工具,而计算机则是使人脱离繁杂重复脑力劳动的生产技术,两者的结合催生了汽车电子产业的蓬勃发展。 21世纪初,随着汽车电子应用需求的不断增多与硬件资源不断丰富,软…...

说说HTTP 和 HTTPS 有什么区别?

分析&回答 http协议 超文本传输协议,是互联网上应用最多的协议,基于TCP/IP通讯协议来传递信息,用于从WWW服务器传输超文本到本地浏览器的传输协议。 https协议 我们可以将其看作是以安全为目标的http协议。在http协议的基础上增加了S…...

Pygame中Trivia游戏解析6-5

3.4 next_question()函数 next_question()函数的作用是显示下一个题目。当用户按下“确认”按键后,将会显示下一个题目,代码如下所示。 if self.scored or self.failed:self.scored Falseself.failed Falseself.correct 0self.colors [white,white…...

Java8新特性2——方法引用

Java8新特性2——方法引用 注:以下内容基于Java 8,所有代码都已在Java 8环境下测试通过 目录: Java8新特性1——函数式接口&lambda表达式方法引用Stream 1. 方法引用 方法引用提供了一种替代 lambda 表达式的语法,允许以更…...

Mac“其他文件”存放着什么?“其他文件”的清理方法

很多Mac用户在清理磁盘空间时发现,内存占用比例比较大的除了有iCloud云盘、应用程序、影片、音频、照片等项目之外,还有一个“其他文件”的项目磁盘占用比也非常大,想要清理却无从下手。那么Mac“其他文件”里存放的是什么文件?我…...

46、TCP的“三次握手”

在上一节中,TCP首部常用的几个选项,有些选项的参数就是在通信双方在建立TCP连接的时候进行确定和协商的。所以在学习过TCP报文首部之后,下面我们开始学习TCP的连接建立。 TCP的一个特点是提供可靠的传输机制,还有一个特点就是TCP…...

libudev 和 libusb 常见API分析

libudev详解: libudev是Linux系统下的一个库,它提供针对内核提供的udev设备管理服务的函数库。udev是一种内核机制,用于在系统中传递解决方案的有关设备信息,以及在出现设备事件(如删除、插入设备)时触发相应的操作。 …...

[dasctf]misc04

与他不说一模一样吧也差不多 第三届红明谷杯CTF-【MISC】-阿尼亚_keepb1ue的博客-CSDN客flag.zip需要解压密码,在图片中发现一串密文。一串乱码,尝试进行字符编码爆破。获取到密码:简单的编码。https://blog.csdn.net/qq_36618918/article/d…...

Scala的函数式编程与高阶函数,匿名函数,偏函数,函数的闭包、柯里化,抽象控制,懒加载等

Scala的函数式编程 函数式编程 解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题。 例如:请求->用户名、密码->连接 JDBC->读取…...

Axure RP 8.1.0.3400(原型设计工具)

Axure RP 8是一款原型设计工具,它提供了丰富的功能和工具,帮助用户创建高质量的网页、移动应用和桌面软件原型。以下是Axure RP 8的一些特色介绍: 强大的交互设计:Axure RP 8支持创建复杂的动画和过渡效果,让你的原型更…...

企业微信、飞书、钉钉机器人消息发送工具类

1、实例化WebClient对象 其实你也可以使用RestTemplate,我这里主要是用到了webflux框架,所以需要实例化客户端请求对象 Bean public WebClient webClient(){HttpClient httpClient getHttpClient();return WebClient.builder().clientConnector(new R…...

手撕 视觉slam14讲 ch7 / pose_estimation_3d2d.cpp (1)

首先理清我们需要实现什么功能,怎么实现,提供一份整体逻辑:包括主函数和功能函数 主函数逻辑: 1. 读图,两张rgb(cv::imread) 2. 找到两张rgb图中的特征点匹配对 2.1定义所需要的参数:keypoints…...

Mac安装Dart时,Homebrew报错 Error: Failure while executing

前言: 最近准备开发Flutter项目时,在安装环境时,安装Homebew时遇到了以下报错信息,在这里分享一下。 报错信息: ~ % brew tap dart-lang/dart > Tapping dart-lang/dart Cloning into /opt/homebrew/Library/Tap…...

SSM整合~

构建并配置项目: 第一步:创建maven项目 第二步:配置pom.xml文件 设置打包方式: 为了方便部署,我们通常情况下,将项目打包为WAR,因为WAR文件是一种可执行的压缩文件,它可以将项目…...

Self-supervised 3D Human Pose Estimation from a Single Image

基于单幅图像的自监督三维人体姿态估计 主页: https://josesosajs.github.io/ imagepose/ 源码:未开源 摘要 我们提出了一种新的自我监督的方法预测三维人体姿势从一个单一的图像。预测网络是从描绘处于典型姿势的人的未标记图像的数据集和一组未配对…...

ubuntu下cups部分场景

第一章:部分操作指令 在计算机领域中,cups 是“通用UNIX打印系统”(Common UNIX Printing System)的缩写,它是一种用于在UNIX-like操作系统上管理打印任务的开源打印系统。cups 提供了一个框架,允许用户和…...

通过geoserver imageMosic发布多张tif数据

通过geoserver imageMosic发布多张tif数据 reference: https://zhuanlan.zhihu.com/p/132388558 https://zhuanlan.zhihu.com/p/103674876 https://docs.geoserver.org/latest/en/user/tutorials/imagemosaic_timeseries/imagemosaic_timeseries.html 步骤 下载数据 http…...

输出图元(四)8-2 OpenGL画点函数、OpenGL画线函数

4.3 OpenGL画点函数 要描述一个点的几何要素,我们只需在世界坐标系中指定一个位置。然后该坐标位置和场景中已有的其他几何描述一起被传递给观察子程序。除非指定其他属性值,OpenGL 图元按默认的大小和颜色来显示。默认的图元颜色是白色&#x…...

java八股文

6. 如何保证消息的可靠性? 在RabbitMq的整个消息投递过程中,有三种情况下,会存在消息丢失的问题: 6. RabbitMq如何保证消息的可靠性? 所以从这三个维度保证消息的可靠性去可靠性传递就可以了,从生产者发送…...

算法通关村——解析堆的应用

在数组中找第K大的元素 LeetCode21 Medium 我们要找第 K 大的元素,如果我们找使用大堆的话那么就会造成这个堆到底需要多大的,而且哪一个是第 K 的的元素我们不知道是哪一个索引,我们更想要的结果就是根节点就是我们要找的值,所以…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...