DEENESPTFRRUARHIKOZHNL

模块 ara::rds — Raw Data Streams

Diese Seite wurde vollständig KI-generiert auf Basis von SWS Raw Data Stream (R25-11) — kein offizieller AUTOSAR-Text und keine automatisch extrahierte API-Seite wie die übrigen Module. Als Interpretation gekennzeichnete Aussagen sind Schlussfolgerungen aus den Quellen.

模块指南人工智能生成

实现非结构化 IP 和 IEEE 1722 原始数据流的高性能、免序列化传输。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 59d82b96c22a 来源
因果锚点:R25-11 自 R25-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

实现非结构化 IP 和 IEEE 1722 原始数据流的高性能、免序列化传输。

自适应集群 Raw Data Stream (RDS) 用于在绕过面向服务的序列化开销的情况下,优化非结构化数据流以及时效性传感器与多媒体数据的传输延迟与吞吐量 AUTOSAR_AP_EXP_SWArchitecture 第74页。它为基于 IP 的点对点字节流 (TCP/UDP) 以及符合 AVTP 标准 IEEE 1722 的第 2 层流传输提供 C++ API [SWS_RDS_10482], [SWS_RDS_90312]。这两种通信形式均严格通过静态工厂方法工作,并通过平台范围的 Result 结构以节省资源的方式报告错误 [SWS_RDS_12367]。

功能集群 Raw Data Stream (RDS) 为 AUTOSAR Adaptive Platform 提供用于传输未格式化字节流和时效性传感器数据的高性能接口 AUTOSAR_AP_EXP_SWArchitecture 第73页。通过直接抽象 POSIX 网络套接字以及第 2 层以太网接口,RDS 绕过了标准面向服务通信 (ara::com) 复杂的序列化 AUTOSAR_AP_EXP_SWArchitecture 第74页。

对于基于 TCP 或 UDP 的 IP 字节流,应用程序使用类 RawDataStreamClient 和 RawDataStreamServer,这些类通过静态 Create 方法绑定到建模的端口 [SWS_RDS_10482], [SWS_RDS_11312]。在通过 Connect 或 WaitForConnection 建立连接后,数据量无需不必要的内存复制即可借助 std::unique_ptr<ara::core::Byte[]> 通过 ReadData 和 WriteData 进行交换 [SWS_RDS_10486], [SWS_RDS_10487], [SWS_RDS_11301]。

Raw Data Stream (IP) 的连接建立与数据交换Client: AppClient: RawDataStreamClientServer: RawDataStreamServerServer: AppUse Case: InitialisierungCreate(instance)Result<RawDataStreamServer>WaitForConnection()Create(instance)Result<RawDataStreamClient>Use Case: VerbindungsaufbauConnect()Verbindungsaufbau (IP/Socket)Result<void> (verbunden)Result<void> (verbunden)Use Case: Bidirektionaler Datenaustauschloop流媒体活跃WriteData(data, maxLength)Bytestrom-PayloadResult<void>ReadData(maxLength)Result<ReadDataResult>Use Case: VerbindungsabbauShutdown()Terminierung (Socket close)Result<void>Shutdown()Result<void>

时序图:基于 IP 的 Raw Data Stream 中的连接建立、数据交换与终止。来源:[SWS_RDS_10482]、[SWS_RDS_10484]、[SWS_RDS_10486]、[SWS_RDS_11312]、[SWS_RDS_11318]、[SWS_RDS_11322]

对于来自摄像头或音频源的确定性实时数据流,RDS 实现了符合 IEEE 1722 (AVTP) 的类,例如 IEEE1722RawDataStreamProducer 和 IEEE1722RawDataStreamConsumer [SWS_RDS_90312], [SWS_RDS_90323]。特定的子类型类,如 RVF(视频)、AAF(音频)和 CRF(时钟参考),在此封装了符合标准的帧头与有效负载数据 [SWS_RDS_90262], [SWS_RDS_90276], [SWS_RDS_90295]。

错误以符合平台规范的方式在不使用 C++ 异常的情况下通过 ara::core::Result 和带有特定错误码 (RdsErrc) 的错误域 RdsErrorDomain 进行指示 [SWS_RDS_11298], [SWS_RDS_12367]。在 AUTOSAR 清单中,接口定义通过 RawDataStreamClientMapping 和 RawDataStreamServerMapping 无缝绑定到以太网端点 AUTOSAR_AP_TPS_ManifestSpecification 第851页。

架构归属与系统边界

AUTOSAR Adaptive Platform 的功能集群 Raw Data Stream (RDS) 为非结构化或实时关键数据流的高性能传输提供标准化应用程序编程接口 (API) AUTOSAR_AP_EXP_SWArchitecture 第73页。与通过 ServiceInterfaces(如 SOME/IP 或 DDS)进行的强类型、面向服务的通信相反,RDS 完全绕过了 ara::com 的序列化和协议开销 AUTOSAR_AP_EXP_SWArchitecture 第74页。这使得能够将宽带传感器(如视频摄像头、雷达、LiDAR 传感器或音频系统)直接以支持实时且吞吐量优化的方式连接到 Adaptive Applications AUTOSAR_AP_EXP_SWArchitecture 第61页。

在架构上,该模块分为两大基本通信支柱:其一是通过传输协议(如 TCP 或 UDP)进行的基于 IP 的字节流传输,封装了 POSIX 套接字并带有可选的 TLS/IPsec 保护 AUTOSAR_SWS_CommunicationManagement 第58页。其二,该模块为通过以太网和时间敏感网络 (TSN) 网络按照 IEEE 1722(音频视频传输协议,AVTP)进行第 2 层流传输提供了专用子系统 AUTOSAR_AP_EXP_SWArchitecture 第74页。这两种通信形式都将系统特定的网络和缓冲区结构抽象到命名空间 ara::rds 中的统一 C++ 类之后 AUTOSAR_AP_SWS_RawDataStream 第39页。

实例化与连接管理

在 RDS 中,通信端点的创建严格通过绑定到建模端口实例的静态工厂方法进行 [SWS_RDS_10482]。对于基于 IP 的字节流,类 ara::rds::RawDataStreamClient 和 ara::rds::RawDataStreamServer 封装了发起方和侦听方的角色 AUTOSAR_AP_EXP_SWArchitecture 第73页。工厂 RawDataStreamClient::Create 通过 ara::core::InstanceSpecifier 为清单中定义的端口线程安全地实例化客户端端点 [SWS_RDS_10482]。类似地,RawDataStreamServer::Create 创建关联的服务器端点实例 [SWS_RDS_11312]。这两个类均禁止复制构造函数和复制赋值,但显式支持移动语义以实现明确的资源归属 [SWS_RDS_11303], [SWS_RDS_11305], [SWS_RDS_11316], [SWS_RDS_11314]。

初始化成功后,服务器通过 WaitForConnection 以阻塞方式或使用指定的超时等待传入连接 [SWS_RDS_11318], [SWS_RDS_11319]。客户端则通过 Connect 主动建立连接,可选择无限制或在以毫秒为单位的时间段内 [SWS_RDS_10484], [SWS_RDS_11307]。活动会话的终止既可以通过调用 Shutdown [SWS_RDS_10485], [SWS_RDS_11320] 确定性地发生,也可以在析构函数调用中隐式发生,析构函数会自动关闭并释放仍处于打开状态的连接 [SWS_RDS_10483], [SWS_RDS_11313]。

Raw Data Stream (IP) 的连接建立与数据交换Client: AppClient: RawDataStreamClientServer: RawDataStreamServerServer: AppUse Case: InitialisierungCreate(instance)Result<RawDataStreamServer>WaitForConnection()Create(instance)Result<RawDataStreamClient>Use Case: VerbindungsaufbauConnect()Verbindungsaufbau (IP/Socket)Result<void> (verbunden)Result<void> (verbunden)Use Case: Bidirektionaler Datenaustauschloop流媒体活跃WriteData(data, maxLength)Bytestrom-PayloadResult<void>ReadData(maxLength)Result<ReadDataResult>Use Case: VerbindungsabbauShutdown()Terminierung (Socket close)Result<void>Shutdown()Result<void>

时序图:RawDataStreamClient 与 RawDataStreamServer 之间的连接建立、双向数据交换与终止。来源:[SWS_RDS_10482]、[SWS_RDS_10484]、[SWS_RDS_10486]、[SWS_RDS_10487]、[SWS_RDS_11312]、[SWS_RDS_11318]、[SWS_RDS_11322]、[SWS_RDS_11324]、AUTOSAR_AP_SWS_RawDataStream 第10页、AUTOSAR_AP_EXP_SWArchitecture 第204页、AUTOSAR_AP_EXP_SWArchitecture 第222页

StateLifecycle Uninitialized 未初始化 Created Instanz erzeugt Uninitialized->Created Create() Listening 等待客户端(服务器) Created->Listening WaitForConnection() Connected Verbunden (Streaming aktiv) Created->Connected Connect() Closed Geschlossen / Terminiert Created->Closed Destruktor Listening->Connected Client verbunden Listening->Closed Shutdown() / Timeout Connected->Connected ReadData() / WriteData() Connected->Closed Shutdown() / Destruktor

状态图:Raw Data Stream 连接的生命周期。来源:[SWS_RDS_10482]、[SWS_RDS_10484]、[SWS_RDS_10485]、[SWS_RDS_10486]、[SWS_RDS_10487]、[SWS_RDS_11318]、[SWS_RDS_11320]

通过套接字进行非结构化 IP 数据交换

IP 连接的数据传输设计为双向,并通过具有可选超时监控的可同步处理操作执行 [SWS_RDS_10486], [SWS_RDS_11309]。在接收方,操作 ReadData 返回类型为 ara::rds::ReadDataResult 的数据结构 [SWS_RDS_10486], [SWS_RDS_11322]。该结构以智能指针 data (std::unique_ptr<ara::core::Byte[]>) 的形式封装读取的二进制数据,并通过字段 numberOfBytes 指定实际接收的字节数 [SWS_RDS_11301], [SWS_RDS_11302]。通过转移缓冲区所有权,避免了不必要的内存复制。

为了发送二进制数据,应用程序同样使用移动语义通过 std::unique_ptr<ara::core::Byte[]> 传递字节缓冲区,并在 WriteData 中指定最大长度 maxLength [SWS_RDS_10487], [SWS_RDS_11324]。对于对延迟敏感或存在阻塞风险的网络路径,可以使用带有以毫秒为单位的显式超时规范的 ReadData 和 WriteData 的重载变体 [SWS_RDS_11310], [SWS_RDS_11323], [SWS_RDS_11325]。藉此可以确定性地拦截对端未响应或网络缓冲区卡顿的情况 AUTOSAR_AP_EXP_InterfacesGuidelines 第41页。

使用 IEEE 1722 (AVTP) 进行近实时流传输

对于确定性的等时多媒体与传感器流,RDS 提供了符合 IEEE 1722 的用于消费者和生产者的专用模板类 [SWS_RDS_90312], [SWS_RDS_90323]。类 ara::rds::IEEE1722RawDataStreamConsumer<T> 用作数据槽并通过 Create 实例化 [SWS_RDS_90312]。借助 Connect,它绑定到分配的流(在过滤多播 MAC、VLAN 和流 ID 的情况下)AUTOSAR_AP_EXP_SWArchitecture 第203页,以便随后通过 ReadData 读取最多 maxNumberOfDatagrams 个结构化数据报作为 std::vector<T> [SWS_RDS_90319], [SWS_RDS_90321]。类似地,ara::rds::IEEE1722RawDataStreamProducer<T> 负责通过 WriteData(std::vector<T>) 生成和发送 AVTP 帧 [SWS_RDS_90323], [SWS_RDS_90330], [SWS_RDS_90332]。

数据报类型构成标准化的面向对象继承层次结构 AUTOSAR_AP_SWS_RawDataStream 第39页。所有帧的基础是具有有效负载数据字段 data 和长度说明 stream_data_length 的 IEEE1722Datagram [SWS_RDS_90226], [SWS_RDS_90227], [SWS_RDS_90228]。派生自此的 IEEE1722DatagramAVTPDUCommonHeaderFields 封装了通用头信息,如 avtpStreamDataSubtype、headerSpecific 和协议 version [SWS_RDS_90230], [SWS_RDS_90231], [SWS_RDS_90232],其后是带有时间戳 (avtp_timestamp)、流标识 (unique_id, mac_address) 和数据包序列号 (sequenceNum) 的 IEEE1722DatagramAVTPDUCommonStreamHeaderFields [SWS_RDS_90235], [SWS_RDS_90237], [SWS_RDS_90240]。

在此通用基础之上构建了具体的子类型特化:\nIEEE1722DatagramRVF 用于带有像素参数、帧率和行信息的原始视频数据 (pixel_format, pixel_depth, frame_rate, colorspace, total_lines) [SWS_RDS_90276], [SWS_RDS_90278], [SWS_RDS_90285], [SWS_RDS_90286], [SWS_RDS_90287];\nIEEE1722DatagramAAF 用于音频格式,如 PCM 或 AES3 (channels_per_frame, bit_depth, aes3_data_type_h) [SWS_RDS_90262], [SWS_RDS_90266], [SWS_RDS_90267], [SWS_RDS_90270];\nIEEE1722DatagramCRF 用于通过 TSN 进行时钟同步和时钟传输 (base_frequency, timestamp_interval, pull) [SWS_RDS_90295], [SWS_RDS_90297], [SWS_RDS_90302], [SWS_RDS_90303];\n以及 IEEE1722Datagram61883_IIDC 用于工业级摄像头传输 [SWS_RDS_90245], [SWS_RDS_90260],和 IEEE1722DatagramNTSCF 用于非时效性控制格式 [SWS_RDS_90306], [SWS_RDS_90310]。

Ablauf IEEE 1722 Audio/Video StreamingProducer AppIEEE1722ProducerIEEE1722ConsumerConsumer AppUse Case: Setup & BindungCreate(instance)Result<IEEE1722RawDataStreamProducer>Connect()Result<void>Create(instance)Result<IEEE1722RawDataStreamConsumer>Connect()Result<void>Use Case: Isochrones Streamingloop帧可用WriteData(std::vector<T>)IEEE 1722 AVTP Datagramme (Layer 2)Result<void>ReadData(maxNumberOfDatagrams)Result<std::vector<T>>Use Case: TerminierungShutdown()Result<void>Shutdown()Result<void>

时序图:IEEE 1722 音频/视频流传输(Producer 和 Consumer)的交互周期。来源:[SWS_RDS_90312]、[SWS_RDS_90319]、[SWS_RDS_90320]、[SWS_RDS_90321]、[SWS_RDS_90323]、[SWS_RDS_90330]、[SWS_RDS_90331]、[SWS_RDS_90332]、AUTOSAR_AP_EXP_SWArchitecture 第203页、AUTOSAR_AP_EXP_SWArchitecture 第221页

IEEE1722Hierarchy Base IEEE1722Datagram + data : unique_ptr<Byte> + stream_data_length : uint16 CommonHeader IEEE1722DatagramAVTPDUCommonHeaderFields + avtpStreamDataSubtype : uint16 + headerSpecific : uint8 + version : uint8 CommonHeader->Base StreamHeader IEEE1722DatagramAVTPDUCommonStreamHeaderFields + avtp_timestamp : Optional<Timestamp> + sequenceNum : Optional<uint8> + unique_id : Optional<uint64> + mac_address : Optional<uint64> StreamHeader->CommonHeader AAF IEEE1722DatagramAAF Audio Format (PCM/AES3) AAF->StreamHeader RVF IEEE1722DatagramRVF Raw Video Format (Kamera) RVF->StreamHeader CRF IEEE1722DatagramCRF Clock Reference Format (TSN) CRF->CommonHeader IIDC IEEE1722Datagram61883_IIDC Industriekameras IIDC->StreamHeader NTSCF IEEE1722DatagramNTSCF 非时间关键数据 NTSCF->CommonHeader

类图:子系统 ara::rds 中 IEEE 1722 数据报的继承层次结构。来源:[SWS_RDS_90226]、[SWS_RDS_90230]、[SWS_RDS_90235]、[SWS_RDS_90245]、[SWS_RDS_90262]、[SWS_RDS_90276]、[SWS_RDS_90295]、[SWS_RDS_90306]、AUTOSAR_AP_SWS_RawDataStream 第39页

元建模与清单部署

在 AUTOSAR 清单元模型中,保持了应用程序设计与平台特定部署的分离 AUTOSAR_AP_TPS_ManifestSpecification 第254页。抽象基础元素 AbstractRawDataStreamInterface 特化了 PortInterface 并分支为具体接口 RawDataStreamClientInterface 和 RawDataStreamServerInterface AUTOSAR_AP_TPS_ManifestSpecification 第254页。在部署级别,EthernetRawDataStreamClientMapping 或 EthernetRawDataStreamServerMapping 将软件端口与物理通信端点(如 ApApplicationEndpoint、IP 地址和端口号)链接起来 AUTOSAR_AP_TPS_ManifestSpecification 第851页, TPS_ManifestSpecification 第850页。

清单允许针对系统拓扑采用灵活的集成方案:既包括完全形式化的 AUTOSAR 模型(其中客户端和服务器在同一个 ARXML 设计中链接 AUTOSAR_TPS_ManifestSpecification 第656页),也包括非对称配置。在这些非对称方案中,模型中仅对客户端或仅对服务器进行了建模,而各自的对端则通过静态凭据(如 remoteServerConfig 或 remoteClientConfig)进行连接 AUTOSAR_TPS_ManifestSpecification 第660页, AUTOSAR_TPS_ManifestSpecification 第661页。对于 AVTP 流,EthernetMacRawDataStreamMapping 将端口和进程直接绑定到 MAC 端点和 VLAN 优先级 AUTOSAR_AP_TPS_ManifestSpecification 第854页,对应于系统模板定义 IEEE1722TpConnection、IEEE1722TpAvConnection、IEEE1722TpAafConnection 和 IEEE1722TpRvfConnection AUTOSAR_CP_TPS_SystemTemplate 第705页, AUTOSAR_CP_TPS_SystemTemplate 第708页, AUTOSAR_CP_TPS_SystemTemplate 第716页。

ManifestMapping PortInterface PortInterface (M2 Core) AbstractRDS AbstractRawDataStreamInterface (kursiv / abstrakt) AbstractRDS->PortInterface ClientInterface RawDataStreamClientInterface ClientInterface->AbstractRDS ServerInterface RawDataStreamServerInterface ServerInterface->AbstractRDS Mapping RawDataStreamMapping (Deployment) ClientMapping EthernetRawDataStreamClientMapping ClientMapping->ClientInterface deployt ClientMapping->Mapping ServerMapping EthernetRawDataStreamServerMapping ServerMapping->ServerInterface deployt ServerMapping->Mapping IEEE1722Mapping EthernetMacRawDataStreamMapping IEEE1722Mapping->Mapping

上下文图:端口接口、映射与传输部署之间的 AUTOSAR 元模型关系。来源:[SWS_RDS_10482]、[SWS_RDS_11312]、AUTOSAR_AP_TPS_ManifestSpecification 第254页、AUTOSAR_AP_TPS_ManifestSpecification 第851页、TPS_ManifestSpecification 第850页

发生错误时的行为

RDS 中的错误处理遵循 AUTOSAR Adaptive Platform 通过 ara::core::Result 和 ara::core::ErrorCode 进行错误求值的方法 [SWS_RDS_10484], [SWS_RDS_11299]。所有可能失败的 API 方法——包括 Create、Connect、WaitForConnection、ReadData 和 WriteData——均声明为 noexcept,并通过返回类型 ara::core::Result 返回错误码 [SWS_RDS_10482], [SWS_RDS_10484], [SWS_RDS_11318]。模块特定的错误状态在枚举 ara::rds::RdsErrc 中管理 [SWS_RDS_12367],可通过类型别名 ara::rds::RdsErrorDomain::Errc 引用 [SWS_RDS_11326]。

该模块为此定义了错误域 RdsErrorDomain,其实例通过 GetRdsErrorDomain() 获取 [SWS_RDS_11298]。显式删除了 RdsErrorDomain 的默认构造函数 [SWS_RDS_11294]。错误描述和域名可以通过虚方法 Message(CodeType) 和 Name() 读取 [SWS_RDS_11295], [SWS_RDS_11296]。工厂函数 MakeErrorCode 允许从 RdsErrc 码和附加数据创建类型化错误对象 [SWS_RDS_11299]。对于启用了 C++ 异常的环境,该模块提供了异常 ara::rds::RdsException [SWS_RDS_11292], [SWS_RDS_11327],其可以通过 RdsErrorDomain::ThrowAsException 抛出 [SWS_RDS_11297]。

进一步详细证据

RDS 的架构与接口根植于 AUTOSAR 的核心规范文档中。基于 IP 的流和错误机制的 C++ 接口功能定义基于 AUTOSAR_AP_SWS_RawDataStream [SWS_RDS_10482], [SWS_RDS_11312], [SWS_RDS_12367]。IEEE 1722 流传输的架构模型、类设计和时序场景记录在 AUTOSAR_AP_EXP_SWArchitecture 中 AUTOSAR_AP_EXP_SWArchitecture 第74页, AUTOSAR_AP_EXP_SWArchitecture 第203页, AUTOSAR_AP_EXP_SWArchitecture 第221页。接口和部署的形式化建模通过 AUTOSAR_AP_TPS_ManifestSpecification AUTOSAR_AP_TPS_ManifestSpecification 第254页, AUTOSAR_AP_TPS_ManifestSpecification 第851页 以及 AUTOSAR_CP_TPS_SystemTemplate AUTOSAR_CP_TPS_SystemTemplate 第705页 中以太网传输连接的基础系统模板进行。

本模块指南基于针对 R25-11 版本的 AUTOSAR 规范自动创建。

Spezifikation: AUTOSAR_AP_SWS_RawDataStream.pdf (R25-11) · Kapitel 8

16 Klassen/Structs1 NamespaceIP- und IEEE-1722-Streams

ara::rds

IEEE 1722 datagram representation: IEEE1722Datagram.

IEEE 1722 datagram representation: IEEE1722Datagram61883_IIDC.

IEEE 1722 datagram representation: IEEE1722DatagramAAF.

IEEE 1722 datagram representation: IEEE1722DatagramAVTPDUCommonHeaderFields.

IEEE 1722 datagram representation: IEEE1722DatagramAVTPDUCommonStreamHeaderFields.

IEEE 1722 datagram representation: IEEE1722DatagramCRF.

IEEE 1722 datagram representation: IEEE1722DatagramNTSCF.

IEEE 1722 datagram representation: IEEE1722DatagramRVF.

IEEE 1722 datagram representation: IEEE1722DatagramTSCF.

Consumer for typed IEEE 1722 stream datagrams.

Producer for typed IEEE 1722 stream datagrams.

Object for reading and writing binary data streams over a network connection.

Object for accepting a connection and reading or writing binary data streams.

Error domain of Raw Data Stream.

Exception type for Raw Data Stream.

Result of a RawDataStream read operation.

Returns a reference to the RDS error domain.

constexpr const ara::core::ErrorDomain &GetRdsErrorDomain() noexcept;

Creates an RDS ErrorCode.

constexpr ara::core::ErrorCode MakeErrorCode(RdsErrc code, ara::core::ErrorDomain::SupportDataType data) noexcept;
RdsErrc 枚举

Enumeration of Raw Data Stream error codes.

enum class RdsErrc : ara::core::ErrorDomain::CodeType {...};

命名空间

类与结构体