AutoSAR(基础入门篇)1.3-AutoSAR的概述

目录

一、到底什么是AutoSAR

1、大白话来讲

2、架构上来讲

应用软件层(APPL)

实时运行环境(RTE)

基础软件层(BSW)

3、工具链上来讲

二、AutoSAR的目标


一、到底什么是AutoSAR

1、大白话来讲

AUTOSAR 就是AUTomotive Open System ARchitecture的简称,中文翻译就是汽车开放系统架构

  • 再说直白一点就是:  将汽车电子控制单元(ECU)的软件底层做了一个标准的封装。使得大家都能共用一套底层软件,只需要修改其中的一些参数,就可以匹配不同硬件,也可以匹配不同的应用层软件。如此之后,用户只需要专心负责应用层与一些复杂驱动功能开发即可,底层都交给AutoSAR工程师(基础软件部门)就行了。
  • 更加容易理解但不是很准确的讲就是一套写的比较好的底层软件"。其实现了硬件驱动的封装(类似于STM32的库),实现了操作系统的功能。 用户只需要开发操作系统上层的软件应用即可(类似于基于安卓开发App)

2、架构上来讲

首先我们来看一张整体的架构图,以后我们会在这张图上细分和深入,添加细节来补充完整。首先就能看出AutoSAR主要分为3个层级:应用软件层 (AppL),实时运行环境(RTE)和基础软件层(BSW)

  • 应用软件层主要就是用来存放我们自己的代码的地方
  • 实时运行环境是提供应用层所需的资源,同时将应用层和底层隔离
  • 基础软件层是将硬件做封装,一直封装到一个标准的操作系统的状态,以便上层可以标准化调用系统服务,这里又分几个部分,马上将会讲到

上图中应用层和BSW层都比其他层大一些,这是因为它们两还可以再做细分,接下来我们看下面这张图,我们将应用层和基础软件层做了细分, 就这几层现在做分别的讨论:

应用软件层(APPL)

该层是由一个一个SWC组成的,每个SWC咱们可以理解为一个.c文件,而整个应用软件层就是一个文件夹。用下面这张图应该很好的说明了对应关 系:

1. 图中右边的工程只是为了大家理解建立的一个样板,与Vector的实际工程还有很大区别,将会在后续章节中讲到

2. composition SWC和其他更加详细的说明会在SWC章节中讲到

3. 可以看出:这里的整个工程就是我们的AutoSAR架构,而其中的AppL、RTE和BSW都分别对应一个文件夹,而我们的SWC组件就是一个一个 的.c文件(和.h)

实时运行环境(RTE)

做一个不太恰当的比喻:把BSW比作我们的windows系统,AppL就是开发的应用软件,而RTE更像是一个虚拟机,将上层应用和底层操作系统隔绝 开的同时,又兼容了不同厂商开发的软件。(实际上更像是电话转接员的工作,这里在后面讨论)

基础软件层(BSW)

基础软件层又分为4大部分:

1. 硬件抽象层(MCAL):可能用过STM32的童鞋应该都知道库的概念,硬件抽象层又叫MCAL,就是将芯片的寄存器操作都封装成一个AutoSAR

规定的统一的库Api。就是说这套Api是不同厂商都支持的,但是底层怎么实现,就是芯片厂商的事了。同时也有软件工具EB,可以通过界面配置

MCAL功能

2. ECU抽象层(ECU Abstraction Layer):如果说MCAL只封装了芯片,那么ECU抽象层就是将硬件上所有的硬件都进行了封装。比如我们的控制器上有一个主芯片英飞凌的

TC275,还有采样电路,电源电路,CAN电路等等。而MCAL就是封装了芯片上有的功能。而ECU抽象层就是将所有的这些都做一个统一的封 装。所以不管硬件是如何实现的,这里封装后,也形成了统一的Api

3. 服务层(Service Layer):这里有是更加高级的一层了,服务层里是包含操作系统(OS)的。OS将使用ECU抽象层的Api,再对上层暴露出服务接口,其实就是 嵌入式实时操作系统(RTOS)所作的工作。

4. 复杂驱动(CDD Complex Device Drivers):又叫做CDD,主要工作是将AutoSAR未定义的一些功能封装起来,给应用层提供接口来调用这些功能。(简单说就是其他的概念)

3、工具链上来讲

目前主要是2大流派:

  • MATLAB + DaVinci(国内主流,参考书籍有《基于AUTOSAR规范的车用电机控制器软件开发》)
  • MATLAB + ETAS(博世和联电主要用这个,参考书籍有《AUTOSAR规范与车用控制器软件开发》)
  • 其实国内也有一家做AutoSAR开发工具的,叫做恒润,可以稍微了解一下

这里我们就选国内常用的Matlab(MathWork) + DaVinci(Vector)来详细说明一下:

  • Matlab:

大家应该都很熟悉了,主要是用Simulink做代码生成的,就是我们的应用层软件就需要Matlab来开发,当然手写也是可以的,不过弊端就很多 了,这个看预算和需求吧

  • DaVinci Developer: 主要用来设计AppL的程序架构
  • DaVinci Configurator pro: 主要用来配置BSW和自动生成RTE的

  • EB Tresos: 主要用来配置MCAL的,可以兼容英飞凌和恩智浦的芯片
  • Vector还有其他的一系列的工具:比如Canoe、Canape等,这里就暂时略过

二、AutoSAR的目标

目标这个东西不是重点,这里就不长篇大论了,我通过一句话的总结一下: 建立一套优秀的软件底层代码,使得各大主机厂都能通用,同时使汽车软件开发更加标准化、规范化、安全化、快速化和经济化

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx 1.24.0 安装nginx最新稳定版

1.官网: nginx: download 2. 选择稳定版: 3. 可以下载,然后上传服务器,也可以wget获取: cd /home wget https://nginx.p2hp.com/download/nginx-1.24.0.tar.gz 4. 放入/home 下。并解压缩,重命名nginx;…

【教学类-06-18】20231216 (按“列”正序题)X-Y之间“加法题+题”(1页最多0-13。不考虑空格补全)

作品展示:按列排序,从小到大正序(有空格) 背景需求: 55格模板,很多幼儿都是按照“列”的方式,从上到下,从左向右完成题目的。 视觉上,两列之间间距大(给孩子…

DevOps|研发提效-敏捷开发之任务看板

上篇文章中,我讲了敏捷第一步-每日站立会,讲了我们平时是怎么开站立会的,其实15-30分钟就够了,绝对不是时间长得让你想拄拐那种。本文我们开始讲敏捷开发中的看板。没有看板之前,我们真的是在白板上画泳道,…

技术面试斗智斗勇II

上回书说到,面试3年经验的java开发遇到了很多培训班的包装简历。这次说说初级的识别策略。 问问他之前工作的公司是什么。即使是假的,候选人也能回答,但是他们往往说的是全称,比如 北京XXX科技有限公司。很显然,如果你…

【洛谷】自动修正

自动修正 题目链接 题意 即将原字符串中的所有小写字母转化为大写字母。 思路 输入所需值后,在for循环中运用acll码来进行大小写转化,最后输出即可 坑点 注意acll码转换大小写时不要弄反,不然会使大写字母转化成小写 实现步骤 同思路 代码 …

美团赚钱更难了,Q3核心业务利润率下降2%,市值一年缩水近6000亿

从“买菜”卷向“超市”,成立5年的美团买菜更名为“小象超市”。 就在更名公告发布的前一天,美团公布了2023年三季报,尽管三季度营收净利双增长,但其股价却呈相反趋势。 三季报发布次日(11月29日),美团港股股价单日跌…

MIT6.5840-2023-Lab2C: Raft-Persistence

前置知识 见上一篇 Lab2A。 实验内容 实现 RAFT,分为四个 part:leader election、log、persistence、log compaction。 实验环境 OS:WSL-Ubuntu-18.04 golang:go1.17.6 linux/amd64 Part 2C: persistence 大部分的bug都与这…

八、Seata的XA模式

目录 八、Seata的XA模式8.3 XA模式多数据源场景1 环境搭建2、使⽤XA模式解决事务 八、Seata的XA模式 8.3 XA模式多数据源场景 1 环境搭建 建库建表 代码的db.sql中 创建工程 添加依赖 <dependency><groupId>org.springframework.boot</groupId><ar…

C语言 字符串处理相关函数大汇总之(1~5)

1&#xff0c;strcpy函数 将一个字符串复制到另一个字符串。它的原型是&#xff1a; char *strcpy(char *dest, const char *src); 这个函数接受两个参数&#xff1a; (1)&#xff0c;dest&#xff1a;目标字符串。它必须是一个足够大的字符数组&#xff0c;以容纳源字符串的…

VBA技术资料MF96:单字段多条件高级筛选

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

华三交换机基础配置

文章目录 配置远程Telnet/SSH账号其他基本配置维护设备常用 当配置华三交换机时&#xff0c;以下是一些基本配置步骤和命令。将介绍如何配置远程Telnet/SSH账号以及其他一些常见的配置。 配置远程Telnet/SSH账号 要配置远程Telnet/SSH账号&#xff0c;可以按照以下步骤进行操作…

玩转Docker(四):容器指令、生命周期、资源限制、容器化支持、常用命令

文章目录 一、容器指令1.运行2.启动/停止/重启3.暂停/恢复4.删除 二、生命周期三、资源限制1.内存限额2.CPU限额3.磁盘读写带宽限额 四、cgroup和namespace五、常用命令 一、容器指令 1.运行 按用途容器大致可分为两类&#xff1a;服务类容器和工具类的容器。 服务类容器&am…

Ribbon使用

Ribbon &#xff1a;处理客户端负载均衡和容错的解决方案 配置Ribbon的负载均衡 Rule接口&#xff1a; 定义客户端负载均衡的规则 RandomRule :随机选择RoundRobinRuleZoneAvoidanceRule 配置ribbon的负载均衡策略 在配置文件中配置 user-center:ribbon:NFLoadBalancerRul…

视频号小店运营思路详解!

我是电商珠珠 视频号小店的热度在今年下半年开始逐步升高&#xff0c;这就如同20年的抖音小店一样。 对于商家来说&#xff0c;新平台寓意着新的机会。不少人想要入驻&#xff0c;但是却不知道怎么做。 其实&#xff0c;视频号小店的运营方式和抖音小店相差无几&#xff0c;…

bug 记录

ks-jenkins 出现内存不足错误 起初想在jenkins 中进行配置 发现找不到自动删除历史构建选项&#xff0c;看了kubesphere 文档也没找到选择git 仓库时配置历史构建保留时间&#xff0c;但是不选择git 仓库时是有的。 最终在jenkins 下系统管理下 工具中编写命令脚本进行手动删…

如何通俗易懂的理解Redis分布式锁

一、前言 首先我们先考虑以下这个问题&#xff1a; 在多线程并发的情况下&#xff0c;我们如何保证一个代码块在同一时间只能由一个线程访问呢&#xff1f; 答案&#xff1a;通常来说&#xff0c;我们可以用锁来保证。比如java的synchronized用法以及ReentrantLock等等。这样…

Python:解决with打开文件错误UnicodeDecodeError

简介&#xff1a;在使用with打开部分编码不是utf-8和gbk时&#xff0c;可能出现报错UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xff in position 0: illegal multibyte sequence. UnicodeDecodeError 是一个很常见的错误&#xff0c;它通常在你试图解码一个特定编…

三阶魔方七步解法-最后还原顶层顶角(不是顶棱)

主要区别&#xff0c;最后一步是 顶层十字棱角已经还原&#xff0c;四个顶角的位置正确&#xff0c;但四个顶角的颜色没有对应。 因为现在基本都是6步还原法&#xff08;找什么小鱼&#xff0c;眼睛&#xff09;&#xff0c;是先还原顶层使颜色一致&#xff0c;最后还原顶棱。但…

云原生之深入解析使用Telepresence轻松在本地调试和开发Kubernetes应用程序

一、 准备 telepresence 下载&#xff1a;https://www.telepresence.io/docs/latest/install/kubectl 下载&#xff1a;https://kubernetes.io/docs/tasks/tools/ 二、版本检测 $telepresence version Client: v2.5.3 (api v3) Root Daemon: not running User Daemon: not r…

leetcode面试经典二分系列刷题心得

闲来无事巩固算法基础&#xff0c;发现自己的二分几乎从来没系统刷过题&#xff0c;基础很是薄弱。 二分法不愧称为新人杀手&#xff0c;刷起来很是吃力&#xff0c;感觉明明学了几套二分模板&#xff0c;但是却不知道如何去运用&#xff0c;很多读者在初次尝试刷二分题时候&a…