初识AUTOSAR

news2025/1/11 16:56:57

目录

应用层

Runnable

Port

运行时环境

基础软件层

总结


AUTOSAR,全称为Automotive Open System Architecture,即汽车开放系统架构。它最初于2003年由当时全球各家顶级汽车制造商(奔驰、宝马、大众等)、零部件供应商(博世、大陆、德尔福等)以及各种研究、服务机构共同参与的一种汽车电子系统的合作开发框架,并建立了一个开放的汽车控制器(ECU)标准软件架构。行至今日,虽然AUTOSAR软件架构并非强制性行业标准,但AUTOSAR 软件标准已成为事实上的汽车电子软件开发标准,熟悉AUTOSAR软件架构、掌握AUTOSAR架构软件开发工具已成为汽车电子软件开发从业工程师的必备职业技能。

AUTOSAR的出现是为了满足日益增长的汽车电子软件开发需求,在设计上,采用分层软件架构,大大降低了软件与软件、软件与硬件之间的依赖性。

AUTOSAR软件架构图

在AUTOSAR软件架构设计中,从上至下依次为:应用层(Application Layer)、运行时环境(Runtime Environment)、基础软件层(Basic Software Layer)、微控制器(Microcontroller),每个层为相邻层提供访问接口、跨层之间不可直接访问。特别是RTE的设计,使得汽车嵌入式软件开发开发与验证,摆脱对硬件系统的依赖。这种设计的好处是显而易见的:

1. 软硬件解耦,使软件可以跨平台复用,有利于提高软件的复用度,缩短开发周期;

2. 模块化设计,使软件功能可以进行先期架构级别的定义和验证,从而减少开发错误;

3. 统一使用标准化的数据交换格式,方便车企与供应商之间的合作。

4. 引入AUTOSAR工具链,减少了手动代码量,提供软件质量;

5. 便于维护升级

接下来简单介绍下AUTOSAR架构下的每一个层及其作用。

应用层

在AUTOSAR架构下,应用层是最上层,通过RTE(Runtime Environment,运行时环境)与下层进行交互。

应用层是由多个SWC(Sotware Component)组成。每一个SWC可视为一个功能模块,不同的SWC之间通过AUTOSAR接口交互。

 AUTOSAR应用层SWC之间交互示意图

一个典型的SWC由Runnable和Port组成(有人会有疑问:一个模块都没数据吗?有,但是AUTOSAR中数据一般不是由SWC维护,SWC只负责使用,特殊Pim数据除外,因此这里博主个人认为,数据结构不是一个SWC的典型组成部分),下面简单介绍下SWC的Runnable和Port。

Runnable

Runnable,可以理解为函数。由SWC创建,根据Runnable的触发类型,可分为三类:

  • Initial Runnable, 用于本SWC初始化函数,由SWC初始化动作触发运行;
  • Server Runnable, 是由一个server触发运行的函数;
  • Runnable,普通任务函数,由定时器触发运行;

有人喜欢将Runnable看做Task,在本质上是不太准确的。一个Task中一般会执行很多个Runnable,但是在便于理解的层面上去看,理解为Task也勉强说得通。毕竟,runnable的运行不是由普通函数调用产生,而是由定时器、初始化或事件触发,又跟我们通常理解的Task比较像。但,本质上一个Runnable就是一个函数,这点在生成代码中可以清晰看到。

Port

Port是SWC之间进行交互的接口,可分为三类:

1.Sender Ports:用于SWC发送数据到另一个SWC或RTE,可分为两种:

  • 数据发送Port:这种Port用于发送数据;
  • Trigger发送Port:这种Port用于发送trigger,通常为一个代表某事件发生的信号;

2.Receiver Ports :用于从SWC或RTE接收数据,可分为两种:

  • 数据接收Port:用于从数据发送方接受数据;
  • Trigger接收Port:用于从Trigger发送方接收Trigger信号;

3.Client-Server Ports:用于client和server方,分为两种:

  • Client Port:用于client方发送请求到server方;
  • Server Port:用于server方接受client方的请求;

在AUTOSAR软件开发中,应用层SWC需要由工程师使用第三方工具设计实现,然后进行代码生成,生成具体的.c和.h文件,再有工程师完成业务逻辑代码的开发。

运行时环境

RTE是AUTOSAR软件架构的核心,但其本身并不实现任何业务逻辑。它就像一个隔离层,将应用软件和基础软件分离;又像是一个管道,一端连接应用层,一端连接基础软件,应用软件与基础软件通过它实现交互。

RTE是应用层与底层之间的一个抽象层,它负责管理通信和SWC之间的数据交互,提供如下服务:

  • 通信管理:RTE处理不同模块间的数据传输,保证数据的一致性,同步通信时间;
  • 资源管理:RTE管理SWC使用的资源,例如:内存、CPU时间等,保证模块可以访问它们所需的资源;
  • 错误管理:RTE提供错误处理机制,用于处理在软件模块运行时可能发生的错误,如:数据传输错误、内存分配错误等。
  • 时间管理:RTE管理软件模块的时间,以确保他们以同步的方式运行,这对于安全相关的应用是至关重要的。

正是由于RTE这种特性,才实现了AUTOSAR软件模块解耦,在项目开发中,应用软件开发可以脱离基础软件进行(使用模拟环境),大大提高开发效率。

基础软件层

从AUTOSAR软件架构图可以看出,基础软件(BSW)包括非常多模块。随着AUTOSAR的发展,BSW还在不断丰富。但总体自下而上又可将BSW分为四个部分:微控制器抽象层(Micro-controller Abstract Layer,MCAL )、电子控制单元抽象层(ECU Abstract Layer)、服务层(Service Layer)和复杂驱动(Complex Driver,Cdd)

  • MCAL:主要是微控制器驱动,包括Dio,Port,Pwm,Spi,Can,Memory等驱动,这部分和硬件强相关;
  • ECU抽象层:主要是将通信、内存、IO等资源抽象成统一接口,掩盖下层硬件的不同,供上层使用;
  • 服务层:这部分主要是提供系统服务、通信服务、内存服务等;
  • 复杂驱动:Cdd是AUTOSAR架构中特殊的一部分,在AUTOSAR架构中,上层只能通过相邻的下层,层层递进,访问硬件资源。但通过复杂驱动,上层可以直接访问硬件资源,复杂驱动的设计主要是为了满足汽车电子软件某些时效性要求苛刻的使用场景;
  • 微控制器虽然出现在AUTOSAR软件架构图中,但是微控制器不属于AUTOSAR软件包含的内容。        

以上就是AUTOSAR软件架构的初步介绍。

总结

  • AUTOSAR诞生是为了满足汽车电子产业日益增长的软件开发需求;
  • AUTOSAR的主要优点是提高效率、保证质量、降低成本;

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

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

相关文章

【Unity入门】21.预制体

【Unity入门】预制体 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)预制体制作 (1)什么是预制体 这一章节的博客,我们将会学习一个预制体的概念。什么是…

【C语言进阶】-- 重点字符串函数内存函数及其模拟实现(strlen,strcmp,strcat...memcpy,memmove)

目录 1、strlen 1.1 strlen的模拟实现 2、strcpy 2.1 strcpy的模拟实现 3、strcat 3.1 strcat的模拟实现 4、strcmp 4.1 strcmp的模拟实现 5、strstr 5.1 strstr的模拟实现 6、memcpy 6.1 memcpy的模拟实现 7、memmove 7.1 memmove的模拟实现 前言 C语言中对字符…

Ant Design Vue,a-table组件加序号

<a-table:columns"columns":pagination"pagination":data-source"dataSource":defaultExpandAllRows"true"change"tableChange":rowKey"(record, index) > index 1"> columns是表格列的配置&#xff0c…

【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

【2023五一杯数学建模】 B题 快递需求分析问题 1 题目 请依据以下提供的附件数据和背景内容&#xff0c;建立数学模型&#xff0c;完成接下来的问题&#xff1a;问题背景是&#xff0c;网络购物作为一种重要的消费方式&#xff0c;带动着快递服务需求飞速增长&#xff0c;为我…

25特别放送:我的Gopher成长之路

很早就开始准备这篇文章了,但总是想了又想不知怎样才能更好的写下自己最真实的想法,后来在经过了好几个晚上睡前的思考后才得以完成。 首先,写这篇文章的目的并不是为了吹嘘Go语言有多厉害,也不是鼓励大家都来学习Go语言,仅是为了记录和分享。当然如果是兴趣使然,那么欢…

实时更新天气微信小程序开发

1.新建一个天气weather项目 2.在app.json中创建一个路由页面 当我们点击保存的时候&#xff0c;微信小程序会自动的帮我们创建好页面 3.在weather页面上书写我们的骨架 4.此时我们的页面很怪&#xff0c;因为没有给它添加样式和值。此时我们给它一个样式。&#xff08;样式写在…

蓝桥杯——二分专题

二分分为&#xff1a;实数二分&#xff0c;二分理论题 二分套路题&#xff1a;最小值最大化&#xff0c;最大值最小化 运用二分满足条件&#xff1a;有界&#xff0c;单调。 1.两个二分模板 找>x的第一个&#xff0c;mid&#xff08;lowhigh&#xff09;//2 &#xff0c;没…

java基础知识——23.正则表达式

这篇文章我们简略的讲一下java的正则表达式 目录 1.正则表达式概述 2.正则表达式的简单匹配规则 3.正则表达式的复杂匹配规则 4.正则表达式的分组匹配规则 5.正则表达式的非贪婪匹配 6.使用正则表达式进行搜索和替换 1.正则表达式概述 首先&#xff0c;我们需要明确一个…

leetcode 面试题 02.04. 分割链表

原题为&#xff1a; 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在大于或等于x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 测试示例如下&#xff1a; 输入&#xff1a;head [1,4…

Flink第一章:环境搭建

系列文章目录 Flink第一章:环境搭建 文章目录 系列文章目录前言一、Idea项目1.创建项目2.pom.依赖3.DataSet4.DataStreaming 二、环境搭建1.Standalone2.Flink on Yarn 总结 前言 Flink也是现在现在大数据技术中火爆的一门,反正大数据的热门技术学的也差不多了,啃完Flink基本…

Packet Tracer - 研究直连路由

Packet Tracer - 研究直连路由 目标 第 1 部分&#xff1a;研究 IPv4 直连路由 第 2 部分&#xff1a;研究 IPv6 直连路由 拓扑图 背景信息 本活动中的网络已配置。 您将登录路由器并使用 show 命令发现并回答以下有关直连路由的问题。 注&#xff1a;用户 EXEC 密码是 c…

A2B汽车音响系统开发设计与改装

hezkz17进数字音频系统研究开发答疑群 1 前装与后装

安装了Volar插件vue文件没有显示Volar的图标

vue3官网 推荐使用Volar来替换Vetur 一、安装Volar 安装Volar前&#xff1a; 安装Volar后&#xff1a; 二、安装Volar插件后&#xff0c;无法显示高亮 之前我安装Volar插件后&#xff0c;vue文件的<script>、<template>、<style>标签仍然是白色的&#xff0c…

Doris(17):动态分区

动态分区是在 Doris 0.12 版本中引入的新功能。旨在对表级别的分区实现生命周期管理(TTL)&#xff0c;减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。 1 原理 在某些使用场景下&#xff0c;用户会将表按照天进行分区划分&#xff0c;每天定时执行例行任…

【网课平台】Day14.集成RabbitMQ:消息队列实现异步通知

文章目录 一、需求&#xff1a;支付通知1、需求分析2、技术方案3、集成RabbitMQ4、生产端发送消息5、消费方发送消息 二、需求&#xff1a;在线学习1、需求分析2、表设计与实体类3、接口定义--查询课程4、接口定义获取视频5、Service层开发6、FeignClient定义7、代码完善 三、需…

数字设计小思 - D触发器与死缠烂打的亚稳态

前言 本系列整理数字系统设计的相关知识体系架构&#xff0c;为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中&#xff0c;D触发器是最常用的器件&#xff0c;也可以说是时序逻辑的核心&#xff0c;本文根据个人的思考历程结合相关书籍内容和网上文章&#xff0c;聊一聊D…

Hudi数据湖技术之数据中心案例实战

目录 1 案例架构2 业务数据2.1 客户信息表2.2 客户意向表2.3 客户线索表2.4 线索申诉表2.5 客户访问咨询记录表 3 Flink CDC 实时数据采集3.1 开启MySQL binlog3.2 环境准备3.3 实时采集数据3.3.1 客户信息表3.3.2 客户意向表3.3.3 客户线索表3.3.4 客户申诉表3.3.5 客户访问咨…

微信小程序 WebSocket 通信 —— 在线聊天

在Node栏目就讲到了Socket通信的内容&#xff0c;使用Node实现Socke通信&#xff0c;还使用两个流行的WebSocket 库&#xff0c;ws 和 socket.io&#xff0c;在小程序中的WebSocket接口和HTML5的WebSocket基本相同&#xff0c;可以实现浏览器与服务器之间的全双工通信。那么本篇…

SSH 服务器、NFS 服务器、TFTP 服务器详解及测试

文章目录 前言一、SSH 服务器1、SSH 能做什么&#xff1f;2、安装 SSH 服务器3、测试 SSH 服务4、用 SecureCRT 测试 二、NFS 服务器1、NFS 能做什么&#xff1f;2、安装 NFS 软件包3、添加 NFS 共享目录4、启动 NFS 服务5、测试 NFS 服务器 三、TFTP 服务器1、TFTP 能做什么&a…

轻松掌握mysql事务的四大特性ACID及实现原理

1、介绍 要实现这四大特性&#xff0c;我们先了解下mysql中的缓冲池和数据页 2、保证原子性和一致性 1、通过undo log保证数据的原子性和一致性 undo log保证了事务的原子性和一致性。 3、保证隔离性 1、并发事务产生时容易产生的隔离性问题 脏读 不可重复读 幻读…