sw设计思路

依AutoSAR及经验辛苦整理,原创保护,禁止转载 。 专栏 《深入浅出AutoSAR》 全文 3100 字, 包含 1. SWC 概念 2. 数据类型(Datatype) 3. 端口(Port) 4. 端口接口(Portinterface) 5. Component

依AutoSAR及经验辛苦整理,原创保护,禁止转载

专栏 《深入浅出AutoSAR》

全文 3100 字, 包含

1. SWC 概念

2. 数据类型(Datatype)

3. 端口(Port)

4. 端口接口(Portinterface)

5. Component


前言

SWC (Software Component) 是 AutoSAR 架构中的核心概念之一。SWC主要包含的内容有以下几点:数据类型(datatype),端口接口(Portinterface),端口(Port),软件组件(SW-C)。


1. SWC 概念

SWC最形象的对比就是一个.C文件了,那么Composition SWC顾名思义就是.C文件的集合,体现在代码上,就是保存.C文件的文件夹。

SWC 是指软件组件,是一个独立的、可重用的、自我描述的、可替换的软件单元。它具有清晰的输入输出接口,相较于整个汽车电子系统来说,是一个更小的功能模块。SWC 可以是一个可执行的模块或者是一个库,它独立于其他组件工作,自带相应的状态和管理接口。SWC 之间的通信通过 AutoSAR 定义的接口进行。SWC一般位于AUTOSAR架构的Application层。

在使用 AutoSAR 架构下,开发人员首先需要将整个汽车电子系统分解为不同的 SWC。每个 SWC 都应该具有一些特定的功能,如传感器数据处理、控制算法、用户界面等等。每个 SWC 都需要定义其输入输出接口,以及其它自述和控制接口,这些接口都要符合 AutoSAR 定义的规范。然后,开发人员需要将这些 SWC 部署在具体的硬件平台上,并在系统级别上进行配置和管理。

SWC 内容

通常包括以下内容:

  1. 接口定义文件:用于描述SWC和其他SWC之间的接口,包括输入输出信号、服务等。

  2. 算法实现:包括控制算法、诊断算法、通信协议等。

  3. 状态机和事件驱动的代码实现:用于描述SWC内部的状态和事件处理逻辑。

  4. 代码生成工具链:用于将SWC部署到目标平台,例如生成可执行代码、配置文件等。

2. 数据类型(Datatype)

SWC主要是用于上层应用层设计,偏算法设计,那么既然是算法就涉及函数,函数就涉及变量,变量就自然涉及变量的数据类型。AUTOSAR架构中Datatype方面我们主要用到的一般是下面4个:

SwBaseType定义ECU软件中使用的基本数据类型
ApplicationDataType应用数据类型
ImplementationDataType实现数据类型
Data Type Mapping
将应用数据类型和实现数据类型Mapping上

为什么要Mapping呢?

代码生成是基于实现数据类型的,就算没有应用数据类型,也能生成。

新建数据类型顺序:

  1. 新建实现数据类型,然后关联基本数据类型
  2. 新建应用数据类型
  3. 将应用数据类型和实现数据类型进行Mapping上(这里有个细节,datamapping要在IB里调用的)

3. 端口 (Port)

Port是依附在SWC上的概念,比如配置工具配置SWC后,需要配置这个SWC的Port。其实也好理解,如果一个C文件孤零零的放在那里,与别的C文件没有任何数据交互,那么作为一套代码中的一个C文件,根本没法发挥作用,所以必然在SWC上需要配置上或者输入(R-Port)的或者输出(P-Port)的Port。

端口比作结婚的两家亲家方,接口比作结婚时男方给女方的彩礼。在通信中,端口相当于需要接收和发送的两方;接口就相当于通信的数据内容,大概可以这么理解。那么显而易见,Port就可以分为接收,发送和接发送,分别对应RPort,PPort和RPPort。

所以,我们要实现数据通信,就必须建立Port,然后配置他对应的接口。值得注意的是,我们在SWC连线的时候就知道了,要实现连线,就必须PPort和RPort所调用的接口是一样的,当然很好理解,彩礼肯定一定要一样呀,如果男方说8.8万,女方说18.8万,这样的彩礼对接,即通信是不可能成功的。

SWC 有很多Port, 是 SWC 的输入输出。 可作多个 SWC 的交互。实际上,在配置好的代码中,可以发现,如果我为SWC1和SWC2之间配置了一个SR的interface的话,SWC1中会有一个函数Rte_Write(),里面会对一个全局变量进行赋值。而另一边SWC2的里面会有一个Rte_Read()的函数,来读取这个全局变量。通过这种方式,达到了数据的交互。

Port分为require-port和provide-port,用来获取/提供某一服务或数据。当然,PortPrototype的定义需要先有PortInterface详细描述是有哪些信息交换,类似于面向对象的编程语言中的Interface定义。

当需要进行数据交换时,链接两个PortPrototype即可,R-P port成对连接(Assembly Connections)。

4. 端口接口(Portinterface)


Port之间具体传输何种信息,是由端口接口(PortInterface)定义的, 可以认为是Port所携带的内容。

PortInterface有以下几种种类

  • SenderReceiverInterface
  • NvDataInterface
  • ParameterInterface
  • ModeSwitchInterface
  • ClientServerInterface
  • TriggerInterface

常用的是SR接口(SenderReceiverInterface)和CS接口(ClientServerInterface),当然还有ModeSwitch接口(一般BswM和EcuM用),外部触发trigger接口,标定参数接口等。主要记录一下SR和CS这两种。

5. Component

Component表示系统的模块化部分。Component根据提供的和所需的接口定义其行为。 因此,Component作为一种类型,其一致性由这些提供和必需的接口定义(包括它们的静态和动态语义)。一个Component可以由多个类或组件拼凑而成。
 

Component 分类

图片来源: 【精选】AUTOSAR SWC详解-CSDN博客

Component 分类用途

6. Composition

CompositionSwComponentType用来将已有的SWC组合起来,作为一个功能组(也可以说是一个模块)来实现。这样的话内部逻辑对于集成人员来说不必关系,只需关心Composition级别暴露的port,由于CompositionSwComponentType本身也是SwComponentType,同样可以将它作为一部分,被包含于另一个CompositionSwComponentType当中。

当你需要暴露某一port时,应当在Composition上创建相同类型的Delegation port,并用Delegation Connection连接对应的SWC上的port。

Q/A

Q: Interface和port的关系和区别?

A: Interface与Implementation相对应,它有自己的规章制度,到我这里,要按我的标准做事。

port就象一个洞,到这里取/放东西,需要经过这个“洞”,因为其他地方是封住的,当然,也有可能存在其他的“洞”,重要的是,“洞”的后面黑黑一团,进出这个“洞”,可能有规则,可能有规则但不告诉你,还可能没规则。


参考

KimChan[Classic AUTOSAR学习] SWC设计与应用(一)-- 什么是SWC (Software Component) - 知乎
智能汽车小拿Autosar基本概念介绍: SWC/Runnable/Port和 Interface - 知乎 (zhihu.com)

Autosar Architecture (Learn from Scratch with Demo)

图片来源: COMIDOC

免责声明

本文根据公开信息整理,旨在介绍更多的汽车知识,所载文章仅为作者观点,不构成投资或商用建议。本文仅用于学习交流, 不允许商用。若有疑问或有侵权行为请联系作者处理。

知秋君
上一篇 2024-08-11 17:12
下一篇 2024-08-11 16:48

相关推荐