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

智能推荐

js-选项卡原理_选项卡js原理-程序员宅基地

文章浏览阅读90次。【代码】js-选项卡原理。_选项卡js原理

设计模式-原型模式(Prototype)-程序员宅基地

文章浏览阅读67次。原型模式是一种对象创建型模式,它采用复制原型对象的方法来创建对象的实例。它创建的实例,具有与原型一样的数据结构和值分为深度克隆和浅度克隆。浅度克隆:克隆对象的值类型(基本数据类型),克隆引用类型的地址;深度克隆:克隆对象的值类型,引用类型的对象也复制一份副本。UML图:具体代码:浅度复制:import java.util.List;/*..._prototype 设计模式

个性化政府云的探索-程序员宅基地

文章浏览阅读59次。入选国内首批云计算服务创新发展试点城市的北京、上海、深圳、杭州和无锡起到了很好的示范作用,不仅促进了当地产业的升级换代,而且为国内其他城市发展云计算产业提供了很好的借鉴。据了解,目前国内至少有20个城市确定将云计算作为重点发展的产业。这势必会形成新一轮的云计算基础设施建设的**。由于云计算基础设施建设具有投资规模大,运维成本高,投资回收周期长,地域辐射性强等诸多特点,各地在建...

STM32问题集之BOOT0和BOOT1的作用_stm32boot0和boot1作用-程序员宅基地

文章浏览阅读9.4k次,点赞2次,收藏20次。一、功能及目的 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序。BOOT1=x BOOT0=0 // 从用户闪存启动,这是正常的工作模式。BOOT1=0 BOOT0=1 // 从系统存储器启动,这种模式启动的程序_stm32boot0和boot1作用

C语言函数递归调用-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏22次。C语言函数递归调用_c语言函数递归调用

明日方舟抽卡模拟器wiki_明日方舟bilibili服-明日方舟bilibili服下载-程序员宅基地

文章浏览阅读410次。明日方舟bilibili服是一款天灾驾到战斗热血的创新二次元废土风塔防手游,精妙的二次元纸片人设计,为宅友们源源不断更新超多的纸片人老婆老公们,玩家将扮演废土正义一方“罗德岛”中的指挥官,与你身边的感染者们并肩作战。与同类塔防手游与众不同的几点,首先你可以在这抽卡轻松获得稀有,同时也可以在战斗体系和敌军走位机制看到不同。明日方舟bilibili服设定:1、起因不明并四处肆虐的天灾,席卷过的土地上出..._明日方舟抽卡模拟器

随便推点

Maven上传Jar到私服报错:ReasonPhrase: Repository version policy: SNAPSHOT does not allow version: xxx_repository version policy snapshot does not all-程序员宅基地

文章浏览阅读437次。Maven上传Jar到私服报错:ReasonPhrase: Repository version policy: SNAPSHOT does not allow version: xxx_repository version policy snapshot does not all

斐波那契数列、素数、质数和猴子吃桃问题_斐波那契日-程序员宅基地

文章浏览阅读1.2k次。斐波那契数列(Fibonacci Sequence)是由如下形式的一系列数字组成的:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …上述数字序列中反映出来的规律,就是下一个数字是该数字前面两个紧邻数字的和,具体如下所示:示例:比如上述斐波那契数列中的最后两个数,可以推导出34后面的数为21+34=55下面是一个更长一些的斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,_斐波那契日

PHP必会面试题_//该层循环用来控制每轮 冒出一个数 需要比较的次数-程序员宅基地

文章浏览阅读363次。PHP必会面试题1. 基础篇1. 用 PHP 打印出前一天的时间格式是 2017-12-28 22:21:21? //>>1.当前时间减去一天的时间,然后再格式化echo date('Y-m-d H:i:s',time()-3600*24);//>>2.使用strtotime,可以将任何字符串时间转换成时间戳,仅针对英文echo date('Y-m-d H:i:s',str..._//该层循环用来控制每轮 冒出一个数 需要比较的次数

windows用mingw(g++)编译opencv,opencv_contrib,并install安装_opencv mingw contrib-程序员宅基地

文章浏览阅读1.3k次,点赞26次,收藏26次。windows下用mingw编译opencv貌似不支持cuda,选cuda会报错,我无法解决,所以没选cuda,下面两种编译方式支持。打开cmake gui程序,在下面两个框中分别输入opencv的源文件和编译目录,build-mingw为你创建的目录,可自定义命名。1、如果已经安装Qt,则Qt自带mingw编译器,从Qt安装目录找到编译器所在目录即可。1、如果已经安装Qt,则Qt自带cmake,从Qt安装目录找到cmake所在目录即可。2、若未安装Qt,则安装Mingw即可,参考我的另外一篇文章。_opencv mingw contrib

5个高质量简历模板网站,免费、免费、免费_hoso模板官网-程序员宅基地

文章浏览阅读10w+次,点赞42次,收藏309次。今天给大家推荐5个好用且免费的简历模板网站,简洁美观,非常值得收藏!1、菜鸟图库https://www.sucai999.com/search/word/0_242_0.html?v=NTYxMjky网站主要以设计类素材为主,办公类素材也很多,简历模板大部个偏简约风,各种版式都有,而且经常会更新。最重要的是全部都能免费下载。2、个人简历网https://www.gerenjianli.com/moban/这是一个专门提供简历模板的网站,里面有超多模板个类,找起来非常方便,风格也很多样,无须注册就能免费下载,_hoso模板官网

通过 TikTok 联盟提高销售额的 6 个步骤_tiktok联盟-程序员宅基地

文章浏览阅读142次。你听说过吗?该计划可让您以推广您的产品并在成功销售时支付佣金。它提供了新的营销渠道,使您的产品呈现在更广泛的受众面前并提高品牌知名度。此外,TikTok Shop联盟可以是一种经济高效的产品或服务营销方式。您只需在有人购买时付费,因此不存在在无效广告上浪费金钱的风险。这些诱人的好处是否足以让您想要开始您的TikTok Shop联盟活动?如果是这样,本指南适合您。_tiktok联盟