AUTOSAR 学习笔记

news/2025/2/7 21:16:25/文章来源:https://www.cnblogs.com/yangyang13/p/18703288

AUTOSAR 学习笔记

概述

​ 本文章为0基础小白记录AUTOSAR学习笔记。如有错误,欢迎评论区指正。个人笔记模式习惯采用提问式记录,也是这篇文章的主要记录模式。

补充,大篇幅文章推荐:

《AutoSAR入门到精通系列讲解》作者:雪云飞星

https://blog.csdn.net/xyfx_fhw/category_9291827.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=9291827&sharerefer=PC&sharesource=weixin_51105931&sharefrom=from_link

1.AUTOSAR基础认知

1.1 什么是AUTOSAR?为什么要学习AUTOSAR?怎么用AUTOSAR?

Autosar 指 汽车开放系统架构(AUTomotive Open System Architecture)。就是一套规定好的标准、模型、架构。

学AUTOSAR的原因是它为汽车电子软件开发提供了标准和框架,在这个标准模式下,汽车生产商(OEM,Original Equipment Manufacturer)、Tier1(1级供应商)和Tier2(2级供应商)等各个公司之间开发效率可以大大提升。具体来说:OEM软件的可移植性和复用性提升,同时软件应用层在的可靠性大大提升,节省研发和测试费用。Tier1应对严苛的指标要求,处理更加高效,利用软件配置工具提高开发效率。Tier2由于OEM和Tier软件需求变明确,可以专心各个层级的开发工作。

AUTOSAR如何使用,AUTOSAR框架下有专门的工具链,我们使用对应的工具链,按照AUTOSAR标准进行配置使用,便是基于AUTOSAR开发。

补充:

《什么是OEM,Tier1、Tier2?》作者:这里是胡诌诌

https://zhuanlan.zhihu.com/p/681252603

OSEK是AUTOSAR的前身,AUTOSAR相当于软硬件之间的一层隔离。其优势就是解决传统开发的软硬件耦合严重导致的问题。缩短开发周期,增强了原有代码的复用性,支持多人同时开发和维护,有图形化配置界面,生成的代码相对传统更有保障性。

1.2 AUTOSAR分类Classic Platform和Adaptive Platform,有什么区别?

进入AUTOSAR官网,会发现AUTOSAR分为Classic Platform和Adaptive Platform
Snipaste_2024-12-21_13-06-33

这两者有什么区别呢?
Classic platform(经典平台)是 AUTOSAR 针对传统车辆控制嵌入式系统的解决方案,具有严格的实时性和安全性限制。从架构来看如下图所示,软件自上而下分别为应用软件层(Application Software Layer,ASW)、运行时环境(Runtime Environment,RTE)、基础软件层(Basic Software Layer,BSW)和微控制器(硬件)(Microcontroller/Hardware)。为保证上层与下层的无关性,在通常情况下,每一层只能使用下一层所提供的接口,并向上一层提供相应的接口。
Snipaste_2024-12-21_13-08-47
Adaptive AUTOSAR(自适应平台)是在异构多核(CPU/AI/GPU)高性能SOC处理器和更高带宽的以太通信技术驱动下,提出的一种新型汽车电子系统软件架构标准。它除了继承大量经典平台CP标准内容外,还采用了面向对象高级编程C++语言、面向服务的SOA架构和基于 POSIX 标准的操作系统以适应异构处理的分布式并行处理需求,同时在满足功能安全和信息安全的车规要求下,支持灵活的软件配置、动态部署以及持续的软件迭代更新。
Snipaste_2024-12-21_13-11-12

在对比这两个平台之前,还要补充E/E架构(Electrical/Electronic)即电子电气架构相关知识。
传统E/E架构,多条CAN总线连接整个汽车的各个ECU,随着汽车功能和传感器的增加,ECU不断增加,传输的数据大小也在增加,我们会把功能类似的ECU集成到一起,形成。即使这样,传统E/E架构难以满足ECU的大量增加和联网的需求(CAN通信被网络读取所有信息,行车不安全),于是便提出了新型E/E架构,如下图。

Snipaste_2024-12-21_14-34-06

现在最新的架构是中央+区域集成
Snipaste_2024-12-21_14-35-54

回归到AUTOSAR,软件架构便逐渐由 Classic AutoSAR 向 Classic AutoSAR+Adaptive AutoSAR 混合式方向发展。Classic AutoSAR 基础软件分为四层,分别为服务层ASW、 ECU 抽象层BSW、微控制器抽象层MCALL和运行时环境RTE,运行时环境使应用软件从底层软件和硬件平台相互独立。除此之外还包括复杂驱动程序,由于对复杂传感器和执行器进行操作的模块涉及严格的时序问题,这部分暂时未被标准化。

Adaptive AutoSAR 相较于 Classic AutoSAR 具有软实时、可在线升级、操作系统可移植等优势。Classic AutoSAR 是基于强实时性(微秒级) 的嵌入式操作系统上开发出来的软件架构, 可满足传统汽车定制化的功能需求,但受网络的延迟、干扰影响较大,无法满足强实时性。随着自动驾驶、车联网等应用的复杂化, 软实时性的软件架构系统 Adaptive AutoSAR 诞生,其主要用于域控制器/中央计算平台,相对于 Classic AutoSAR的优点:

  • 为软实时系统,偶尔超时也不会造成灾难性后果;
  • 更适用于多核动态操作系统的高资源环境,如 QNX;
  • 软件功能可灵活在线升级。
    Snipaste_2024-12-21_14-40-05

补充:

分布式架构的极限是 L2 级别的自动驾驶,L3 级别已经超出承受范围。 ---《一文看懂第三代E/E架构》 作者:阿宝1990
实现 OTA 和“软件定义汽车”,智能车必须解耦软硬件。分布式架构的 ECU 来自不同供应商,有着不同的嵌入式软件和底层代码,软件生态复杂,OEM 无法自主进行整车维护,更无法实现 OTA。而 Tier1 更新 ECM 的周期和新车型的研发周期相匹配,一般为 2-3 年,率先实现 OTA 的特斯拉更新频率则为几个月一次,用户体验差异明显。在特斯拉已经掌握 OTA 技术的情况下,如果不尽早开始布局,传统车企或将重蹈诺基亚和摩托罗拉的覆辙。 ---《一文看懂第三代E/E架构》 作者:阿宝1990

参考引用:

《Adaptive AUTOSAR (AP)简介 》作者:Auto阿勋

https://blog.csdn.net/qq_44960487/article/details/140011740?spm=1001.2014.3001.5502
《一文看懂第三代E/E架构》 作者:阿宝1990

https://mp.weixin.qq.com/s/yVhVxlAXyxgC1ZDQ8_T3VQ

1.3 AUTOSAR架构有哪几层?分别有什么作用?

如下图,我们这里说的架构是classic autosar,也是现在普遍使用的架构。由ASW软件应用层(Application Layer,Appl)、RTE实时运行环境层(Runtime Environment)、BSW基础软件层(Basic Software)和微控制器层(Microcontroller)构成。

Snipaste_2024-12-21_13-08-47

其中,应用层是执行用户代码的区域;实时运行环境层提供应用层所需要的资源,将应用层和底层分离管理同时调度SWC,将SWC与BSW之间做映射。(SWC指应用层组件);基础软件层将对硬件的操作封装成统一AutoSAR标准的接口,供上层RTE调用。硬件层便是基础硬件资源了。此外,BSW是比较庞大的,还有横向与纵向描述,在BSW层再详细描述。

参考引用:

《Autosar入门随笔5——怎么去学习Autosar》 作者:因上努力,果上随缘.

https://blog.csdn.net/tim_lucia/article/details/143904155?spm=1001.2014.3001.5502

2.ASW层知识

2.1 Application Layaer(ASW、Appl)应用软件层包括哪些内容?

应用软件层内有多个软件组件(Software Component,SWC),软件组件之间通过端口(Port)交互。每个SWC可以运行任意个实体(Runnable Entity,RE

),实体中有相关控制算法,可由RTE事件触发。

ASW关系1

2.2 SWC具体指啥?好几种不同命名SWC说的是啥?

软件组件(SWC)指应用程序的核心,也是一些抽象层、复杂驱动层等实现的载体。可把每个SWC理解为一组.c和.h文件,其能实现了特定的功能,比如控制开关灯。

SWC大体上可分为原子组件(Atomic SWC)和部件(Composition SWC)。其中,部件可包含若干原子软件组件或部件。原子组件可根据不同用途分为以下几种类型:

1)应用软件组件(Application SWC);
2)传感器/执行器软件组件(Sensor/Actuator SWC);
3)标定参数软件组件(Parameter SWC);
4)ECU抽象软件组件(ECU Abstraction SWC);
5)复杂设备驱动软件组件(Complex Device Driver SWC);
6)服务软件组件(Service SWC);

应用软件组件主要用于实现应用层控制算法。

传感器/执行器软件组件用于处理具体传感器/执行器的信号,可以直接与ECU抽象层交互。

标定参数软件组件主要提供标定参数值。

ECU抽象软件组件提供访问ECU具体I/O的能力。该软件组件一般提供引用C/S接口的供型端口,即Server端,由其他软件组件(如传感器/执行器软件组件)的需型端口(Client端)调用。

此外,ECU抽象软件组件也可以直接和一些基础软件进行交互。

复杂设备驱动软件组件推广了ECU抽象软件组件,它可以定义端口与其他软件组件通信,还可以与ECU硬件直接交互。所以,该类软件组件灵活性最强,但由于其和应用对象强相关,从而导致其可移植性较差。

服务软件组件主要用于基础软件层,可通过标准接口或标准AUTOSAR接口与其他类型的软件组件进行交互。

2.3 Ports的作用是啥?不同类型之间有什么区别?

Ports是用于SWC之间做接口(interface)通信使用,或者SWC通过RTE和BSW做接口通信使用。可分三类,R-Ports、P-Ports和PR-Ports(Provide and Require Port,PR在AUTOSAR 4.1.1标准提出),分别是:

1)需型端口:用于从其他软件组件获得所需数据或所请求的操作;
2)供型端口:用于对外提供某种数据或某类操作;
3)供需端口:兼有需型端口与供型端口的特性。

AUTOSAR软件组件端口:
Snipaste_2024-12-22_14-21-17
由于端口仅定义了方向,所以AUTOSAR中用端口接口(Port Interface)来表征端口的属性,端口接口类型主要有如下几种:
1)发送者-接收者接口(Sender-Receiver Interface, S/R);
2)客户端-服务器接口(Client-Server Interface,C/S);
3)模式转换接口(Mode Switch Interface);
4)非易失性数据接口(Non-volatile Data Interface);
5)参数接口(Parameter Interface);
6)触发接口(Trigger Interface);

最常用的端口接口是1)、2)。

如下图,软件组件SWC1具有2个端口:其中一个引用的端口接口类型为发送者-接收者(S/R)接口,另一个引用的端口接口类型为客户端-服务器(C/S)接口。
对于引用发送者-接收者接口的一组端口而言,需型接口为接收者(Receiver),供型端口为发送者(Sender)。对于引用客户端-服务器接口的一组端口而言,需型端口为客户端(Client),供型端口为服务器(Server)。
AUTOSAR软件组件端口接口:
Snipaste_2024-12-22_14-25-07

1)发送者-接收者端口
用于数据的传递关系,发送者发送数据到一个或多个接收者。该类型接口中定义一系列的数据元素(Data Elemet,DE),这些数据元素之间相互独立。如下图,发送者-接收者接口SR_Interface中定义了2个数据元素,名字分别为DE_1、DE_2,并且需要为每个数据元素赋予相应的数据类型。
img

注意:一个软件组件的多个需型端口、供型端口、供需端口可以引用同一个发送者-接收者接口,且它们可以使用该接口中所定义的任意一个或多个数据元素,而不一定使用所有数据元素。

2)客户端-服务器接口
客户端-服务器接口用于操作(Operation,OP),即函数调用关系,服务器是操作的提供者,多个客户端可以调用同一个操作,但同一个客户端不能调用多个操作。客户端-服务器接口定义了一系列操作(Operation),即函数,它(们)由引用该接口的供型端口所在地软件组件来实现,并提供给引用该接口的需型端口所在地软件组件调用。如下图所示,该客户端-服务器接口CS_Interface中定义了两个操作OP_1与OP_2,对于每个操作需要定义相关参数及其方向,即函数的形参。

客户端-服务器端口定义:
img
注意:每个端口只能引用一种接口类型,并且引用相同端口接口类型的端口才能进行交互。

2.4 Runnable Entity是什么,如何理解?

Runnable 就是SWC中的函数,在AUTOSAR架构下,软件生成时,为空函数,需要手动添加代码。
Snipaste_2024-12-22_14-34-54

2.5 ASW工作流程(原理)是什么样的?

看了很多文章,对ASW层的工作流程理解还是有点模糊。基于雪云飞星大佬和明明1109大佬的文章,谈下我的个人认知。

软件组件SCW,在代码层面它是一个功能组件的所有.c和.h合集,在实物层面看作车灯、车灯开关。
Port就是每个组件的接口,有用于信息传输的也有用于接收的。
Runnanble就是SCW文件中的具体函数。
如下图,可以把7个SWC分配到两个控制器中(即2个MCU),MCU内部通信为RTE,外部通信采用总线通信。

Snipaste_2024-12-22_14-38-18

补充:
ASW层通常由OEM整机厂开发。

AUTOSAR规范定义了三种数据类型(Data Type):
1)应用数据类型(Application Data Type,ADT);
2)实现数据类型(Implementation Data Type,IDT);
3)基础数据类型(Base Type)。

应用数据类型是在软件组件设计阶段抽象出来的数据类型,用于表征实际物理世界的量,是提供给应用层十一点,仅仅是一种功能的定义,并不生成实际代码。

实现数据类型是代码级别的数据类型,是对应用数据类型的具体实现;它需要引用基础暑假类型,并且还可以配置一些计算方法(Compute Method)与限制条件(Data Constaint)。

AUTOSAR中,对于Application Data Type没有强制要求使用,用户可以直接使用Implementation Data Type。若使用了Application Data Type,则必须进行数据类型映射(Data Type Mapping),即将Application Data Type与Implementation Data Type进行映射,从而对每个Application Data Type进行具体实现。

3.RET层知识

3.1 什么是RTE?它的功能和作用是什么?

RTE如其全称Runtime Environment,实时运行环境,其为SWC提供了运行环境。

它的作用是实现ECU内外部的通信管理,runnable的触发和唤醒均是在RTE中实现

4.BSW层知识

5.微控制器层知识

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

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

相关文章

Win11环境下安装Oracle Databases 11g 遇到[INS-13001]环境不满足最低要求解决办法

找到你解压后的文件,点击打开database文件夹 -->stage文件夹 -->cvu文件夹 -->cvu_prereq.xml文件,用记事本打开cvu_prereq.xml文件; 在这个<CERTIFIED_SYSTEMS>。。。</CERTIFIED_SYSTEMS>语句之间增加如下代码: ...... <CERTIFIED_SYSTEMS> &…

Zookeeper入门api与应用

一、 说明 Zookeeper作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态…

马走日(结论题)

这道题本质上,是一道结论题,结论如下: 1.小尺寸处理: 如果点阵的行或列有一个为1,则马无法移动,只能留在起点,此时答案为1。 如果点阵的最小边为2,则马只能沿着较长的边移动,每次移动步长为2,此时答案为较长边的一半加1。 2.中等尺寸处理: 当点阵为3x3时,马无法到达…

[lnsyoj1158] 淘淘蓝蓝之幻影树

dp题意sol 若某一方胜利,则设该方战胜的区间为 \([l_i,r_i]\),那么过程可描述为 \(1\) 打败 \([l_1,r_1]\),\(2\) 打败 \(l_2,r_2\)…………\(k\) 打败 \([l_k,r_k]\)。显然,\(k\) 打败 \([l_k,r_k]\)…………\(2\) 打败 \(l_2,r_2\),\(1\) 打败 \([l_1,r_1]\) 与之等价,…

NAS——强化学习结合CNN

一. 子模型的基本架构子模型由N个卷积单元和M个缩减单元按一定规则排列后加上GAP层、FC层和Softmax层组成。关键:通过引入卷积单元和缩减单元,充分发挥了CNN模型强大的特征提取能力。 整个结构中后面三层是确定的,中间的卷积单元和缩减单元要从搜索空间中获取。 二. 搜索空间…

Learn Learn Go Reverse

根据做题学习 [i春秋ezgo]Go栈扩容的逻辑,这里无需关注。具体汇编代码输入函数与输出函数系统学习go reverse 参考文章: https://forum.butian.net/share/1874 Go基础 见 https://forum.butian.net/share/1874 查看Go版本 //一、查看版本号 go version xx.exe //二、查看地址以…

Learn Learn Android Reverse

安卓基础 NDK开发 jni调用什么是jni?jni是Java Native lnterface的缩写。从java1.1开始,jni标准成为Java平台的一部分,允许Java代码和其他语言写的代码进行交互GetStringUTFChars();将java字符串转换为c字符串.java的字符串在虚拟机中,通过硬编码调用,cstring在内存中.env-&g…

2016蓝桥杯省赛B组

2016蓝桥杯省赛B组 1.煤球数目#include<bits/stdc++.h>using namespace std;int dp[200];int main(){ int sum=0; for(int i=1;i<=100;i++){ dp[i]=dp[i-1]+i; sum+=dp[i]; } cout<<sum; return 0;} 思路: 每一层煤球个数 0+1-&g…

css3手册

布局浮动:做文字环绕效果 弹性盒:单行或单列布局 网格:多行多列布局 弹性盒详细文档见MDN 弹性盒小游戏生成弹性容器和弹性项目默认情况下,弹性项目沿着主轴依次排列,侧轴拉伸 更改方向 通过flex-direction可更改主轴方向主轴排列 通过justify-content属性,可以影响主轴的…

CNN

具体在第五次汇报卷积神经网络是多层感知机(MLP)的变种。卷积神经网络(Convolutional Neural Networks)是一种包含卷积计算且具有深度结构的前馈神经网络,CNN具有表征学习的能力,能够按阶层对输入数据进行平移不变分类。CNN的设计灵感来源于动物视觉系统分级处理信息的能力…

LSTM(Long Short-Term Memory)长短时记忆结构

随着RNN在长序列处理中的应用深入,发现了其难以捕捉长距离依赖的问题。LSTM是传统RNN的变体,与经典RNN相比能够有效捕捉长序列之间的语义关联,通过引入了“记忆单元”(Memory Cell)和“门控机制”来控制信息的流动,解决了标准RNN中梯度消失和梯度爆炸的问题。其核心结构可…

MDB2PPT_v2.0 mdb数据转换为PPT

前言: 本软件原名“DataToPowerPoint”,已有将近20年的历史,目的是方便将mdb数据库中的数据导出为ppt进行学习或讲座。2007-9-29曾发布于“网上读书园地”,原先为共享软件,未注册版本有功能限制,如:至多输出30条数据、不能使用高级功能。近期对软件界面的布局等作了一些…