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设计网站也能帮助您探索新的设计解决方案,…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...

从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...