• [深入浅出AutoSAR] SWC 设计与应用


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


    参考

    Autosar Architecture (Learn from Scratch with Demo)

    图片来源: COMIDOC

    免责声明

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

  • 相关阅读:
    RPA和传统自动化的区别?
    容错限流框架之Hystrix下
    线性代数 化简矩阵和零空间矩阵
    电脑桌面自动提醒的闹钟软件是哪个?
    【C++杂货铺】C++11特性总结:列表初始化 | 声明 | STL的升级
    Oracle(54)什么是本地索引(Local Index)?
    excel表格转pdf格式的方法介绍
    复习Day02:数组part02:977. 有序数组的平方、209. 长度最小的子数组、904. 水果成篮、59. 螺旋矩阵II
    dreamweaver作业静态HTML网页设计 大学美食菜谱网页制作教程(web前端网页制作课作业)
    JavaSE——数组习题
  • 原文地址:https://blog.csdn.net/vagrant0407/article/details/133957306