0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文读懂DDS和AUTOSAR Adaptive的集成

jf_EksNQtU6 来源:车端 作者:初光 2022-11-02 10:05 次阅读

对于使用AUTOSAR制造车辆的公司来说,已经出现了两个不同的平台 - AUTOSAR Classic和AUTOSAR Adaptive 这两个AUTOSAR平台之间互操作性的基础标准。使 AUTOSAR 自适应应用程序能够与现有和未来的 DDS系统进行互操作。

什么是dds?

DDS最重要的特性是以数据为中心,这是与其他很多通信中间件不同的地方。DDS的数据共享以Topic为单元,应用程序能够通过Topic判断其所包含的数据类型,而不必依赖其他的上下文信息。同时,DDS能够按照用户定义的方式自动地进行存储、发布或订阅数据,使应用程序能够像访问本地数据一样去写入或者读取数据

DDS实现的数据共享可以理解成一个抽象的“全局数据空间”,任何应用程序,不论开发语言,或者运行的操作系统类型,都可以通过相同的方式访问这个“全局数据空间”,就好像访问本地的存储空间一样。当然“全局数据空间”仅仅是一个抽象的概念,在实现时仍然是分别存储在每个应用程序的本地空间当中。在系统运行时,数据是按需传输或存储的,数据的发布者仅仅发送对方需要的数据,而订阅者仅接收并存储本地应用程序当前需要的数据。DDS还提供了非常灵活的QoS(Quality of Service)策略,以满足用户对数据共享方式的不同需求,比如可靠性,故障处理等等。针对数据安全性要求比较高的系统,DDS还提供了细颗粒度的数据安全控制,包括应用程序身份认证,权限控制,数据加密等等。

类似于SOME/IP-SD,DDS提供了对数据发布者和订阅者的动态发现机制,这意味着用户不必去配置通信节点的地址或其他属性信息,因为他们在运行的过程中会自动发现对方,并自动完成相关配置,即实现了“即插即用“。)

关于RTIDDS详细的的介绍,请到最后一节查看。

什么是中间件?

中间件是位于操作系统和用户应用程序之间的软件层,它将操作系统提供的资源进行抽象和封装,为应用程序提供各种各样的高级的服务和功能,比如通信或数据共享。中间件的存在简化了应用程序开发者的工作,这使他们能够将注意力放在应用程序本身上,而不必在不同应用程序之间或不同系统之间的数据传输上花太多精力)

什么是 DDS 网络绑定?

在 AUTOSAR 自适应平台中,通信管理功能集群提供面向服务的通信建模和基础设施。应用程序构建在中间件之上,应用程序级 API 与协议无关,中间件在 API 和实际的底层通信技术之间进行代理。AUTOSAR 中代理或者此类映射称为“网络绑定”,下面是三个标准化的通信协议:

DDS

SOME/IP

基于信号的通信

由于 AUTOSAR 自适应平台的各种设计方面,为 AUTOSAR 设计和实现网络绑定组件通常是一项复杂的任务:面向应用程序的 API 和网络绑定组件之间不存在标准化的 API 层,因此要求特定网络绑定的实现者以各自不同的方式来集成AUTOSAR 有自己的数据类型系统,必须通过网络绑定与每个底层通信技术(即 DDS 自己的可扩展类型)的类型系统和功能进行协调)AUTOSAR还规定了非常具体的对象生命周期和内存管理协议,这些协议必须与网络绑定封装的底层框架相匹配。

映射 DDS 和 AUTOSAR 类型系统

尽管 AUTOSAR 类型相当常见并且自然映射到 DDS-XTypes(布尔值、数字、字符串、结构、数组、序列等)——并且这种映射已经在通信管理规范中的 DDS 网络绑定材料中指定——但实际集成需要将 PSM(平台特定模块)组合在一起,用于 C 和C++编程语言中的两种类型系统。我们将选择AUTOSAR支持的唯一语言绑定,C++(最多C++14)和DDS的C语言PSM。从一个简单的示例开始,下面是从 DDS-IDL 或 DDS-XML 转换为 C 后的简单 Point3D 类型的外观:

struct Point3D {

     float x;

     float y;

     float z;

};

然后从AUTOSAR的ARXML转换为C++:

struct Point3D {

     float x;

     float y;

     float z;

};

让我们进一步改进我们的类型目录,将 3D 点分组为点云,为了简单起见,这些点云仅作为固定长度的数组排列。根据 DDS C PSM,有如下定义:

typedef Point3D PointCloud[1024];

但是相同的类型(1024个元素的点数组)将在AUTOSAR Adaptive中生成,如下所示:

typedef ara::Array PointCloud;

它们明显是相似但不相同的类型。事实上,ara::core::Array<>保留了一些普通固定长度数组类型的语义(例如索引访问),但也添加了类似 STL 的语义,如 begin() 和 end() 方法,并且不会隐式转换为 Point3D 指针。对于其他类型的,例如字符串和向量,此差距甚至更大。在RTI的ara::com中,通过AUTOSAR建模的用户定义类型(结构体)的实现类型不包含值字段,而是引用内部管理的“后端存储”的功能兼容包装器。此类后端存储可能基于 Adaptive Platform 的 PSM(标准C++数值类型和 ara::core 容器类型)或 DDS 的 PSM 自动生成类型,来自 DDS-IDL 或 DDS-XML。这种方法不仅简化了与多种不同的通信框架的集成,而且还为共享数据时的高效内存管理和增删改数据样本提供了便利。

实现高效的内存管理

由于上一节中描述的数据类型结构的灵活性,数据样本出现了两种非独占内存管理策略:

实现类型实例可以由应用程序直接分配堆栈或堆,这会导致内部类型实现使用 AUTOSAR 的内存中 PSM 类型。当传递给底层框架时,这些数据类型必须根据所需的目标数据格式(即,来自DDS-IDL或DDS-XML的DDS自动生成的类型)进行转换和/或序列化。

在寻求零拷贝传输时,应用程序还可以利用事件和字段通知程序提供的标准 Allocate() 方法。在这种情况下,网络绑定将尽可能要求底层框架“借出”内部分配的数据样本,该样本将在应用程序填充和发回时“返回”。后者是一种非常强大的机制,允许在几种情况下进行与大小无关的恒定时间传输:

共享内存传输

内存映射网络接口

进程内通信

除了以高性能的方式映射类型系统和 API 之外,AUTOSAR 的汽车产品重点还带来了另一个挑战:功能安全合规性。在任何ISO-26262 ASIL级别中,评估任何DDS实施,都要有SEooC,脱离(SEooC)去评估本身就是一个挑战,下面是一些对DDS实施和AUTOSAR的一些约束和要求:

C 是 DDS 网络绑定实现中唯一允许的 DDS 语言 PSM,因此可以轻松适应多种 DDS 实现(占用空间小、安全意识强)

多绑定支持是必须的,因为肯定需要提供多个DDS网络绑定才能支持上述各种DDS实现。

AUTOSAR 自适应 DDS 网络绑定规范中更精简的服务发现和绑定功能方法,使用在大多数 DDS 中间件实现中更容易找到的常见 DDS 功能(主题、实例)

RTI DDS 介绍

c83be808-59d6-11ed-a3b6-dac502259ad0.png

c84e9e94-59d6-11ed-a3b6-dac502259ad0.png

c9618b70-59d6-11ed-a3b6-dac502259ad0.png

c9974d0a-59d6-11ed-a3b6-dac502259ad0.png

c9ac56be-59d6-11ed-a3b6-dac502259ad0.png

c9c7f626-59d6-11ed-a3b6-dac502259ad0.png

c9da3688-59d6-11ed-a3b6-dac502259ad0.png

c9f788f0-59d6-11ed-a3b6-dac502259ad0.png

ca14f390-59d6-11ed-a3b6-dac502259ad0.png

ca23de32-59d6-11ed-a3b6-dac502259ad0.png

ca345c3a-59d6-11ed-a3b6-dac502259ad0.png

ca4fd17c-59d6-11ed-a3b6-dac502259ad0.png

ca790718-59d6-11ed-a3b6-dac502259ad0.png

ca978a3a-59d6-11ed-a3b6-dac502259ad0.png

cab0240a-59d6-11ed-a3b6-dac502259ad0.png

cac14424-59d6-11ed-a3b6-dac502259ad0.png

cae37aee-59d6-11ed-a3b6-dac502259ad0.png

cafb063c-59d6-11ed-a3b6-dac502259ad0.png

cb36d96e-59d6-11ed-a3b6-dac502259ad0.png

cb4fcf82-59d6-11ed-a3b6-dac502259ad0.png

cb6bfa36-59d6-11ed-a3b6-dac502259ad0.png

cb7e0d8e-59d6-11ed-a3b6-dac502259ad0.png

cb9b6cd0-59d6-11ed-a3b6-dac502259ad0.png

cbb0ce7c-59d6-11ed-a3b6-dac502259ad0.png

cbc181f4-59d6-11ed-a3b6-dac502259ad0.png

cbd15ea8-59d6-11ed-a3b6-dac502259ad0.png

cbe6e2d2-59d6-11ed-a3b6-dac502259ad0.png

cbfb3688-59d6-11ed-a3b6-dac502259ad0.png

cc0f594c-59d6-11ed-a3b6-dac502259ad0.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DDS
    DDS
    +关注

    关注

    21

    文章

    614

    浏览量

    151736
  • AUTOSAR
    +关注

    关注

    9

    文章

    330

    浏览量

    21138
收藏 人收藏

    评论

    相关推荐

    浅析BiAptx adaptive功能

    Adaptive。什么是Aptx Adaptive?字面意思啦,就是Aptx解码系列的员,拥有什么能力呢?自适应~所谓弱肉强食,适者生存。这强大的编解码是继承了前代编解码的优点,Aptx-HD和Aptx-LL
    发表于 09-20 09:05

    读懂接口模块的组合应用有哪些?

    读懂接口模块的组合应用有哪些?
    发表于 05-17 07:15

    AUTOSAR的工作原理是什么?为什么需要AUTOSAR

    AUTOSAR的工作原理是什么?为什么需要AUTOSAR
    发表于 05-17 06:44

    读懂如何去优化AC耦合电容?

    读懂如何去优化AC耦合电容?
    发表于 06-08 07:04

    读懂什么是NEC协议

    读懂什么是NEC协议?
    发表于 10-15 09:22

    AUTOSAR是什么

    AUTOSAR是什么AUTOSAR组织自己的介绍是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide deve
    发表于 11-10 07:47

    为什么使用AUTOSAR

    文章目录、总概述1 为什么使用AUTOSAR?1.1 AUTOSAR出现之前的行业现状1.2 AUTOSAR出现之后可以实现如下目标2、AUTOS
    发表于 12-09 07:50

    读懂中断方式和轮询操作有什么区别吗

    读懂中断方式和轮询操作有什么区别吗?
    发表于 12-10 06:00

    读懂传感器的原理与结构

    读懂传感器传感器在原理与结构上千差万别,如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的问题。当传感器确定之后,与之相配套的测量方法和测量设备也就
    发表于 01-13 07:08

    为应对未来汽车的各种主流趋势,Adaptive AUTOSAR平台诞生

    Adaptive AUTOSAR平台将是汽车ECU单元的未来基础,其关键优势在于其分布式工作模式,可在独立开发ECU应用时互不影响。传统ECU的开发会受到实时及安全需求的严格限制,但今天汽车行业
    的头像 发表于 08-02 09:06 7679次阅读

    基于CANoe和Visual Studio实现Classic和Adaptive AUTOSAR应用层调试

    而无法实现传统调试或测试工作。在面对复杂控制器软件系统时,CANoe可在虚拟环境实现软件系统的调试和测试工作,Visual Studio(简称VS)或许是虚拟环境下进行Classic AUTOSARAdaptive AUTOSAR
    的头像 发表于 03-10 15:47 2080次阅读

    AUTOSAR C++和MISRA C++集成和自适应开发

      AUTOSAR Adaptive 和 Classic 平台之间的共性是有帮助的——这一事实已经反映在 AUTOSAR 基础标准中,该标准包含适用于两者的要求和技术规范。
    的头像 发表于 06-17 14:55 1812次阅读
    <b class='flag-5'>AUTOSAR</b> C++和MISRA C++<b class='flag-5'>集成</b>和自适应开发

    映射DDSAUTOSAR类型系统实现

    对于使用AUTOSAR制造车辆的公司来说,已经出现了两个不同的平台 - AUTOSAR Classic和AUTOSAR Adaptive 这两个AU
    的头像 发表于 11-02 10:05 864次阅读

    AUTOSAR的软件架构

    本文主要内容分为两章节。第一章节简要介绍了AUTOSAR的软件架构,设计理念以及方法论,对Classic Platform和Adaptive Platform做了简单的比较。第二章主要介绍了Adaptive Platform的特
    的头像 发表于 05-24 11:01 2702次阅读
    <b class='flag-5'>AUTOSAR</b>的软件架构

    什么是Adaptive AUTOSAR?不使用Adaptive AUTOSAR行不行?

    Adaptive AUTOSAR是一种新的汽车软件框架,旨在满足现代汽车行业中不断增长的技术需求。随着汽车变得越来越智能,对处理器的性能要求也在不断增长。
    发表于 09-15 10:54 873次阅读
    什么是<b class='flag-5'>Adaptive</b> <b class='flag-5'>AUTOSAR</b>?不使用<b class='flag-5'>Adaptive</b> <b class='flag-5'>AUTOSAR</b>行不行?