车载软件架构 —— Adaptive AUTOSAR是软件架构的正解吗?

车载软件架构 —— Adaptive AUTOSAR是软件架构的正解吗?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。
老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠自己,四海皆为家。人生的面吃一碗少一碗,人生的面见一面少一面。人生就是一次次减法,来日并不方长。自己的状态就是自己最好的风水,自己的人品就是自己最好的运气。简单点,善良点,努力点,努力使每一天都开心,不为别人,只为自己。

本文大体如下:

1、概述—关于智能ECUs的概况

2、技术驱动程序

3、经典、自适应和Non-AUTOSAR ECUs的整合

4、总结

一、概述—关于智能ECUs的概况

传统的ECUs主要实现替代或增强机电系统的功能。这些深度嵌入的ECUs中的软件根据输入信号和来自连接到车辆网络的其他ECUs的信息控制电气输出信号。大部分控制软件都是为目标车辆设计和实施的,在车辆寿命期间不会有重大变化。

新的车辆功能(如高度自动驾驶)将在车辆中引入高度复杂且需要大量计算资源的软件,并且必须满足严格的完整性和安全性要求。这些软件可实现环境感知和行为规划等功能,并将车辆集成到外部后台和基础设施系统中。在车辆的生命周期内,由于外部系统不断发展或功能不断改进,车辆中的软件需要不断更新。

AUTOSAR 经典平台(CP)标准满足了深度嵌入的ECUs的需求,但无法满足上述ECUs 的需求。因此,AUTOSAR 指定了第二个软件平台,即 AUTOSAR 自适应平台(AP)。AP主要提供高性能计算和通信机制,并提供灵活的软件配置,例如支持软件空中更新。为CP专门定义的功能(如访问电信号和汽车专用总线系统)可集成到 AP中,但不在标准化的重点范围内。

二、技术驱动程序

技术驱动因素主要有两类。

-> 一个是以太网;

->另一个是处理器。

随着车载网络带宽要求的不断提高,以太网应运而生。与CAN等传统车载通信技术相比,以太网可提供更高的带宽,并通过交换网络实现更高效的长信息传输、点对点通信等。CP 虽然支持以太网,但它主要是为传统通信技术设计的,并为此进行了优化,因此很难充分利用和受益于基于以太网的通信能力。

同样,随着车辆智能化程度的不断提高,近年来对处理器性能的要求也在大幅提高。多核处理器已在CP中使用,但对处理能力的需求并不仅仅是多核。拥有几十到几百人内核的多核处理器、GPGPU (GPU 的通用型)、EPGA和专用加速器正在出现,因为这些处理器的性能比传统的MCUs高出几个数量级。CP 最初是为单核 MCU 设计的尽管它可以支持多核。此外,随着计算能力的膨胀,即使在数据中心,能效也已经成为一个问题,而对于这些智能ECUs 来说,能效问题实际上更为重要。从半导体和处理器技术的角度来看,受波拉克法则的限制,物理上不可能无止境地提高处理器频率,唯一能提高性能的方法就是采用多核(和多核) 并行执行。此外,众所周知,每瓦特的最佳性能是通过混合使用不同的计算资源实现的,如多核、协处理器、GPU、EPGA和加速器。这就是所谓的异构计算–HPC (High-Performance 计算)目前正在利用异构计算–这无疑远远超出了CP的范围。

值得一提的是,处理器和更快的通信速度也会产生综合效应。随着越来越多的处理元件被组合到单芯片中,如多核处理器,这些处理元件之间的通信速度和效率也比传统的 inter-ECU 通信快了几个数量级。新型处理器互连技术(如 Network-on-Chip (NoC))使之成为可能。芯片内更强的处理能力和更快的通信速度所产生的综合效应,也促使我们需要一个能满足不断增长的系统要求的新平台。

关于自适应平台的特点

上述概述的因素决定了AP的特性。未来的发展必然要求更高的计算能力,而技术趋势为满足这种需求提供了一个基线。然而,在安全相关领域的HPC中,虽然功率和成本效率也很重要,但其本身也带来了各种新的技术挑战

为应对这些挑战,AP采用了ECUs传统上未充分利用的各种成款技术,同时允许AP的实施有最大的自由度,以充分利用创新技术。

image

1、SOA

为了支持复杂应用,同时在处理分配和计算资源分配方面实现最大的灵活性和可扩展性,AP 采用了面向服务的体系结构 (SOA)。SOA 所基于的概念是,系统由一系列朋务组成,其中一项服务可能会依次使用另一项服务,而应用程序则根据自身需要使用一项或多项服务。SOA 通常表现出系统的系统特征,AP 也具有这种特征。例如,一项服务可能位于应用程序也运行的本地 ECU 上,也可能位于同时运行另一个 AP 实例的远程 ECU 上。在这两种情况下,应用程序代码都是一样的–通信基础架构将提供透明的通信,以消除差异。另一种看待这种架构的方式是分布式计算,通过某种形式的消息传递进行通信。总的来说,所有这些都代表了相同的概念。这种基于消息传递和通信的架构还可以从以太网等快速高带宽通信的兴起中获益。

2、并行处理

分布式计算本身就是并行的。由于不同的应用程序使用不同的服务集,SOA 也具有这一特点。提供并行处理能力的多核处理器和异构计算技术的发展为利用计算能力来匹配内在并行性提供了技术机遇。因此,随着多核异构计算技术的发展,AP 具有扩展其功能和性能的架构能力。事实上,硬件和平台接口规范只是等式的一部分,OS/管理程序技术和开发工具(如自动并行化工具) 的进步也至关重要,AP 提供者和行业/学术生态系统应满足这些要求。AP 的目标也是适应这些技术。

3、利用现有标准

重新发明轮子是没有意义的,尤其是在涉及规范而非实施时。AP采取了重复使用和调整现有开放标准的策略,以促进AP自身的快速发展,并从现有标准的生态系统中获益。因此,开发 AP 规范的一个关键重点是不要随意引入现有标准已提供的新巷代功能。例如,这意味着不能因为现有标准提供了所需功能,但界面表面上不容易理解,就随意引入新的界面

image

4、安全和Security

AP所针对的系统往往需要一定程度的安全和Security,可能是最高级别的安全和Securitv。新概念和新技术的引入不应损害这些要求,尽管要做到这一点并非易事。为了应对这一挑战,AP结合了架构、功能和程序方法。该架构以基于 SOA 的分布式计算为基础,从本质上使每个组件更加独立,不受意外干扰:专用功能有助于实现安全和Secure; C++ 编码指南等准则有助于安全可靠地使用 C++ 等复杂语言。

5、计划动态

AP支持应用程序的增量部署,对资源和通信进行动态管理,以减少软件开发和集成的工作量,缩短迭代周期。增量部署还支持探索性软件开发阶段。

在产品交付方面,AP 允许系统集成商仔细限制动态行为,以降低不必要或不利影响的风险,从而实现安全鉴定。应用程序的动态行为将受到执行清单(见第 4.6 节)中所述约束的限制。多个应用程序的清单之间的相互作用可能会在设计时就造成这种情况。不过,在执行时,资源和通信路径的动态分配只能以规定的方式进行,例如在配置范围内。

AP的实施可进一步从生产使用的软件配置中移除动态功能。计划中的动态功能举例如:

-> 预先确定服务发现过程

-> 将动态内存分配限制在启动阶段

-> 除基于优先级的调度外,还采用公平调度策略

-> 将Process固定分配给CPU内核

-> 仅访问文件系统中的已有文件

-> 应用程序使用 AP API的限制条件

-> 仅执行经过验证的代码

image

6、灵活

AP的目标是适应不同的产品开发Process,尤其是基于敏捷的Process,尽管这一点并未直接体现在平台功能中。对于基于敏捷的开发,至关重要的是系统的底层架构可逐步扩展,并可在部署后更新系统。A 的架构应能做到这一点。

三、经典、自适应和Non-AUTOSAR ECUs的整合

如前文所述,AP不会取代IVI/COTS 中的CP或Non-AUTOSAR平台。相反,它将与这些平台和路边基础设施等外部后端系统互动,形成一个集成系统(参看下图)。例如,CP已包含SOME/IP,而AP也支持 SOME/IP 和其他协议。

image
Exemplary deployment of different platforms

image
Exemplary interactions of AP and CP

AP定义了运行时系统架构、平台的构成以及平台提供的功能和接口。它还定义了用于开发此类系统的 Machine 可读模型。该规范应提供使用平台开发系统的必要信息,以及实施平台本身需要满足的要求。

四、总结

Adaptive AUTOSAR是一种基于服务的软件平台,它支持高性能、灵活和可更新的汽车应用程序。其软件架构主要包括以下几个部分:

硬件/虚拟机层:这是Adaptive AUTOSAR架构的最底层,包括所需的物理资源,如处理器、内存、网络等。这一层为上层提供硬件抽象和虚拟化功能。

基础层:基础层提供一系列基础服务,如通信管理、执行管理、服务发现等。这些服务为上层应用程序提供必要的支持和运行环境。

服务层:服务层包含一系列可复用的软件组件,这些组件以服务的形式提供给上层应用程序。这些服务可以是车辆功能、传感器数据处理、算法实现等。服务层的设计使得应用程序可以更加灵活和高效地组合和使用这些服务。

应用层:应用层是Adaptive AUTOSAR架构的最上层,包括各种汽车应用程序。这些应用程序基于服务层提供的服务进行构建,实现车辆的各种功能和特性。应用层的应用程序可以是多个独立的进程,它们之间通过基础层提供的通信管理机制进行交互。

在Adaptive AUTOSAR架构中,通信管理是一个重要的组成部分。它负责应用程序之间的函数调用和事件发送。服务请求是双向数据流,即发送请求者会收到服务端的反馈。事件发送则是由客户端发起,单向数据流。这种通信机制使得应用程序可以更加灵活地进行交互和协作。

此外,Adaptive AUTOSAR还支持多执行环境,即不同的应用程序可以在不同的执行环境中运行。这使得应用程序可以根据其特性和需求选择最适合的执行环境,从而提高性能和效率。

总的来说,Adaptive AUTOSAR软件架构是一种基于服务的、分层的软件架构,旨在为汽车应用程序提供高性能、灵活和可更新的运行环境。通过分层设计和模块化组件的使用,它实现了应用程序之间的解耦和高效协作。

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者!

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【JVM篇】分析并讲解字节码文件

文章目录 🍔字节码文件⭐打开字节码文件的工具⭐字节码文件的组成✨具体分析 🍔字节码文件 字节码文件是一种中间表示形式,它通常由编译器将高级编程语言(如Java、Python等)源代码编译而成。字节码文件包含了程序的指…

分享88个文字特效,总有一款适合您

分享88个文字特效,总有一款适合您 88个文字特效下载链接:https://pan.baidu.com/s/1Y0JCf4vLyxIJR6lfT9VHvg?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不…

Java串口通信技术探究1:深入理解RXTX库

目录 一、RXTX库简介二、RXTX库工作原理三、RXTX库的应用场景四、RXTX库的兼容性五、RXTX库下载及安装 在现代嵌入式系统中,串口通信是一种非常常见的通信方式。通过串口,设备之间可以传输各种类型和格式的信息。Java作为一种流行的编程语言,…

C++多线程学习[五]:RAII锁

一、什么是RAII 使用局部对象来控制资源的技术,即它的生命周期由操作系统来管理,无需人工的介入。 为什么要采用RAII技术呢? 主要是在开发过程中资源的销毁容易忘记,容易造成死锁或内存泄露。 {}为一个区域 ,这里锁的…

java nio零拷贝

零拷贝是一种计算机执行IO操作的优化技术,其核心目标是减少数据拷贝次数,从而提高系统性能。它主要体现在以下几个方面: 1. **定义与原理**:零拷贝字面上的意思包括“零”和“拷贝”。其中,“拷贝”是指数据从一个存储…

单片机与外设的交互

单片机与外设的交互是嵌入式系统中非常重要的一个基础知识点。单片机是一个集成在同一芯片上的中央处理器、存储器和输入/输出接口,它可以根据用户编写的程序与各种外部设备即外设进行交互。单片机与外设之间的交互主要通过单片机上的输入/输出口(I/O口)来实现。 I/O口的工作原…

Python访问数据库

目录 SQLite数据库 SQLite数据类型 Python数据类型与SQLite数据类型的映射 使用GUI管理工具管理SQLite数据库 数据库编程的基本操作过程 sqlite3模块API 数据库连接对象Connection 游标对象Cursor 数据库的CRUD操作示例 示例中的数据表 无条件查询 有条件查询 插入…

快速学习Spring

Spring 简介 Spring 是一个开源的轻量级、非侵入式的 JavaEE 框架&#xff0c;它为企业级 Java 应用提供了全面的基础设施支持。Spring 的设计目标是简化企业应用的开发&#xff0c;并解决 Java 开发中常见的复杂性和低效率问题。 Spring常用依赖 <dependencies><!-…

【C语言】C的整理记录

前言 该笔记是建立在已经系统学习过C语言的基础上&#xff0c;笔者对C语言的知识和注意事项进行整理记录&#xff0c;便于后期查阅&#xff0c;反复琢磨。C语言是一种面向过程的编程语言。 原想在此阐述一下C语言的作用&#xff0c;然而发觉这些是编程语言所共通的作用&#…

使用securecrt+xming通过x11访问ubuntu可视化程序

windows使用securecrtxming通过x11访问ubuntu可视化程序 windows机器IP&#xff1a;192.168.9.133 ubuntu-desktop20.04机器IP&#xff1a;192.168.9.190 windows下载xming并安装 按照图修改xming配置 开始->xming->Xlaunch 完成xming会在右下角后台运行 windows在…

LeetCode Python -8.字符串转整数

文章目录 题目答案运行结果 题目 请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格检查下一个…

大数据Doris(六十五):基于Apache Doris的数据中台2.0

文章目录 基于Apache Doris的数据中台2.0 一、​​​​​​​架构升级

分享76个时间日期JS特效,总有一款适合您

分享76个时间日期JS特效&#xff0c;总有一款适合您 76个时间日期JS特效下载链接&#xff1a;https://pan.baidu.com/s/1s7tPGT_ItK7dNK5_qbZkug?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

C语言 服务器编程-日志系统

日志系统的实现 引言最简单的日志类 demo按天日志分类和超行日志分类日志信息分级同步和异步两种写入方式 引言 日志系统是通过文件来记录项目的 调试信息&#xff0c;运行状态&#xff0c;访问记录&#xff0c;产生的警告和错误的一个系统&#xff0c;是项目中非常重要的一部…

《Linux 简易速速上手小册》第7章: 网络配置与管理(2024 最新版)

文章目录 7.1 Linux 网络基础7.1.1 重点基础知识7.1.2 重点案例&#xff1a;配置静态 IP 地址7.1.3 拓展案例 1&#xff1a;使用 nmcli 配置网络&#xff08;适用于 Fedora/CentOS&#xff09;7.1.4 拓展案例 2&#xff1a;配置无线网络连接 7.2 静态与动态 IP 配置7.2.1 重点基…

关于物理机ping不通虚拟机问题

方法一 设置虚拟机处于桥接状态即可&#xff1a;&#xff08;虚拟机->设置->网络适配器&#xff09;&#xff0c;选择完确定&#xff0c;重启虚拟机即可。 方法二 如果以上配置还是无法ping通&#xff1a;&#xff08;编辑->虚拟网络编辑器&#xff09; 首先查看主机网…

基于大语言模型的AI Agents

代理&#xff08;Agent&#xff09;指能自主感知环境并采取行动实现目标的智能体。基于大语言模型&#xff08;LLM&#xff09;的 AI Agent 利用 LLM 进行记忆检索、决策推理和行动顺序选择等&#xff0c;把Agent的智能程度提升到了新的高度。LLM驱动的Agent具体是怎么做的呢&a…

构建中国人自己的私人GPT—支持中文

上一篇已经讲解了如何构建自己的私人GPT&#xff0c;这一篇主要讲如何让GPT支持中文。 privateGPT 本地部署目前只支持基于llama.cpp 的 gguf格式模型&#xff0c;GGUF 是 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品&#xff0c;llama.cpp 不再…

Spring 如何解决循环依赖?Spring三级缓存

什么是循环依赖 说白是一个或多个对象实例之间存在直接或间接的依赖关系&#xff0c;这种依赖关系构成了构成一个环形调用。 自己依赖自己 两个对象间的依赖关系 多个对象间的依赖关系 Spring出现循环依赖的场景 单例的setter注入 Service public class A {Resourceprivate…