Die vorherigen Teile haben AVTP, ACF und die ARXML-Konfiguration konzeptionell und strukturell behandelt. Dieser Teil zeigt zwei komplette End-to-End-Beispiele — beide nachvollziehbar mit den echten Beispielprogrammen aus Open1722.
Beispiel 1: Ein Kamera-Stream von der Aufnahme bis zur Auslieferung
Wie in Teil 1
festgehalten: das AUTOSAR-Modul |
Sender-Seite: Video einlesen und als AVTPDU senden
cvf-talker liest einen H.264-Byte-Stream von stdin und verpackt ihn in
CVF-AVTPDUs. In der Praxis kombiniert man das mit GStreamer, um eine echte
Videoquelle (oder zum Testen ein synthetisches Testbild) einzuspeisen:
gst-launch-1.0 -e -q videotestsrc pattern=ball \
! video/x-raw,width=192,height=144 ! x264enc \
! video/x-h264,stream-format=byte-stream ! filesink location=/dev/stdout \
| cvf-talker <args>Voraussetzung für einen sauberen Stream: der Systemtakt muss mit der
PTP-Hardware-Uhr (PHC) der NIC synchronisiert sein, und diese wiederum mit
der PTP-Zeit im Netzwerk ( |
Switch-Seite: Stream Identification + Time-Aware Shaping
Damit der Stream im Switch überhaupt deterministisch weitergeleitet wird, braucht es die bereits in der EthSwt-Serie behandelten Mechanismen:
Stream Identification ordnet den Stream (über seine Stream-ID) einem Ausgangsport zu
Time-Aware Shaping reserviert das Zeitfenster, in dem der Stream garantiert weitergeleitet wird
Ohne diese beiden Mechanismen im Switch bleibt der Stream ein normales Best-Effort-Paket — die deterministische Zustellung ist eine Switch-Eigenschaft, keine reine Endpunkt-Eigenschaft.
Empfänger-Seite: Präsentation zum richtigen Zeitpunkt
cvf-listener empfängt die CVF-AVTPDUs, wartet bis zur im Zeitstempel
codierten Presentation Time und gibt die Videodaten erst dann aus:
cvf-listener <args> | gst-launch-1.0 filesrc location=/dev/stdin \
! h264parse ! avdec_h264 ! videoconvert ! autovideosinkDas bewusste Abwarten der Presentation Time ist der eigentliche Witz an AVTP-Streaming: der Empfänger zeigt das Bild nicht sofort bei Ankunft, sondern exakt zu dem im Header codierten Zeitpunkt — das ist, was mehrere synchron laufende Streams (z. B. Surround-View aus vier Kameras) überhaupt erst synchron hält. |
Beispiel 2: Ein CAN-Teilnetz transparent per ACF.CAN tunneln
Dieses Beispiel ist — anders als das Kamera-Beispiel — eine direkte
Entsprechung zum AUTOSAR-Subtype ACF_CAN aus
Teil 2,
da Open1722 hierfür ein eigenes, passendes Beispiel mitbringt:
acf-can-talker, acf-can-listener und acf-can-bridge.
Sender-Seite: CAN-Frame einlesen und tunneln
# Liest CAN-Frames von einem SocketCAN-Interface (z. B. can0) und tunnelt
# sie als ACF_CAN-Nachrichten über das angegebene Ethernet-Interface
acf-can-talker <ethernet-interface> <can-interface> <destination-mac>Empfänger-Seite: ACF_CAN wieder in CAN zurückverwandeln
# Empfängt ACF_CAN-Nachrichten und spielt sie auf einem lokalen
# SocketCAN-Interface wieder ein
acf-can-listener <ethernet-interface> <can-interface>Beide Kommandos zusammen ergeben eine unidirektionale Brücke (CAN-Bus A →
CAN-Bus B). Für bidirektionalen Verkehr bietet Open1722 zusätzlich
|
Mit |
Zusammenfassung
| Beispiel | Kernaussage |
|---|---|
Kamera-Stream (Video) | AUTOSAR nutzt IIDC, Open1722 demonstriert dasselbe Prinzip nur über CVF — End-to-End-Ablauf (PTP-Sync, Stream Identification, Time-Aware Shaping, Presentation Time) ist trotzdem übertragbar |
CAN-Tunnel (ACF_CAN) | Direkte Entsprechung zum AUTOSAR-Subtype — |
Determinismus | Kommt in beiden Fällen aus dem Switch (Stream Identification |
Nächster Schritt | Teil 5 baut das CAN-Tunnel-Beispiel als Praxisprojekt auf zwei echten BeagleBone Black nach — mit dem Open1722-Kernel-Modul statt User-Space-Apps |