[AutoSAR系列] 1.2 AutoSar 综述

AutoSAR是一种汽车工业领域的标准化软件架构,旨在简化不同汽车制造商之间的软件开发和交互。该标准于2003年由一系列欧洲汽车制造商成立的AutoSAR联盟制定并发布,目前已经成为全球范围内的标准。下面将对AutoSAR的概念、架构和实现进行综述。

 

1. 概述

AutoSAR是汽车电子控制单元(ECU)软件标准化架构。该标准化框架旨在降低汽车ECU软件开发复杂度,提高软件质量,加快开发效率,同时也方便了不同供应商之间的互操作性。主要的目标是降低汽车ECU软件开发和维护的成本,促进汽车电子系统的技术进步和创新。

 

2. AutoSAR架构

AutoSAR架构基于标准化的软件组件,包括应用程序接口(API)、软件模块、中间件和硬件抽象层。这些组件被组织成一个有层次结构的框架,其中上层组件包括应用程序和服务,下层组件包括驱动程序和硬件抽象层。整个架构被分为四个层次:应用程序层、运行时环境层、基础软件层和硬件抽象层。

9a589257b6484714b1f558beef12ce70.png

 

图片来源: 黄修源的博客_CSDN

应用程序层:汽车制造商和供应商在该层上实现的软件模块,根据车型、配置和功能需求而不同。这些模块可以直接在汽车ECU上运行,如行车辅助系统、车载娱乐系统和车辆控制单元等。

运行时环境层:运行汽车ECU软件的工作环境,主要包括操作系统、通信和安全框架等。运行时环境层提供了一系列API接口,使得应用程序可以访问操作系统、通信、网络和安全等服务。

基础软件层:各种软件模块,如操作系统、通信和安全模块等。这些模块提供重要的服务,如消息传输、内存管理、任务管理和时间管理等。

硬件抽象层:由硬件设备提供的抽象层,可屏蔽底层硬件差异。该层与硬件无关,而且是可移植的。硬件抽象层提供了一系列API接口,以便应用程序和基础软件可以访问外围设备和传感器等硬件设备。

 

3. AutoSAR实现

AutoSAR的实现需要符合其规范,具有一致性和互操作性。实现AutoSAR可以采用两种方法:手动和自动。手动实现AutoSAR需要开发人员按照AutoSAR标准设计和实现所有软件组件,包括API、运行时环境、基础软件和硬件抽象层。而自动实现则是通过使用AutoSAR工具链来生成标准化代码或脚手架,以减少手动实现的工作量。

AutoSAR工具链是一套软件工具集,包括配置工具、代码生成器、测试工具和仿真环境等。通过AutoSAR工具链,开发人员可以很容易地创建、配置和实现AutoSAR软件组件。这个工具链由AutoSAR联盟制定并提供,目前已经有多个厂商提供了AutoSAR工具链。

 

4. AutoSAR的优势

采用AutoSAR标准化架构有多重好处:

(1)标准化:提高软件质量和可靠性。

AutoSAR采用标准化软件组件,尽可能复用已经验证过的模块,以减少错误和缺陷。此外,AutoSAR还提供了标准化的测试和验证规范,以确保软件的正确性和可靠性。

(2)软硬件分离:降低系统开发和维护成本。

AutoSAR的开发人员能够更加专注于应用程序的开发,不必花费过多时间和精力在底层架构和细节上。此外,AutoSAR提供了标准化的API接口和软件组件,使得不同供应商之间的互操作性得到了大幅度提升,从而带来更高的灵活性和可扩展性。

(3)提高汽车电子系统的创新性和灵活性。

AutoSAR为汽车制造商提供了标准化的、模块化的软件架构,可以更加容易地实现汽车电子系统的创新和差异化,同时可增强系统的灵活性和可靠性。

总之,AutoSAR提供了一种标准化的汽车ECU软件开发框架,可以帮助汽车制造商和供应商降低系统开发和维护成本,提高软件质量和可靠性,促进汽车电子系统的创新和灵活性。

 

5. AutoSAR的局限

AUTOSAR的设想很美好,尽管AutoSAR在汽车行业中被广泛采用,但它仍然存在一些局限性,包括:

  1. 运行效率较低: AUTOSAR通过更多的软件层来实现硬件无关性,因此会降低系统的运行效率。

  2. 软件约束:AutoSAR是一种基于标准化软件架构的解决方案,但某些应用程序需要特定的软件模块或工具链,这可能不包含在AutoSAR标准中。AUTOSAR的整套工具链价格还是相当昂贵的。目前提供AUTOSAR开发工具链及基础层软件的基本上就Vector、Elektrobit(Continental)和Bosch三家。

  3. 学习曲线陡峭:AUTOSAR的概念和框架相对复杂,需要较长时间的学习和适应。因此,如果企业人才没有足够的技能和经验,可能会面临困难。

  4. 开发成本较高:由于AUTOSAR提供了复杂的软件架构和工具链,因此开发成本相对较高。

 

这里的NM主要是针对Can协议的网路管理。 AUTOSAR CanNM的核心思想主要归纳为以下两条: 1.  如果节点需要保持通信,则节点需要周期的发送NMPDUs,否则停止发送NMPDUs 2.     如果总线上的所有节点不需要使用总线,那么总线上过了一段时间没有NMPDUs时,则会进入Bus-Sleep Mode。   工作模式和状态   CanNm一共有三个工作模式 1.  Network Mode 2.  PrepareBus-Sleep Mode 3.  Bus-Sleep Mode 模式的改变应该通过回调函数通知上层。 下面单独说每种模式   (1)Network Mode Network Mode又包括三个内部状态 1. Repeat Message State 2. Normal Operation State 3. Ready Sleep State ①Repeat Message State 这个模式被用来确保从Bus-Sleep or Prepare Bus-Sleep到Network Mode的节点被总线上面其他节点发现。这个状态可以用来检测总线上的节点。 当进入Repeat Message State时,节点应该开始传送NMPDUs。 在Repeat Message State时,当NM-Timeout Timer溢出,CanNm模块应该重载Timer。 CanNm模块应该在Repeat Message State 下保持一段时间,这段时间可以通过CANNM_REPEAT_MESSAGE_TIME来进行配置。 当离开Repeat Message State的时候,如果节点需要通信,则进入Normal Operation State;如果节点不需要通信,则进入Ready Sleep State。并且清空Repeat Message Bit。   ②Normal Operation State 这个状态可以保持总线处于唤醒状态。从Ready sleep state进入这个状态的时候应该发送NMPDUs。 在Normal Operation State当NM-Timeout Timer溢出,CanNm模块应该重载Timer。 如果节点不需要使用通信,则网络应该被释放,节点应该进入Ready Sleep State。 如果节点接收到Repeat Message Request Bit,则节点进入Repeat Message State。如果节点自身需要进入Repeat Message State,则该节点进入Repeat Message State并且设置Repeat Message Request Bit。   ③ReadySleep State 这个状态是为了如果本节点已经准备释放总线,而其他节点还需要使用总线的时候,在这个状态下等待其他总线上的节点进入Perpere Bus-Sleep Mode。进入这个状态之后,CanNm模块应该停止NMPDUs的传送。 如果NM-Timeout Timer溢出,节点将会进入Prepare Bus-Sleep Mode。 如果该节点需要使用总线,则节点进入Nomal Operation State。 如果节点接收到Repeat Message Request Bit,则节点进入Repeat Message State。如果节点自身需要进入Repeat Message State,则该节点进入Repeat Message State并且设置Repeat Message Request Bit。 (2)PrepareBus-Sleep Mode   这个状态是为了等待总线上的所有节点能够在进入Bus-Sleep Mode之前,有时间停止节点的active状态如清空队列中为发送的报文。在Prepare Bus –Sleep Mode下,所有节点都静默下来。 当节点进入PrepareBus Mode时,应该通知上层应用。通过配置CANNM_WAIT_BUS_SLEEP_TIME参数,可以改变节点在PrepareBus-Sleep Mode停留的时间,在这段时间之后节点将会进入其他状态。 在Prepare Bus-Sleep Mode下面接收到NMPDU或者被上层应用请求通信时,节点将进入Network Mode中的Normal operation State。   (3)Bus-SleepMode   Bus-Sleep Mode的目的是当没有消息被传送的时候可以减少能量的消耗。在Bus-Sleep Mode下面,节点可以被唤醒(如本地唤醒源和CAN线唤醒源)。CANNM_TIMEOUT_TIME+CANNM_WAIT_BUS_SLEEP_TIME两个参数在整个总线上面的节点都应该时一样的配置,保证了总线上的节点能够统一的进行休眠。 当进入Bus-Sleep Mode时候,应该通知上层应用。 在Bus-Sleep Mode下,如果成功接收到NMPDU,CAN NM模块应该调用Nm_NetworkStartIndication。 如果CanNm_PassiveStartUp被调用,则CAN NM模块进入Network Mode 中的Repeat Message State。 ———————————————— 版权声明:本文为CSDN博主「cococenstar」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/cococenstar/article/details/84096689
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐元

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值