AUTOSAR_AP_SWS_CommunicationManagement
FIG-c8edc4f01efc6df5
919 × 456 px
6 Release(s)
Figure 7.5: Serialization of Structs with Length Fields (Example)
SHA-256 Inhalts-Fingerabdruck:
c8edc4f01efc6df50d087f71f9e0f1bf1da9591464b30700472cec1dbf99628e
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: Datenstruktur- und Serialisierungs-Layout (PDU-/Wire-Format-Mapping).
- Technischer Zweck: Spezifikation des Byte-Stream-Layouts bei der Transformation geschachtelter C++-Strukturen (
struct) in ein standardisiertes On-Wire-Serialisierungsformat (vorrangig SOME/IP Data Serialization gemäßRS_CM_00201,RS_CM_00202,RS_CM_00211). - Architektur-Einordnung: Verortet im Binding-Layer von AUTOSAR Adaptive
ara::com(Communication Management). Es definiert, wie zusammengesetzte strukturierte Datentypen bei IPC- und Netzwerk-Bindings (Skeleton-zu-Proxy / Service Deployment) paketiert werden, wenn Längenfelder (lengthFieldSize) zur Typdekodierung, Vorwärtskompatibilität und Payload-Begrenzung konfiguriert sind (SWS_CM_10218,SWS_CM_10219).
2. Komponenten, Entitäten & Schnittstellen
- Logische Datentypen (In-Memory / Application Model):
Struct_1: Root-Datenstruktur, bestehend aus:uint32 a: 32-Bit Ganzzahl (Primitivtyp).float32 b[2]: Statisches 1D-Array aus zwei IEEE 754 32-Bit Gleitkommawerten (b_1,b_2).Struct_2 c: Eingebettete Instanz der UnterstrukturStruct_2.
Struct_2: Verschachtelte Struktur, bestehend aus:uint32 d: 32-Bit Ganzzahl.float32 e[2]: Statisches Array aus zwei 32-Bit Gleitkommawerten (e_1,e_2).Struct_3 f: Weitere hierarchisch eingebettete StrukturStruct_3.
- Wire-Format / Serialisierte Entitäten (PDU Stream):
uint16 lf1: Explizites 16-Bit-Längenfeld fürStruct_1(präfigiert vor die serialisierten Member vonStruct_1).uint16 lf2: Explizites 16-Bit-Längenfeld für das geschachtelte ElementStruct_2 c(präfigiert vor die Member vonStruct_2).uint16 lf3: Explizites 16-Bit-Längenfeld für das Sub-ElementStruct_3 f(präfigiert vor die Member vonStruct_3).- Flache Sequenz serialisierter Payload-Felder:
[lf1] [a] [b_1] [b_2] [lf2] [d] [e_1] [e_2] [lf3] [...].
- Beziehungen & Strukturhierarchie:
- Komposition:
Struct_1aggregiertStruct_2(1:1 per-value);Struct_2aggregiertStruct_3(1:1 per-value). - Jedes konfigurierte Struct-Längenfeld kapselt transitiv die vollständige Byte-Länge aller eigenen Attribute sowie sämtlicher darin rekursiv enthaltener Sub-Strukturen (inklusive deren jeweiliger Längenfelder).
- Komposition:
3. Dynamisches Verhalten & Sequenzablauf
Da es sich um ein statisches Serialisierungs-Mapping handelt, erfolgt der Ablauf rein funktional während der Serialisierung (Sender) bzw. Deserialisierung (Empfänger):
- Serialisierungsphase (Sender-seitig via SOME/IP-Serializer /
ara::com):- Reservierung/Allokation des Headers für
lf1(2 Bytes). - Direktes binäres Schreiben von Member
a(4 Bytes) gefolgt von Arrayb(b_1: 4 Bytes,b_2: 4 Bytes) in konfigurierter Network-Endianness (üblicherweise Big-Endian/Network Byte Order). - Beginn der Serialisierung des Members
c: Reservierung des Headers fürlf2(2 Bytes). - Schreiben von
d(4 Bytes),e_1(4 Bytes),e_2(4 Bytes). - Beginn von Member
f: Schreiben/Reservierung vonlf3(2 Bytes) und nachfolgenderStruct_3-Payload. - Backpatching / Größenberechnung:
lf3= Gesamtgröße der serialisierten Payload vonStruct_3.lf2=sizeof(d) + sizeof(e_1) + sizeof(e_2) + sizeof(lf3) + length(Struct_3)(in Bytes: 4 + 4 + 4 + 2 + Payload_Struct_3).lf1=sizeof(a) + sizeof(b_1) + sizeof(b_2) + sizeof(lf2) + length(Struct_2)(in Bytes: 4 + 4 + 4 + 2 + Payload_Struct_2).
- Reservierung/Allokation des Headers für
- Deserialisierungsphase (Empfänger-seitig via
ara::comBinding):- Auslesen von
lf1: Überprüfung, ob mindestenslf1Bytes im Buffer verfügbar sind (Bound-Check). - Parsen von
a,b_1,b_2. - Treffen auf
Struct_2: Auslesen vonlf2; Überprüfung, oblf2konsistent in den Scope vonlf1passt. - Parsen von
d,e_1,e_2und rekursives Parsen vonStruct_3überlf3. - Fehlerfälle: Bei PDU-Abschneidung (
available_bytes < length_field) oder Inkonsistenz von Sub-Längenfeldern (lf2 > lf1 - offset) verwirft der Stack das Paket deterministisch und meldet einen Deserialisierungs-/Unmarshalling-Fehler.
- Auslesen von
4. Normative Relevanz & Entwickler-Hinweise
- ARXML-Modellierung & Deployment:
- Das Vorhandensein und die Bitbreite der Längenfelder (
lf1,lf2,lf3) wird im ARXML-Manifest über das Service-Interface-Deployment konfiguriert (ParameterSomeipTransformationProps/SomeipFieldDeploymentbzw.lengthFieldSize = 16 Bitgem.SWS_CM_10218). - Steht
lengthFieldSizeauf0, entfällt das jeweilige Prefix; die Strukturgröße muss dann zur Compile-Zeit statisch bekannt und zwischen Client und Server identisch sein.
- Das Vorhandensein und die Bitbreite der Längenfelder (
- Vorwärts- und Rückwärtskompatibilität (E2E / Schema Evolution):
- Das Längenfeld erlaubt es Empfängern mit älterem Datenmodell, unbekannte zusätzliche Felder am Ende einer Struktur sicher zu überspringen (
SeekumLength - bereits_gelesene_Bytes), ohne den Gesamtparser zu blockieren (RS_CM_00211).
- Das Längenfeld erlaubt es Empfängern mit älterem Datenmodell, unbekannte zusätzliche Felder am Ende einer Struktur sicher zu überspringen (
- Alignment & Padding:
- Im gezeigten Format ist kein implizites Compiler-Padding enthalten. Alle Datenfelder folgen packed/dicht aufeinander, sofern nicht explizit Alignment-Padding konfiguriert ist (
SWS_CM_10219). Entwickler dürfen C++ Memory-Dumps (reinterpret_cast) nicht direkt auf das Wire-Format übertragen, da Host-Alignment (z. B. 64-Bit Alignment von Floats/Doubles) die Daten korrumpieren würde.
- Im gezeigten Format ist kein implizites Compiler-Padding enthalten. Alle Datenfelder folgen packed/dicht aufeinander, sofern nicht explizit Alignment-Padding konfiguriert ist (
- Stack-Laufzeit & Zero-Copy:
- Dynamische Längenberechnung bei tief geschachtelten Strukturen erfordert entweder einen Two-Pass-Serializer oder Streaming mit reservierten Längenfeld-Offsets (Backpatching im PDU-Ringbuffer). Dies ist kritisch für Latenz und deterministisches Speicher-Management im Embedded-Umfeld.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.