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

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

3天内不再提示

映射DDS和AUTOSAR类型系统实现

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

    文章

    630

    浏览量

    152513
  • AUTOSAR
    +关注

    关注

    10

    文章

    350

    浏览量

    21454

原文标题:一文读懂DDS和AUTOSAR Adaptive的集成

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是DDS?初识CP AUTOSAR平台下的DDS规范

    数据分发服务(DDS)[1]是一个来自对象管理组(OMG)的中间件协议和API标准。它将系统的组件集成在一起,提供低延迟的数据连接,极高的可靠性,和可扩展的架构。
    的头像 发表于 12-05 18:18 3596次阅读
    什么是<b class='flag-5'>DDS</b>?初识CP <b class='flag-5'>AUTOSAR</b>平台下的<b class='flag-5'>DDS</b>规范

    Autosar软件开发技术概述

    系统的编码与诊断),到系统定制(如个性化定制功能,可设定特殊条件的服务定制功能)。现在,应用于全新7系的BMW Standard Core软件系统通过AUTOSAR架构
    发表于 12-26 10:34

    【设计技巧】基于AUTOSAR的电机驱动系统报告

    软件存在潜在的风险。AUTOSAR 是以软件分层和模块划分的方式实现软硬件分离的汽车开放式架构标准,将系统软件架构划分为应用软件层(APP)、基础软件层(BSW)和实时运行环境层(RTE)。如下图所示
    发表于 07-27 08:00

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

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

    AUTOSAR是什么

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

    为什么使用AUTOSAR

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

    AUTOSAR基础软件层是由哪些部分组成的

    AUTOSAR基础软件层即BSW(Basic Software)层,与应用层、运行环境层共同搭建了AUTOSAR的软件体系。三个层从上而下,层层递进,实现了从人机交互到底层硬件的联系。AUTO
    发表于 02-17 08:00

    介绍AUTOSAR支持的四种功能安全机制

    1、AUTOSAR的四种功能安全机制虽然AUTOSAR不是一个完整的安全解决方案,但它提供了一些安全机制用于支持安全关键系统的开发。本文用于介绍AUTOSAR支持的四种功能安全机制:内
    发表于 06-10 17:33

    基于RT-Thread内核的AUTOSAR在n32g上的实现方案

    1、基于RT-Thread内核的AUTOSAR在n32g上的实现随着小米宣布造车,当下“软件定义汽车”的趋势如火如荼,autosar的全称Automotive Open System
    发表于 07-27 14:30

    AUTOSAR功能安全机制之内存分区与实现

    1、AUTOSAR功能安全机制之内存分区与实现  在AUTOSAR架构中,应用软件位于RTE上方,由互连的AUTOSAR SWC组成,这些组件以原子方式封装了应用软件功能的各个组成部分
    发表于 09-19 15:55

    基于FPGA的DDS信号源设计与实现

    基于FPGA的DDS信号源设计与实现 利用DDS和 FPGA 技术设计一种信号发生器.介绍了该信号发生器的工作原理、 设计思路及实现方法.在 FPGA 器件上
    发表于 02-11 08:48 225次下载

    AUTOSAR 基础软件层

    AUTOSAR基础软件层即BSW(Basic Software)层,与应用层、运行环境层共同搭建了AUTOSAR的软件体系。三个层从上而下,层层递进,实现了从人机交互到底层硬件的联系。AUTO
    发表于 12-22 19:03 26次下载
    <b class='flag-5'>AUTOSAR</b> 基础软件层

    基于AUTOSAR的汽车故障诊断系统的设计与实现

    基于AUTOSAR的汽车故障诊断系统的设计与实现
    发表于 03-28 16:59 6次下载

    一文读懂DDSAUTOSAR Adaptive的集成

    对于使用AUTOSAR制造车辆的公司来说,已经出现了两个不同的平台 - AUTOSAR Classic和AUTOSAR Adaptive 这两个AUTOSAR平台之间互操作性的基础标准
    的头像 发表于 11-02 10:05 2541次阅读

    AUTOSAR经典平台介绍

    经典平台(AUTOSAR CP) AUTOSAR经典平台(AUTOSAR CP)是AUTOSAR软件架构的一种实现,旨在提供一种标准化的方法
    的头像 发表于 10-27 15:30 1342次阅读
    <b class='flag-5'>AUTOSAR</b>经典平台介绍