AUTOSAR介绍
1、AUTOSAR架构介绍
AUTOSAR(AUTomotive Open System ARchitecture,汽车开放系统架构)是汽车和软件行业领先公司的全球合作联盟,为智能移动开发和建立标准化的软件框架以及开放的E/E系统架构。考虑到目前和未来市场中不同的汽车E/E架构,AUTOSAR联盟为汽车软件架构建立了开放的行业标准。因此AUTOSAR有两种含义,一是代表AUTOSAR联盟,二是代表AUTOSAR软件架构。
1.1 AUTOSAR基本原理
相比传统软件架构,AUTOSAR在上层软件和底层硬件平台之间嵌入标准的中间层,实现了软硬件的解耦。AUTOSAR的口号是标准上协作,实现上竞争。
通过软硬件解耦,缩短研发周期和降低研发成本,同时通过软件的复用提供研发质量和效率。由于有统一的标准(软件接口,文件交换格式,方法论),因此OEM、供应商、工具提供商等可以协同开发,简化软件系统的集成,软件模块可以复用和高效率的衍生,提高了研发效率,降低整体软件的研发成本。
1.2 基本的AUTOSAR方法
下图是简化版的AUTOSAR开发工作流。AUTOSAR将应用软件和硬件平台进行解耦,在应用软件和基础软件与硬件之间嵌入虚拟功能总线,应用之间的通信或者访问硬件资源等都是通过虚拟功能总线进行资源交换。在Classic Platform中虚拟功能总线为RTE层,在Adaptive Platform中虚拟功能总线为ARA层。由于AUTOSAR采用自上而下的方法论,从架构设计、接口描述,软件开发,功能组件集成都是采用模型开发。因此可以使用代码生成工具,将SWC描述文件、ECU描述文件、系统约束文件等导入工具后可以生成可执行代码。

1.3 目标
无论是AP AUTOSAR还是CP AUTOSAR,总体目标是一致的:
-
更好的管理数量增多,功能复杂度增加的汽车ECU
-
改善ECU软件质量和可靠性
-
提升产品升级灵活性,缩短产品推向市场的时间
-
可拓展的架构解决方案
2、AUTOSAR Classic Platform架构
Classic AUTOSAR将微控制器上的软件抽象为三个软件层:应用程序、运行时环境(RTE)和基本软件(BSW)。其中BSW分为三个主要层:服务层、ECU抽象层和微控制器抽象层。应用与应用之间,以及应用于BSW之间的通信都是经过RTE完成数据交换,因此做到了应用与硬件的完全独立。
Classic AUTOSAR是分层软件体系结构,软件需求在设计时通过每一层的静态配置来实现。因此,对于运行时的更改,它的灵活性较低,但是这点还是可以接受的,因为这个平台通常在车辆的生命周期内保持稳定,因为被控制的传感器和执行器的应用逻辑不会改变,传感器和执行器仍然履行它们本身的功能。
3、AUTOSAR Adaptive Platform架构
Adaptive AUTOSAR平台为AUTOSAR应用实现了运行环境ARA。使用两种接口完成数据交换:服务和API。平台由功能集群组成,这些集群按服务和自适应AUTOSAR基础进行分组如下。
Adaptive AUTOSAR解决了新一代汽车高性能需求、连接性和持续软件无线(OTA)更新带来的新市场需求,它作为多个供应商的软件集成平台,解决了Classic AUTOSAR经典架构的局限性,其为灵活性而设计的,以便在运行时支持软件更改。Adaptive AUTOSAR构建在POSIX操作系统之上,由不同的功能模块组成,这些模块被划分在服务模块和基础模块上,它的的通信是面向服务类型的,会将网络绑定到DDS或者SOME/IP使用以太网与其它ECU通信。
由于外部系统的发展或功能的改进,在车辆的生命周期中,车辆中的软件需要更改。由于AUTOSAR Classic Platform(CP)标准不能完全解决以上需求,因此,AUTOSAR组织提出了AP平台的标准,AP平台主要提供了高性能的计算和通信机制以及灵活的软件配置,例如支持OTA软件升级。
4、AUTOSAR CP平台与AP平台特性比较

4.1 芯片类型
CP AUTOSAR一般运行在8bit、16bit、32bit的微控制器(MCU)中,如英飞凌的TC3xx,瑞萨的RH850等。
AP AUTOSAR可以运行在64bit的高性能处理器(MPU)、CPU等中,如瑞萨的H3,英伟达的Xavier等。除此之外,AP AUTOSAR也可以运行在虚拟硬件上。
PS:有些公司可能会将某种POSIX OS移植到如TC3xx中,进而在TC3xx中使用AP,这种例子很少见,且不推荐。
4.2 芯片算力
运行CP AUTOSAR 的芯片算力一般低于1000 DMIPs
AP AUTOSAR可以运行在算力高于20000 DMIPs的芯片上
综上,AUTOSAR包含了Classic Platform和Adaptive Platfrom。Adaptive Platform并不是用来取代Classic Platform或者非AUTOSAR平台,而是为了相互兼容,协作并满足未来的需求。
4.3 OS类型
CP AUTOSAR OS是基于OSEK标准的。
AP AUTOSAR OS是POSIX OS,且至少应包含PSE51子集
4.4 架构
CP AUTOSAR是分层的软件架构,有较为明显得上下层关系,如下图所示:

从下到上依次为:
1、微控制器层(HW)
2、基础软件层(BSW)
-
微控制器抽象层
-
ECU抽象层
-
服务层
-
复杂驱动
3、RTE层
4、Application层
AP AUTOSAR一般是指ARA(AUTOSAR Runtime for Adaptive Applications),主要由两部分组成(Foundation和Service),如下图所示:

上图中,所有的模块都称为功能集群(Functional Clusters, FC)。
上图中,蓝色的FC属于Foundation的部分,橘色的部分属于Service的部分。
无论是Foundation部分的FC,还是Service部分的FC,都不是上下层关系。
4.5 架构设计原则
CP AUTOSAR架构设计原则为:
-
CP AUTOSAR将于硬件相关的以及通用系统功能定义为BSW模块
-
应用功能定义为独立的软件组件SWC
-
RTE分离SWC和BSW
-
BSW可配置,并且可以被多个产品线的ECU重复使用
-
不开源
AP AUTOSAR架构设计原则为:
-
遵循面向服务的架构SOA设计范式(理念)
-
充分利用其他领域软件成熟技术,重用软件市场成熟组件,缩短开发周期
-
充分利用各种开源软件
4.6 开发流程
开发流程来看,CP与AP都主要都包括以下三个阶段:
-
设计阶段:设计ARXML
-
代码生成:基于ARXML生成代码
-
集成:集成Application,编译调试等
主要有以下不同:
在AP AUTOSAR设计阶段,需要进行Service与Manifest的设计,而CP则不用。CP需要进行ECU配置设计,而AP没有ECU配置这个设计项。
当然,CP 与AP都需要进行系统设计,诊断设计,具体的不同体现在设计时。
在代码生成时,CP是生成基础软件模块相关的代码,AP生成的是FC相关的代码和Manifest,需要注意的是,AP中不是所有的FC都会生成相关的代码和Manifest。
集成时,AP AUTOSAR需要考虑 OEM Application Cloud,而CP则不用。
CP 与AP开发流程如下图所示:
蓝色虚线框表示CP AUTOSAR的开发流程,绿色表示AP AUTOSAR的开发流程。
上图中,在代码生成阶段没有体现AP要生成Manifest,实际开发时需要。
上图中,只是一个简单的整理,并没有涵盖AUTOSAR所有需要设计的内容。
4.7 接口类型
CP AUTOSAR常用的接口是Sender-Receiver,Client-Server等
AP AUTOSAR常用的接口是Service Interface等
当设计CP AUTOSAR与AP AUTOSAR之间的通信时,需要进行信号到服务的转换设计!当前能提供该功能(已经用在具体项目了)的公司只有一家日本公司!
4.8 通信方式
CP AUTOSAR是基于信号的通信,主要包括CAN、Lin、FlexRay等。
AP AUTOSAR是面向服务的通信,支持基于以太网的IPC、RPC等。
CP AUTOSAR虽然可以支持SOME/IP,但是,CP AUTOSAR中SOME/IP只不过是把Sender-Receiver的CAN通信转换成了Client-Server的以太网通信,整个通信链路仍是静态配置的,并不是真正的面向服务的通信。
这也是为什么AUTOSAR官方说AP AUTOSAR是SOA,但从来不会说CP AUTOSAR是SOA。
4.9 调度方式
CP AUTOSAR OS采用固定的任务调度配置。在OS Task中调度BSW Main Functions以及SWC的Runnable Entities,按既定规则顺序执行。并协同BSW Modules和App SWC的模式切换。
AP AUTOSAR 支持多种动态调度策略,配置在运行时完成,配置信息在Manifest文件中体现。
AP AUTOSAR中与调度相关的模块主要为执行管理(EM)和状态管理(SM),应用程序运行在Process、Thread中。
CP AUTOSAR中,任务的调度周期可以到us级别。而AP AUTOSAR是在ms(一般是几十上百)级。
4.10 Safety
根据AUTOSAR官方的说法,在功能安全上,CP AUTOSAR可以支持高达ASIL-D的系统开发。AP可以支持高达ASIL-B的系统开发。
当然,这并不意味着,使用AP时,最多只能设计出ASIL-B的系统。
更深的内容就跟功能安全有关了,建议参考以下ISO26262以及CP & AP AUTOSAR与功能安全相关的文档。
CP AUTOSAR中的Safety机制主要有:
1、与OS相关的Safety机制:
-
内存保护
-
时序保护
-
硬件保护
2、E2E保护
3、看门狗管理器
-
Alive 监视
-
Deadline 监视
-
Logic 监视
4、硬件诊断
-
Core Test
-
RAM Test
-
Flash Test
AP AUTOSAR中支持E2E。同时也提供了以下恢复措施:
-
请求SM切换到指定Function Group状态
-
请求EM重新启动指定进程
-
将错误信息转发到应用程序
相关文章:
AUTOSAR介绍
1、AUTOSAR架构介绍 AUTOSAR(AUTomotive Open System ARchitecture,汽车开放系统架构)是汽车和软件行业领先公司的全球合作联盟,为智能移动开发和建立标准化的软件框架以及开放的E/E系统架构。考虑到目前和未来市场中不同的汽车E/E架构,AUTOS…...
10. 计算机网络HTTP协议
1. 前言 无论是作为后端开发、前端开发、测试开发程序员或者是运维人员,在面试过程中,大概率都会被问到 HTTP 协议相关题目。 因为伴随着 2010 年之后移动互联网在全世界的高速发展,各种各样的浏览器(Chrome、FireFox、Safari 等)层出不穷,也诞生了诸多服务端开发的语言…...
“职场中,不要和上司作对”,真的很重要吗?你认同这句话吗?
在职场上,领导对下属的期望永远都只有两个字,不是忠诚,也不是能力,而是省心。 领导对下属的要求就是别让我操心。 在职场中,通常面临的首要问题就是如何与领导相处。 把职场中的前辈当作老师来尊重,你尊…...
可视化目标检测算法推理部署(一)Gradio的UI设计
引言 在先前RT-DETR模型的学习过程中,博主自己使用Flask框架搭建了一个用于模型推理的小案例: FlaskRT-DETR模型推理 在这个过程中,博主需要学习Flask、HTML等相关内容,并且博主做出的页面还很丑,那么,是…...
【PyTorch】基于YOLO的多目标检测项目(一)
【PyTorch】基于YOLO的多目标检测项目(一) 【PyTorch】基于YOLO的多目标检测项目(二) 目标检测是对图像中的现有目标进行定位和分类的过程。识别的对象在图像中显示有边界框。一般的目标检测方法有两种:基于区域提议的…...
spring boot 实现 Stream 钉钉事件订阅
1: 参考链接 https://open.dingtalk.com/document/orgapp/develop-stream-mode-push-server 2:钉钉开放平台订阅配置 配置之后运行一下上面提供的链接 里面的main方法,验证通道 3:订阅启动方式 EventListenerThread eventListenerThrea…...
基于 Rough.js 的 Vue 散点图绘制
本文由ScriptEcho平台提供技术支持 项目地址:传送门 基于 Rough.js 的 Vue 散点图绘制 应用场景 本代码展示了如何使用 Rough.js 库在 Vue 应用程序中绘制散点图。Rough.js 是一个轻量级 JavaScript 库,用于创建具有手绘风格的可视化效果。散点图是一…...
【c++】用c++指针传递来模拟“靶向治疗”
一:源码: #include <iostream>void targetedTherapy(bool* flag) {if (*flag == false) {*flag = true;} }int main() {//代表一系列癌细胞//true为健康细胞 false为癌变细胞bool cancerCell[7] = {true, false, true, true, true, true, false};for (int i = 0; i &…...
如何开启idea中的断言功能?
目录 一、什么是断言? 二、Java断言的语法 三、开启断言 一、什么是断言? 断言(assert)是 Java 中的一条语句,一种在程序中的逻辑(如一个结果为真或假的逻辑判断式),目的是验证软…...
大模型之语言大模型技术
本文作为大模型综述第二篇,介绍语言大模型基本技术。 近年来,在 Transformer 架构基础上构建的预训练语言模型为自然语言处理领域带来了一系列突破式进展,成为人工智能主流技术范式。预训练语言模型采用“预训练+微调”方法,主要分为两步: 1)将模型在大规模无标注数据上…...
浮点数例外 (核心已转储) 的问题记录
一般这种问题,是程序运行过程中出现浮点数运算错误导致的程序崩溃 浮点异常可能由以下几个原因引起: 除以零:当程序中出现除以零的操作时,会触发浮点异常。例如,当一个数除以0时,会导致浮点异常。数值溢出…...
Vite项目中根据不同打包命令配置不同的后端接口地址,proxy解决跨域
在vite.config.ts同级目录添加两个文件 .env.development #开发环境 VITE_APP_ENV developmentVITE_APP_BASE_API .env.production #生产配置 VITE_APP_ENV productionVITE_APP_BASE_API https://www.bdjw.work代码中使用路径 const request axios.create({baseURL: i…...
Java新手启航:JDK 21 版本安装,开启编程之行
在Java开发前,JDK是必不可少的环境,接下来,让我们一起完成JDK 21版本的下载和安装! 种一棵树最好的时间是10年前,其次就是现在,加油! …...
Redis学习[5] ——Redis过期删除和内存淘汰
六、Redis过期键值删除 6.1 Redis的过期键值删除策略 6.1.1 什么是过期键值删除? Redis中是可以对key设置过期时间的,所以需要有相应的机制将已过期的键值对删除,也就是**过期键值删除策略。Redis会用一个过期字典(expires dic…...
书生大模型学习笔记 - Python
Python实现wordcount 请实现一个wordcount函数,统计英文字符串中每个单词出现的次数。返回一个字典,key为单词,value为对应单词出现的次数。 解题思路:首先把字母转小写>然后把单词取出来去除标点>循环单词列表>key已存…...
JavaScript青少年简明教程:面向对象编程入门
JavaScript青少年简明教程:面向对象编程入门 JavaScript 支持多种编程范式(programming paradigms),即支持多种不同的编程风格和方法。 前面介绍的编程方式,主要是面向过程编程(Procedural Programming&am…...
电话号的标准
点击标题下「蓝色微信名」可快速关注 最近碰到个电话号码的问题,除了常规数字,可能还会有国内国际的区号,例如中国,86、086、86,这些好像都见过,但什么是标准的?谁来定义的? 国际电信…...
项目实战_表白墙(升级版)
你能学到什么 表白墙(升级版)Mybatis的一些简单应用 正文 前⾯的案例中, 我们写了表⽩墙, 但是⼀旦服务器重启, 数据就会丢失. 要想数据不丢失, 需要把数据存储在数据库中,接下来咱们借助MyBatis来实现数据库的操作。 数据准备 如果我们…...
创意无限:11个设计圈热议的UI设计灵感网站集锦
无论你是一个经验丰富的UI设计师还是一个新的UI设计师,拥有一些高质量、可靠的UI设计网站灵感库都能加速你的设计过程。借助灵感资源,您可以更快、更有效地启动该项目。与此同时,优秀的UI设计网站也能帮助您探索新的设计解决方案,…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
