电子电器架构车载软件 —— 集中化架构软件开发

电子电器架构车载软件 —— 集中化架构软件开发

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。
无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。

文章大体有如下内容:

1、AUTOSAR通过软件模块化助力车内软件开发迭代

2、从CP演化到AP以适应自动驾驶兴起和车载以太网

一、AUTOSAR通过软件模块化助力车内软件开发迭代

AUTOSAR 助力车内通信架构软硬解耦、降低软件开发复杂度、增强可扩展性。AUTOSAR(Automotive Open System Architecture/汽车开放系统架构)是一个汽车电子系统的合作开发框架, 由全球多家汽车制造商、零部件供应商以及研究服务机构共同参与,并建立了一个开放的汽车控制器( ECU)标准软件架构。 其核心功能之一为软硬件分离, 提供了符合车规的标准化应用编程接口( API),并具有很高的可扩展性。 AUTOSAR 将软件划分为可独立开发的模块, 再通过一个高度自动化、功能强大的配置工具将这些不同的功能模块组合在一起,从而大大简化软件开发难度和成本。

另外,AUTOSAR对汽车行业的作用主要体现在以下几个方面:

-> 标准化和开放性:AUTOSAR作为一个开放的软件架构标准,统一了汽车电子软件的开发标准,使得不同供应商的软件可以在同一平台上进行集成和交互,提高了软件的互操作性和可替换性。

-> 降低成本和复杂性:AUTOSAR简化了汽车电子软件的联合开发过程,降低了开发成本和复杂性。通过AUTOSAR的分层架构,可以将复杂的系统划分为不同层次的模块,降低了开发难度,提高了开发效率。

-> 提高软件质量和可靠性:AUTOSAR引入了模块化、标准化的软件开发流程,提高了软件的质量和可靠性。同时,AUTOSAR还提供了强大的故障处理和安全机制,进一步提高了系统的安全性和可靠性。

-> 促进供应链协同:AUTOSAR为汽车制造商和供应商提供了一个统一的沟通语言和标准,促进了供应链之间的协同和合作。通过AUTOSAR,各供应商可以更加高效地参与到整车电子系统的开发和集成中来,提高了整个供应链的效率和灵活性。

-> 推动技术创新:AUTOSAR的开放性和标准化特性,吸引了众多汽车制造商和供应商的参与,推动了技术创新和产业升级。通过AUTOSAR,各成员可以共同研发新的软件技术和解决方案,提高了整个行业的竞争力和创新能力。

image

AUTOSAR 可显著降低汽车软件的开发难度和开发成本。 AUTOSAR 提供的软件开发框架可促进车载软件的可移植性和可组合性。 通过标准化应用程序软件功能之间的接口和基本功能的接口、定义ECU软件参考架构、将分布式开发过程的数据交换格式标准化, AUTOSAR 能够优化车内通信网络,促进来自不同供应商的组件的集成,跨平台组件的使用,以及故障控制方式的系统化,从而促进整个行业效率的提升和技术进步。

二、从CP演化到AP以适应自动驾驶兴起和车载以太网

AUTOSAR CP的软件架构定义了三个于ECU上执行的软件层:应用层( SWC)、运行时环境(RTE)和基础软件(BSW)。

-> 应用层SWC独立于硬件,用于实现 ECU的功能,执行传感器/执行器功能;

AUTOSAR的SWC(Software Component)是AUTOSAR架构中的一个核心概念,它是一个功能独立的软件单元,可以在不同的ECU(Electronic Control Unit)上运行。SWC由AUTOSAR描述文件(ARXML)定义,并通过AUTOSAR的代码生成工具生成代码。

SWC的核心功能是通过输入和输出端口与其他SWC或底层软件组件(BSW)交互,同时也可以使用内部端口进行内部通信。每个SWC都具有一些特定的功能,如传感器数据处理、控制算法、用户界面等等。每个SWC都需要定义其输入输出接口,以及其它自述和控制接口,这些接口都要符合AUTOSAR定义的规范。

AUTOSAR的SWC是实现汽车电子软件模块化、标准化和开放性的重要基础,有助于提高软件的开发效率、质量和可靠性,促进供应链协同,推动技术创新和产业升级。

-> RTE是架构的通信媒介,SWC与其他SWC以及与 BSW模块通过RTE进行通信;此外 RTE 也是车辆应用软件访问ECU功能的网关;

AUTOSAR RTE(Run-Time Environment)是AUTOSAR软件架构中的一个关键模块,它是实现AUTOSAR虚拟功能总线(VFB)接口的实体。RTE主要提供基础设施服务,用于实现不同SWC(Software Component)之间的通信,以及SWC对BSW(Basic Software)资源的访问。

RTE通过提供标准化的接口和服务,使得不同的软件组件可以方便地进行通信和互操作。它实现了SWC间的通信和SWC的调度,同时也管理了Runnable的触发机制。在AUTOSAR架构中,RTE处于应用层和基础软件层之间,起到了连接两者的重要作用。

RTE不仅支持源码类型的SWC,也支持目标代码类型的SWC。不过,RTE并不支持运行时的重新配置,所有通信在配置生成后都是静态的。

AUTOSAR RTE的作用是实现AUTOSAR虚拟功能总线(VFB)的接口,从而为应用程序软件组件之间的通信提供基础设施服务,并促进对包括操作系统(OS)在内的基础软件组件的访问。

RTE位于AUTOSAR软件架构的中间层,介于应用层和基础软件层之间。它封装了基础软件层的通信和服务,例如操作系统的任务激活、等待等功能,基础软件模块管理、ECU状态管理等服务,实现了对软件生命周期的控制。

此外,RTE还抽象了ECU之间的通信,使用标准化的接口将其统一为软件组件间的通信,使得ECU间的通信如同ECU内部通信。为了满足实时性、可靠性以及数据的一致性要求,RTE向软件组件和基础软件提供两种机制:通信机制和并发机制。

-> BSW模块提供基本的标准服务,例如总线通信、存储管理、IO访问、系统和诊断服务等。

AUTOSAR BSW(Basic Software)是AUTOSAR软件架构中的基础软件层,为各软件模块提供服务,并不实际完成功能。BSW是标准软件层,为应用层提供基础服务,包括ECU抽象层、微控制器抽象层、复杂驱动等。

image

微控制器抽象层(MicroController Abstraction Layer)是对MCU芯片的抽象和封装,主要实现MCU外设驱动,如I/O驱动、Flash驱动、Can驱动、看门狗驱动、定时器驱动等。这一层与硬件打交道,高度依赖MCU硬件。

ECU抽象层使上层软件与ECU硬件设计无关,包含ECU板上外部设备的驱动,内部设备与外部设备的接口(I/O)服务。

服务层位于BSW的最上面,将各种基础软件功能以服务的形式封装起来,供应用层调用。服务层包括RTOS、通信与网络管理、内存管理、诊断服务、状态管理、程序监控等服务。

AUTOSAR将一些基础软件封装成包,使得用户只需要关注上层应用层的开发,从而提高效率。这种分层架构有利于提高软件复用度,便于软件的交换与更新,能减少开发错误,提高软件质量。

随着汽车SOA架构的广泛接受及车内EE架构的演化,自动驾驶和以太网等新概念的应用,AUTOSAR推出了全新的自适应平台以适配相应的软件发展需求。

image

AUTOSAR AP与AUTOSAR CP相互补充,但更加熟悉AP的整车厂和供应商将具备一定的竞争优势。AUTOSAR AP 的推出并不是为了替代AUTOSAR CP——它们针对不同的应用程序且相互补充。

-> AUTOSAR CP主要应用于具有硬实时要求和低带宽通信的安全关键系统,在低资源硬件上实施;

-> AUTOSAR AP则针对高性能、低关键性、具有高带宽和OTA要求的系统。

从目前趋势来看,AUTOSAR AP有望接管自动驾驶、连接和信息娱乐等领域,AUTOSAR CP仍将是动力总成和底盘等传统汽车领域的首选平台。而自动驾驶、智能座舱、车联网是智能网联汽车个性化、差异化及高价值量的关键,我们认为更加熟悉 AUTOSAR AP 开发方法和框架的企业有机会凭借更高效的开发效率和更低的开发成本在软件定义汽车的潮流中取得比较大的优势,获得较多的市场份额。

image

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者!

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

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

相关文章

汽车ECU的虚拟化技术初探(四)--U2A内存管理

目录 1.内存管理概述 2. 内存保护功能 2.1 SPID 2.2 Slave Guard 3.小结 1.内存管理概述 为了讲清楚U2A 在各种运行模式、特权模式下的区别,其实首先应该搞清楚不同模式下可以操作的寄存器有哪些。 但是看到这个寄存器模型就头大。 再加上之前没有研究过G4MH…

文件操作(二)

͟͟͞͞🏀前言上一篇我们加们讲了什么是文件,为什么使用文件,以及流的概念。我们继续接上一篇来继续讲解我们的文件操作,这一篇将会详细的讲如何对文件进行读写。 目录 🚀一.文件的顺序读写 1.fgetc和fputc 2.fget…

【OJ】环形链表

目录 1. 环形链表||(142)1.1 题目描述1.2 题目分析1.3 代码 2. 环形链表(141)2.1 题目描述2.2 题目分析2.3 代码 1. 环形链表||(142) 1.1 题目描述 1.2 题目分析 带环链表:尾节点的next指向链…

Python异步网络编程库之twisted 详解

概要 Python twisted 是一个强大的异步网络编程框架,它允许开发者轻松构建高性能的网络应用和协议。无论是构建网络服务器、客户端、聊天应用还是实时通信工具,twisted 都提供了丰富的工具和组件。本文将深入探讨 twisted 的基本概念、安装方法以及详细…

sql | 学生参加各科考试次数

学生表: Students------------------------ | Column Name | Type | ------------------------ | student_id | int | | student_name | varchar | ------------------------ 在 SQL 中,主键为 student_id(学生ID)。 该表内的每…

多机TCP通讯之hello world(C++)

文章目录 TCP是什么准备工作CMakeLists.txt服务端代码客户端代码参考 TCP是什么 TCP(传输控制协议)是一种在计算机网络中广泛使用的协议,它提供了可靠的、面向连接的数据传输服务。TCP 是 OSI 模型中的传输层协议,它确保了数据的…

[NAND Flash 6.4] NAND FLASH基本读操作及原理_NAND FLASH Read Operation源码实现

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< ​全文 6000 字 内容摘要 NAND Flash 引脚功能 读操作步骤 NAND Flash中的特殊硬件结构 NAND Flash 读写时的数据流向 Read 操作时序 读时序操作过…

第 11 章 树结构实际应用

文章目录 11.1 堆排序11.1.1 堆排序基本介绍11.1.2 堆排序基本思想11.1.3 堆排序步骤图解说明11.1.4 堆排序代码实现 11.2 赫夫曼树11.2.1 基本介绍11.2.2 赫夫曼树几个重要概念和举例说明11.2.3 赫夫曼树创建思路图解11.2.4 赫夫曼树的代码实现 11.3 赫夫曼编码11.3.1 基本介绍…

【NI国产替代】USB‑7846 Kintex-7 160T FPGA,500 kS/s多功能可重配置I/O设备

Kintex-7 160T FPGA&#xff0c;500 kS/s多功能可重配置I/O设备 USB‑7846具有用户可编程FPGA&#xff0c;可用于高性能板载处理和对I/O信号进行直接控制&#xff0c;以确保系统定时和同步的完全灵活性。 您可以使用LabVIEW FPGA模块自定义这些设备&#xff0c;开发需要精确定时…

【GitHub项目推荐--13 个 Python 学习资源】【转载】

近些年&#xff0c;人工智能应用铺天盖地。人脸识别、老照片复活、换脸等应用都得益于人工智能算法。 许多人工智能算法封装的框架基于 Python 语言&#xff0c;这也导致了 Python 的热度只增不减。 Python 简单易学&#xff0c;根据 2020 年 StackOverflow 开发者调查报告显…

智能路由器中的 dns.he.net可使用自定义域名的免费 DDNS 服务配置方法

今天介绍的这个是可以使用自定义域名同时支持使用二级域名的免费DDNS服务 dns.he.net的动态DDNS服务的配置方法, 这个服务相对还是比较稳定的, 其配置也和其他的DDNS服务有些不太一样, 首先他的主机名: 这里需要设置为登录后分配的区域域名: ipv6.he.net 然后就是 DDNS 用户…

让一个元素水平居中的方式有哪些

今天总结一下我所遇到过的 让一个元素水平居中的方式 <!--* Author: HuKang* Date: 2023-09-19 11:07:44* LastEditTime: 2023-12-22 22:52:38* LastEditors: HuKang* Description: * FilePath: \route-planning\tempDemo.html --> <!DOCTYPE html> <html>…

案例:新闻数据加载

文章目录 介绍相关概念相关权限约束与限制完整示例 代码结构解读构建主界面数据请求下拉刷新总结 介绍 本篇Codelab是基于ArkTS的声明式开发范式实现的样例&#xff0c;主要介绍了数据请求和touch事件的使用。包含以下功能&#xff1a; 数据请求。列表下拉刷新。列表上拉加载…

Express 应用生成器(脚手架)的安装与使用

1、简介 自动生成一个express搭建的项目结构 官网&#xff1a;Express 应用生成器 2&#xff0c;使用 2.1全局安装&#xff0c;使用管理员打开命令窗口 2.2、安装express # 全局安装express npm install -g express # 全局安装express脚手架 npm install -g express-gene…

Socket编程-IO模型

1、首先IO模型的内容。 感觉可以简单理解为&#xff1a;我们写代码时&#xff0c;在基础的 IO 操作上做了一些其他的策略&#xff0c;根据策略的不同&#xff0c;一般有阻塞IO和非阻塞IO 1、阻塞IO 就是在操作的时候&#xff0c;比如网络通信中&#xff0c;某一线程使用下面这…

最大公约数和最小公倍数

1. 最大公约数 给定两个整数&#xff0c;求这两个数的最大公约数 暴力求解&#xff1a; 从较小的那个数开始&#xff0c;依次递减&#xff0c;直到某个数能够同时被整除 //暴力求解 int main() {int a 0;int b 0;scanf("%d %d", &a, &b);int i 0;int min …

代码随想录 Leetcode142. 环形链表 II

题目&#xff1a; 代码(首刷看解析 2024年1月13日&#xff09;&#xff1a; class Solution { public:ListNode *detectCycle(ListNode *head) {if (head nullptr) return nullptr;ListNode* fast head;ListNode* slow head;while (true) {if(fast->next nullptr || fa…

git-生成证书、公钥、私钥、error setting certificate verify locations解决方法

解决方法 方法1-配置证书、公钥、私钥打开Git Bash设置名称和邮箱执行&#xff0c;~/.ssh执行&#xff0c;ssh-keygen -t rsa -C "这是你的邮箱"&#xff0c;如图&#xff1a;进入文件夹可以看到用记事本之类的软件打开id_rsa.pub文件&#xff0c;并且复制全部内容。…

社区团购配送超市与小程序的共赢之路

对于社区服务来说&#xff0c;搭建一个小程序可以提供更加便捷、高效的服务&#xff0c;提升用户体验。下面我们将详细介绍如何通过乔拓云第三方平台搭建一个社区团购小程序。 首先&#xff0c;你需要打开乔拓云第三方平台&#xff0c;这是一个专门为小程序开发提供的平台。在浏…

哪些代码是 Code Review 中的大忌?—— 以 Python 为例

Code Review 首要达成的结果是更好的可读性。 在此基础上才是进一步发现项目的 Bug、处理性能优化上的问题。 因为&#xff0c;编码是给人看的&#xff0c;不是给计算机&#xff08;Coding for human, NOT computer&#xff09;。 一. 滥用缩写命名 Overusing abbreviation …