AutoSAR软件架构基础(一)_autosar架构-程序员宅基地

技术标签: c++  架构  汽车  

AutoSAR简介与展望

随着汽车ECU控制器的逐步发展,汽车电子领域需求也日益复杂,在这一环境之下,整车厂和 零部件制造商均不得不考
虑软件重复性,可裁剪性,质量保证等等问题,AutoSAR便是基于这些种种要求,由几大零部件提供商和主机厂联合提
出的要求。统一解决方案针对问题。
挑战:E/E系统复杂度快速增加 目标:重复使用、不断测试
功能代码爆炸式增长 提高软件质量,降低开发成本
硬件平台种类增多 重复使用功能层软件
开发流程和文件格式未统一 重复使用基础层软件
汽车电子系统设计复杂化造成的可靠性隐患,导致汽车因安全隐患被“召回”的现象频繁发生 重复使用开发方法论和开发工具
规范汽车电子产品,软件和元器件的互通性

基本概念

 AutoSAR是AUTomotive Open System Architecture的缩写,是由整车制造商、供应商、服务
 提供商以及来自汽车电子、半导体和软件行业的公司共同组成的世界范围内的汽车电子软件联
 盟。AutoSar是一种软件系统架构,它从汽车ECU控制器角度带来了一整套系统软件解决方案,
 它提供了一套标准化的接口和通信协议,使不同的软件组件可以相互协作。AutoSAR软件架构
 有众多的优越性。下图是汽车有无AutoSAR架构的对比,“Yesterday”是指在使用AutoSar架构
 之前的软件系统架构,也就是说,在AutoSAR诞生早期,便已经存在汽车软件系统架构,例
 如OSEK,OSEK/VDX也基于分层架构的软件平台。

在这里插入图片描述
只是,AutoSAR从整个软件汽车的平台化、统一化着眼,方法论也涵盖了整个ECU统一开发、统一流程的各个开发环节。可以说OSEK就是AutoSAR,比如AutoSAR使用的OS部分就是OSEK操作系统。主要区别在于,OSEK是一个操作系统标准,而AutoSAR是一个软件架构标准,以及由于基于嵌入式系统,OSEK的实现通常比较底层,而AutoSAR是实现通常是比较高层的。在此处我们主要需要清楚AutoSAR通过交互文档可以方便实现OEM与TIL1之间的软件统一设计、开发与交互;而OSEK只能通过 one by one的设计方式去独立开发单控制器,更是无法实现SWC层级的软件复用。种种结构均表明AutoSAR凸显出的不仅仅是一个简单的软件架构所具备的优越性。

关于OSEK和AUTOSAR的更多信息,请参考以下链接:

  1. OSEK标准
  2. AUTOSAR标准

历史进程

2003成立

2005发布第一个AutoSAR标准;

2006年完成基础软件定义;

2013年AutoSAR成立10年,发布4.1.1

2014年发布4.3.0,加入面向服务的通讯协议,包括Extended Buffer Access forRapid Prototyping;SOME/IP Transport Protocal Decentralized Configuration

2017年发布v4.3.1

2018年发布v4.4,是当前最新版本。


AutoSAR构成背景

本次介绍的重点仍然是AutoSAR软件架构,因为在目前的主机厂环境之中主要使用Autosar架构独立开发自己的控制器,还未涉及从公司层面按照软件开发方式设计软件全功能的模式,毕竟这是一个消耗成本的事情,这个话题就不再阐述。Autosar软件架构作为分层式软件架构,具有其相关的所有目标和设计优势。在IOS26262中专门有对待软件的要求。

一般而言,软件架构设计要达到如下的目标:

  1. 可靠性(Reliable)

    软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。

  2. 安全性(Secure)

    软件系统所承担的系统安全性非常重要。

  3. 可扩展性(Extensible)

    在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展。例如,在AUTOsar中有复杂驱动这一层,这样就保证了整个系统的灵活度和可扩展性。

  4. 可维护性(Maintainable)

  5. 客户体验(Customer Experience)

    软件系统必须易于使用。

  6. 市场时间(Time to Market)
    软件用户要面临同行竞争,软件提供商也要面临同行竞争。以最快的速度争夺市场先机非常重要。例如AutoSAR在当前的市场大环境下被广泛采用在新能源汽车,自动驾驶领域的控制器,控制器开发就足以说明采用AutoSAR架构所带来的商业上的时机在一个新兴领域被大家认可。


软件系统架构图

下面来看架构图:
在这里插入图片描述
AutoSAR架构在软件抽象上分成三层,软件运行在微控制器上自底向上分别是:

  • 基础软件层(BSW-Bsaic Software Layer)
  • 实时运行环境层(RTE-Runtime Environment )
  • 应用软件层(APP-Application Layer)

其中BSW又被细分成:

  • 服务层(Service)
  • ECU抽象层(Abstracture)
  • 微控制器抽象层(Microcontroller)
  • 复杂驱动层(Complex Drivers)

BSW从功能角度又做了进一步划分,如服务层被划分成:

  • 系统服务(System Service)
  • 存储服务(Memory Services)
  • 通讯服务(Communication Service)

这些功能层的划分体现了Autosar作为一个汽车嵌入式软件开发细分市场的专业性,同时这些BSW所提供的服务也占据了大量的Autosar标准的篇幅。这里的层层细分,并不是越细致越好,一个好的架构要保证一定的颗粒度,才能在复杂度和可靠性上有最优的体现。


AutoSAR软件架构分层简介

实时运行环境层(RTE)

在这里插入图片描述

**运行时环境(RTE)**是AutoSAR ECU体系结构的核心组成部分,应用程序软件组件包含独立于CPU和所处位置的系统软件,这就意味着为了满足系统设计者所作的一些限制,应用程序组件能够在系统配置期间被映射到任何有效的ECU上,RTE负责确保这些组件能够通信,RTE实现了AutoSAR VFB的接口,从而实现了AutoSAR软件组件之间的通信。


微控制器抽象层(Microcontroller Abstraction Layer)

在这里插入图片描述
微控制器抽象层为软件层独立于μC(microcontroller/微控制器)而存在。它是最低软件层。它包含内部驱动程序,这些驱动程序是可以直接访问μC(microcontroller/微控制器)和内部外围设备的软件模块。


ECU抽象层(ECU Abstraction Layer)

在这里插入图片描述
ECU抽象层为使更高的软件层独立于ECU硬件布局而存在。它含有与单片机抽象层的驱动程序接口。 它还包含用于外部设备的驱动程序。它提供了一个用于访问外围设备和设备的API,而无需考虑外围设备和设备的位置(内部/外部μC)及其与μC(microcontroller/微控制器)的连接(端口引脚,接口类型)。


复杂的驱动程序(Complex Drivers)

在这里插入图片描述
目标: 复杂驱动程序涵盖范围从硬件设计到RTE,提供对复杂的输入类型的传感器和输出类型的控制器的驱动,保证架构的扩展性,例如设备驱动程序等在AutoSAR中未指定的部分,具有很高的时序约束性,这也是AutoSAR可扩展性和可移植性的重要体现。
功能: 为关键的应用提供对资源的直接访问


服务层(Service Layer)

在这里插入图片描述
服务层是基本软件的最高层,这也适用于其与应用程序软件的相关性。系统服务是一组可以由所有层次模块使用的功能,
虽然ECU抽象层覆盖了对I / O信号的访问,但是服务层提供了:

  • 操作系统功能
  • 车载网络通讯与管理服务
  • 内存服务(NVRAM管理)
  • Diagnostic Services(包括UDS通信,错误存储和故障处理)
  • ECU状态管理
  • 模式管理 逻辑和临时程序流监控(Wdg管理器)

接口层的定义也是AutoSAR标准中重要的一个工作,这些API接口关系到了整个模块可对外提供哪些抽象级服务,直接关系到了该模块的编码工作。
下图可以看出每个模块和其他模块的交互都是通过接口,AutoSAR的不同之处在于增加了RTE层,RTE层的存在就隔离了所有接口,应用层不直接调用BSW层的API,而应用层的SWC之间的交互也要通过RTE层,这样就保证了SWC的独立性,SWC可以不需要关心他们之间的通讯方式,因为有可能今天这个SWC在这个控制器、这个项目中,明天就可能存在在其他控制器内,这样做的好处就是SWC之间是通过CAN通讯还是内部变量交互,SWC完全不需要关心,全部交给RTE去实现即可。
底层模块之间的交互是通过标准化模块接口Standardized Interface实现的,同样针对复杂驱动,其与应用层SWC之间也是通过AutoSAR接口实现的,这里还有一点需要说明的是,不要被图中的双向箭头所误导,这里的箭头更多体现的是接口通过RTE层传递,实际的软件架构中只存在更高层调用与他直接相邻的下一层的调用API的方式,不允许出现跨层调用接口的情况,只有这样才能保证架构的可移植性,层与层之间不存在交叉调用,这样在需要移植时,只需要更改部分层的功能即可。
在这里插入图片描述


AutoSAR软件开发

AutoSAR基本实现方式概要图

在这里插入图片描述
基本实现方式可分为以下三大块:

  • 虚拟化集成测试
  • 硬件需求描述
  • ECU配置与集成测试

在虚拟化集成环节主要是讲整车系统需求转换,抽象成一个一个的SWC软件组件,这里不需要关心SWC之间的通讯方式,可以完全关注功能上的划分,在硬件需求描述环节就要定义出一个一个的ECU控制器单元,并将需要的硬件资源进行描述,为下一环节做准备,最后再进行ECU单控制器的开发功能,可以交付给供应商来具体实现完成ECU硬件控制器设计开发以及ECU底层软件开发以及应用层功能软件的开发集成测试工作。
在这里插入图片描述

第一步,完成车辆功能软件组件设计;
第二步,将组件分布至不同的ECU中;
第三步,将每个ECU道出系统描述;
第四步,进行ECU描述,进行ECU详细开发。

总结

关于autoSAR的基础概念还有很多,本期分享就到这里,之后将通过实例来介绍Com stack模块及功能、BSW开发。
然后正式开始通过手写代码介绍AUTOSAR工具链的使用。
有问题欢迎交流~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45563167/article/details/130869918

智能推荐

属性动画+购物车+结算_title="price-程序员宅基地

文章浏览阅读1.1k次。效果图添加依赖apply plugin: 'com.android.application'android { compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { applicationId "samsung.com.yuekaomoni" min_title="price

尤瓦尔·赫拉利不懂人工智能?_专访尤瓦尔赫拉利-程序员宅基地

文章浏览阅读822次。https://www.toutiao.com/a6684036824584684044/2019-04-26 11:16:36​如果您也想和尤瓦尔·赫拉利探讨人工智能、人类历史、机器算法等议题,欢迎留言。美国时间2019年4月22日,人工智能理论家尤瓦尔·赫拉利和计算机科学教授李飞飞博士,展开了一场【人工智能巨变和人工智能的人性化】的硬核对话,并揭示了人工智能技术快速..._专访尤瓦尔赫拉利

xpath之string(.)方法-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏8次。from lxml import etreehtml = ''' <li class="tag_1">需要的内容1 <a>需要的内容2</a> </li>'''selector = etree.HTML(html )contents = selector.xpath ( '//li[@class = ..._xpath('string(.)')

股指期货对冲策略_方差最小目标化股指期货的最优对冲-程序员宅基地

文章浏览阅读2.1k次。Alpha 对冲背景作为普通的投资者,大部分投资者都会选择基金这一投资渠道。而面对眼花缭乱的基金产品,投资者如何选择出符合自己风险偏好的基金就显得十分重要。这一选择的过程可能就需要我们对基金产品做一个绩效评价,选出其中表现最好的作为我们的投资组合。而最常见的三个评价标准有下述三个:1、夏普 (Sharpe) 指数:美国经济学家威廉•夏普于 1966 年发表《共同基金的业绩》一文,提出用基金承担单位总风险(包括系统风险和非系统风险)所带来的超额收益来衡量基金业绩,这就是夏普指数。夏普指数通过一定评价_方差最小目标化股指期货的最优对冲

linux获取网卡名称_linux如何知道socket套接字连接的网卡名称-程序员宅基地

文章浏览阅读4.7k次。#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;unistd.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;string.h&gt;#include &lt;net/if.h&gt;#include &a_linux如何知道socket套接字连接的网卡名称

matlab怎么载入视频,怎样将视频导入matlab啊-程序员宅基地

文章浏览阅读2.3k次。1、用matlab读取avi 视频(只能读一定压缩各式的avi 电影,这是因为avi视频文件的编码有很多,而matlab只支持部分编码格式。可见http://blog.csdn.net/IdoIwill/article/details/2125838) aviinfo('d:\abc.avi');%显示存在d 盘文件abc.avi 的信息,在matlab2010 版本中,该函数可以换成mmread..._matlab怎么导入视频文件

随便推点

雷达点云数据.pcd格式转.bin格式_点云pcd转bin文件-程序员宅基地

文章浏览阅读788次,点赞8次,收藏9次。注意,方法1原则上可行,但是本人没整好pypcd的环境方法2是利用open3d的环境,基于python3.7绝对可以的_点云pcd转bin文件

html界面缩放_html页面根据页面大小缩放怎么设置-程序员宅基地

文章浏览阅读1.4k次。【代码】html界面释放。_html页面根据页面大小缩放怎么设置

基于STM32单片机智能台灯路灯红外人体感应光照蓝牙设计19-117-程序员宅基地

文章浏览阅读148次。19-117、基于STM32单片机智能台灯路灯红外人体感应光照无线APP设计+蓝牙控制设计产品功能描述:本设计由STM32F103C8T6单片机核心板电路+红外传感器电路+光敏电阻电路+高亮LED灯电路+蓝牙模块+拨动开关+电源电路组成。一、通过拨动开关选择系统工作模式:模式1:拨动开关拨上。1、当有人的时候,天越亮,灯越暗,天越暗,灯越亮。2、如果无人,则灯自动熄灭。模式2:拨动开关拨下。1、可以通过手机蓝牙APP控制灯的亮灭。

一.求生之路2服务器的搭建(Windows)_srcds-程序员宅基地

文章浏览阅读4.9w次,点赞9次,收藏22次。下载游戏1.先去下载个在服务器上下载游戏的工具.(服务器不用安装Steam客户端)所以要借助这个工具SteamCMD下载steamCMD的网站 直接下载steamCMD的压缩包2.解压出来 3.新建一个文件,改名字为 *.bat , 如DownloadUpdateGame.bat,前面什么的不重要,重要是的后缀为.bat 这个是用来下载和更新游戏的,会自动补全缺失的游戏文件 4.用记事本打_srcds

QTableWidget控件总结-程序员宅基地

文章浏览阅读51次。1,设置QTableWidget滚动条宽度。myTableWidget->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { width: 100px; }");QTableWidget详解(样式、右键菜单、表头塌陷、多选等) (2013-05-15 09:24:53)转载▼标..._qtablewidget控件自绘

python中获得字符串s长度的方法是什么_获得字符串s长度的方法是什么?【 】(8.0分)_学小易找答案...-程序员宅基地

文章浏览阅读2.1k次。【名词解释】多功能酶【填空题】维生素B6包括______、______、______三种物质【判断题】Python是一种开源、免费的高级动态编程语言。 (5.0分)【简答题】请写出程序运行后显示结果(8分) def f(a,b,op): print(eval(a+op+b)) x = '5678' y = '1234' z = '%+-*' for a,b,op in zip(x,y,z): f(..._python中获得字符串 s长度的方法是: