百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

AUTOSAR软件架构简介

bigegpt 2024-08-27 12:02 2 浏览

AUTOSAR是什么

AUTOSAR的全称是AUTomotive Open System Architecture,直译为汽车开放系统架构,是由全球汽车制造商、零部件供应商及其他电子、半导体和软件系统公司联合建立,致力于为汽车工业开发一个开放的、标准化的软件架构。简单来说,AUTOSAR是一种开放的软件架构,需要汽车制造商、零部件供应商、芯片供应商及软件公司共同合作来实现该软件架构。


AUTOSAR目前分为两种:Classic Platform AUTOSAR和Adaptive Platform AUTOSAR,也称为CP和AP。通常我们提到的AUTOSAR一般指Classic AUTOSAR,它是用在众多汽车ECU上的AUTOSAR架构。而Adaptive AUTOSAR是随着近些年汽车信息娱乐系统的发展,在带有高级操作系统(Linux或QNX)的车载Soc上使用的一种AUTOSAR架构。本文谈论的是Classic AUTOSAR,因此下面提到的AUTOSAR均指Classic AUTOSAR。

为什么使用AUTOSAR


那么问题来了,为什么要使用AUTOSAR这种软件架构,或者说使用AUTOSAR能带来哪些好处?


在说明AUTOSAR的优势之前,我们先来看一下使用AUTOSAR之前的软件开发现状。


软硬件耦合

传统的汽车ECU开发,一般是由一个经验比较丰富的软件架构师来搭建一个项目的软件架构。做的比较好的软件架构可能会考虑软件分层,比如驱动层、服务层、应用层等,做的不好的软件架构,软件层级可能就没有那么分明,在应用层甚至直接会嵌入硬件驱动相关的代码。


多人同时开发效率低下

在AUTOSAR之前,ECU软件开发一般按照功能模块进行分工。不同模块之间的数据交互需要负责相应模块的工程师提前定义好接口,并在各自的模块开发完成后进行联合调试,调试过程中可能会发现定义接口时没有考虑到的一些问题,此时需要重新设计接口并进行再一次的联合调试。


软件复用性低

由于传统的ECU 软件在开发时没有清晰的层级划分,软硬件之间以及不同的功能模块之间耦合性较大,由于MCU选型不一样或者不同汽车主机厂的项目需求有差异,在把一套已经开发完成的软件移植到另一个项目时,会遇到比较大的困难。


在使用AUTOSAR之后会有哪些改变呢?


软硬件隔离

下图的左侧是在使用AUTOSAR之前的状态,可以看到软硬件之间的耦合性是很大的。右侧是使用AUTOSAR之后的状态,软硬件是被分隔开来的。如果更换MCU,只需要变更AUTOSAR架构中的一部分即可(BSW,即基础软件),而处于上层的应用软件是可以直接复用的。

提高团队开发效率

AUTOSAR对不同模块之间的数据交互接口进行了统一定义(RTE),每个模块只需要按照接口标准定义去开发,当开发完成后可以直接进行联合调试,因为接口定义出现问题的概率是很低的。


软件复用性程度提高

由于软硬件之间进行了良好的隔离,以及模块之间的通信接口也是按标准开发的。一个开发好的软件可以直接根据新项目的需求取用相应的模块,移植到另一个项目上。由于上层的应用软件不会涉及具体的硬件,即使更换MCU应用层也无需做相应的更改。


介绍完了AUTOSAR的好处,一起来看一下AUTOSAR的具体架构。

AUTOSAR软件架构


下图展示了AUTOSAR比较High Level的三个大的层级:应用软件层、RTE和基础软件层。应用软件层包含了汽车主机厂要求的和功能相关的软件,RTE是应用层不同模块之间以及应用层和基础软件层之间进行交互的桥梁,基础软件层则包含MCU及其外围设备驱动、硬件抽象层以及为上层应用提供接口服务的服务层。



而基础软件层(BSW)可以再进一步划分,如下图的微处理器抽象层(MCAL)、ECU抽象层、服务层以及复杂驱动。


MCAL其实就是MCU的驱动软件,对每个外设模块的操作进行了寄存器操作的封装,比如SPI的初始化只需要调用一个初始化函数即可,不用关心函数内部是怎么实现的。


ECU抽象层相比MCAL多了一些板上硬件资源的驱动,比如外部看门狗、片外EEPROM或FLASH等,如果要使用这些硬件资源直接调用ECU抽象层的接口即可。


服务层是进一步的封装和抽象,一般包括OS、电源状态管理、整车网络通信、诊断服务、存储服务等。


复杂驱动主要包含一些不在AUTOSAR标准规范里的一些硬件设备的驱动,比如电机驱动、一些比较复杂的传感器驱动等。


以上是对AUTOSAR架构的一个大体的介绍,针对每一层都可以展开进行详细的介绍。如果大家对AUTOSAR或者汽车软件开发有兴趣,可以关注微信公众号“汽车软件后花园”,获取更多干货。

相关推荐

【Docker 新手入门指南】第十章:Dockerfile

Dockerfile是Docker镜像构建的核心配置文件,通过预定义的指令集实现镜像的自动化构建。以下从核心概念、指令详解、最佳实践三方面展开说明,帮助你系统掌握Dockerfile的使用逻...

Windows下最简单的ESP8266_ROTS_ESP-IDF环境搭建与腾讯云SDK编译

前言其实也没啥可说的,只是我感觉ESP-IDF对新手来说很不友好,很容易踩坑,尤其是对业余DIY爱好者搭建环境非常困难,即使有官方文档,或者网上的其他文档,但是还是很容易踩坑,多研究,记住两点就行了,...

python虚拟环境迁移(python虚拟环境conda)

主机A的虚拟环境向主机B迁移。前提条件:主机A和主机B已经安装了virtualenv1.主机A操作如下虚拟环境目录:venv进入虚拟环境:sourcevenv/bin/active(1)记录虚拟环...

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

基于网络安全的Docker逃逸(docker)

如何判断当前机器是否为Docker容器环境Metasploit中的checkcontainer模块、(判断是否为虚拟机,checkvm模块)搭配学习教程1.检查根目录下是否存在.dockerenv文...

Python编程语言被纳入浙江高考,小学生都开始学了

今年9月份开始的新学期,浙江省三到九年级信息技术课将同步替换新教材。其中,新初二将新增Python编程课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法按照教材...

CentOS 7下安装Python 3.10的完整过程

1.安装相应的编译工具yum-ygroupinstall"Developmenttools"yum-yinstallzlib-develbzip2-develope...

如何在Ubuntu 20.04上部署Odoo 14

Odoo是世界上最受欢迎的多合一商务软件。它提供了一系列业务应用程序,包括CRM,网站,电子商务,计费,会计,制造,仓库,项目管理,库存等等,所有这些都无缝集成在一起。Odoo可以通过几种不同的方式进...

Ubuntu 系统安装 PyTorch 全流程指南

当前环境:Ubuntu22.04,显卡为GeForceRTX3080Ti1、下载显卡驱动驱动网站:https://www.nvidia.com/en-us/drivers/根据自己的显卡型号和...

spark+python环境搭建(python 环境搭建)

最近项目需要用到spark大数据相关技术,周末有空spark环境搭起来...目标spark,python运行环境部署在linux服务器个人通过vscode开发通过远程python解释器执行代码准备...

centos7.9安装最新python-3.11.1(centos安装python环境)

centos7.9安装最新python-3.11.1centos7.9默认安装的是python-2.7.5版本,安全扫描时会有很多漏洞,比如:Python命令注入漏洞(CVE-2015-2010...

Linux系统下,五大步骤安装Python

一、下载Python包网上教程大多是通过官方地址进行下载Python的,但由于国内网络环境问题,会导致下载很慢,所以这里建议通过国内镜像进行下载例如:淘宝镜像http://npm.taobao.or...

centos7上安装python3(centos7安装python3.7.2一键脚本)

centos7上默认安装的是python2,要使用python3则需要自行下载源码编译安装。1.安装依赖yum-ygroupinstall"Developmenttools"...

利用本地数据通过微调方式训练 本地DeepSeek-R1 蒸馏模型

网络上相应的教程基本都基于LLaMA-Factory进行,本文章主要顺着相应的教程一步步实现大模型的微调和训练。训练环境:可自行定义,mac、linux或者window之类的均可以,本文以ma...

【法器篇】天啦噜,库崩了没备份(天啦噜是什么意思?)

背景数据库没有做备份,一天突然由于断电或其他原因导致无法启动了,且设置了innodb_force_recovery=6都无法启动,里面的数据怎么才能恢复出来?本例采用解析建表语句+表空间传输的方式进行...