Dieser Artikel gibt einen Überblick über die MIPI-CSI-2-Kameraschnittstelle und behandelt die Systemarchitektur, D-PHY-Übertragung, Paketmechanismen, Bildformate und Bandbreitenberechnung sowie die Integration und Fehlersuche innerhalb des Linux-media-controller-Frameworks. Der Inhalt richtet sich an die Hardware- und Softwareintegration von ARM-basierten SoCs, Bildsensoren, ISPs und V4L2-Videopipelines.

MIPI-CSI-Systemarchitektur
MIPI CSI-2 (Camera Serial Interface 2) ist ein serielles Hochgeschwindigkeitsprotokoll zur Übertragung von Bilddaten von einem Bildsensor an einen SoC, ISP oder FPGA. CSI-2 definiert Paketformate, Data Types, Virtual Channels und Fehlerschutzmechanismen, während D-PHY oder C-PHY die physikalische Signalübertragung übernehmen.

| Ebene |
Hauptaufgabe |
Typische Linux- / SoC-Implementierung |
| Steuerungsebene |
Modus-, Belichtungs-, Verstärkungs- und Stream-Steuerung |
Sensortreiber und I²C/I³C |
| CSI-2-Protokollebene |
Paketierung, VC, DT, ECC und CRC |
CSI-2-TX/RX-Controller |
| PHY-Ebene |
LP/HS-Zustände, Taktung und differenzielle Signalübertragung |
D-PHY/C-PHY und PHY-Treiber |
| Bildverarbeitungspipeline |
Dekodierung, Verarbeitung, DMA und Erfassung |
ISP, DMA und V4L2-Knoten |
D-PHY-Übertragung und Timing
Im Ruhezustand verbleibt eine D-PHY Data Lane im LP Stop State und wechselt über die LP-Zustandssequenz in den HS-Modus, bevor CSI-2-Pakete übertragen werden. Der Zugriff auf Sensorregister und die Stream-Steuerung erfolgen in der Regel über einen separaten I²C/I³C-Bus und sind von den LP-Zuständen der D-PHY Data Lane zu unterscheiden.

| Zustand / Phase |
Funktion |
Hinweise zur Integration |
| LP-11 Stop State |
Ruhezustand und Basis für den LP-Betrieb |
Lane-Zustand und Unterstützung durch den TX/RX-PHY prüfen |
| LP-01, LP-00 |
Teil der Sequenz für den Eintritt in bzw. Austritt aus dem HS-Modus |
Diese Zustände nicht als I²C-Steuerdaten interpretieren |
| HS-Prepare, HS-Zero |
Vorbereitung und Stabilisierung vor der Hochgeschwindigkeitsübertragung |
Beeinflusst die RX-Erkennung und die HS-Settle-Abstimmung |
| SoT |
Kennzeichnet den Beginn der Hochgeschwindigkeits-Paketübertragung |
SoT-Fehler können auf Timing-, Lane- oder Konfigurationsprobleme hinweisen |
| HS data transmission |
Überträgt den CSI-2-Paketdatenstrom |
Link Frequency, Anzahl der Lanes und Signalintegrität prüfen |
- Im clocked mode unterstützt die Clock Lane die Abtastung auf der Empfängerseite während der HS-Übertragung. Der Betrieb mit continuous oder non-continuous clock sollte anhand des Bildsensors, des SoC-PHY und der Treiberkonfiguration überprüft werden.
- HS-Settle sollte anhand der tatsächlichen Link Frequency, der Dokumentation des SoC-Empfängers und der Fehlerzähler abgestimmt werden; ein höherer Wert ist nicht zwangsläufig besser.
CSI-2-Pakete und Synchronisation
CSI-2 verwendet Short Packets zur Übertragung von Protokollereignissen oder Synchronisationsinformationen, während Long Packets RAW-, YUV-, RGB- oder Embedded-Daten übertragen. Ein Long Packet besteht aus einem 4-Byte-Header, der Payload und einem 2-Byte-CRC-Footer.

| Feld |
Funktion |
Zu prüfende Punkte |
| Virtual Channel (VC) |
Unterscheidet logische Datenströme |
Der Virtual Channel des Sensors und der RX Virtual Channel müssen kompatibel sein |
| Data Type (DT) |
Kennzeichnet das Pixelformat oder den Pakettyp |
Muss mit dem Ausgabemodus des Sensors und den RX-Fähigkeiten übereinstimmen |
| Word Count (WC) |
Gibt die Länge der Long-Packet-Payload in Byte an |
Sollte mit der Zeilenbreite und dem Pixel Packing übereinstimmen |
| ECC |
Schützt den Paket-Header |
Synchronisation, Lane, Konfiguration und RX-Dekodierung prüfen |
| CRC |
Schützt die Long-Packet-Payload |
PHY, Datenrate, Lane Mapping und TX/RX-Implementierung prüfen |
Frame Start (FS) und Frame End (FE) dienen der Synchronisation auf Frame-Ebene. Line Start (LS) und Line End (LE) ermöglichen optional eine Synchronisation auf Zeilenebene. Ob LS und LE tatsächlich übertragen werden, sollte anhand der Dokumentation des Bildsensors, der Traces des CSI-Empfängers oder der Treiberzähler überprüft werden.
Bildformate und Bandbreite
CSI-2 Data Types, V4L2 Media-Bus-Codes, V4L2-Capture-Speicherformate und die Format-Aushandlung des ISP müssen kompatible Bilddaten repräsentieren. Da sie jedoch unterschiedlichen Abstraktionsebenen angehören, müssen die Bezeichnungen und Positionen der jeweiligen Konfigurationen nicht eins zu eins übereinstimmen. Bei RAW-Daten sind sowohl die Bittiefe als auch die Bayer-Reihenfolge zu prüfen; bei YUV-Daten ist die Byte-Reihenfolge zu überprüfen.
Die minimale Nutzdatenmenge für aktive Pixel lässt sich wie folgt abschätzen:
Active-pixel payload = Width × Height × FPS × Bits per pixel
Diese Berechnung berücksichtigt lediglich die für aktive Pixeldaten erforderliche minimale Payload. Für den tatsächlichen CSI-2-Datendurchsatz und die D-PHY-Lane-Rate müssen zusätzlich Paket-Header, CRC, Synchronisationspakete, die Übertragungsstrategie während des Blankings, die Anzahl der Data Lanes, der Clock Mode, die verfügbaren Link-Frequency-Einstellungen des Sensors sowie die Einschränkungen des SoC-CSI-Empfängers berücksichtigt werden.
Per-lane rate ≳ Total CSI-2 throughput / Number of Data Lanes
Linux-Integration und Bring-up
Der Device Tree beschreibt in der Regel Graph-Endpoints, data-lanes, clock-lanes und remote-endpoint-Verbindungen. In den meisten media-controller-Architekturen werden Bildformate zur Laufzeit über die Pad-Formate der Sub-Devices, Media Links und Routing Negotiation ausgehandelt. Die tatsächlichen Bindings und unterstützten Formate hängen vom Kernel-Treiber des jeweiligen SoC ab.
# Entities, Pads und Links prüfen
media-ctl -p -d /dev/media0
# Beispiel: Pad-Format des vorgeschalteten Sensors konfigurieren
media-ctl -d /dev/media0 --set-v4l2 '"sensor 1-001a":0 [fmt:SRGGB10_1X10/1920x1080]'
# Beispiel: Link aktivieren
media-ctl -d /dev/media0 --links '"sensor 1-001a":0 -> "csi2rx":0 [1]'
# Speicherformat des Capture Nodes konfigurieren und Streaming starten
v4l2-ctl -d /dev/videoX \
--set-fmt-video=width=1920,height=1080,pixelformat=RG10 \
--stream-mmap=4 --stream-count=100
dmesg -w
Die in diesem Beispiel verwendeten Entity-Namen, Pad-Indizes, Media-Bus-Codes, FourCC-Werte und Video Nodes müssen an den tatsächlichen Media Graph angepasst werden und sind nicht plattformübergreifend fest vorgegeben.

Kompatibilität und Fehleranalyse
| Bereich |
Zu prüfende Punkte |
Typische Symptome |
| PHY |
Anzahl der Lanes, Mapping, Link Frequency, Clock Mode und HS-Settle |
SoT-Fehler, keine Daten oder sporadische Frame-Verluste |
| Protokoll |
VC, DT, Paketverhalten und ECC/CRC |
Header-Fehler, CRC-Fehler oder Probleme bei der Frame-Synchronisation |
| Format |
Bittiefe, Bayer-Reihenfolge, YUV-Reihenfolge und Packing |
Fehlerhafte Farben, grüne Frames oder beschädigte Bilder |
| Pipeline |
DT Graph, Media Links, Pad-Formate, ISP und DMA |
STREAMON-Fehler oder Buffer-Timeout |
- Wenn die I²C-Kommunikation funktioniert, aber keine Bilddaten empfangen werden, sind Power/Reset/MCLK, der Stream-on-Status des Sensors, data-lanes, Lane Mapping, Link Frequency, Media Graph und der CSI-RX-Status zu prüfen.
- Wenn Frame-Aktivität erkannt wird, aber ECC/CRC-Fehler auftreten, sollten die RX-Fehlerzähler, das Lane Mapping, die Link Rate, HS-Settle, die Signalintegrität auf Board-Ebene und die TX/RX-Konfiguration geprüft werden.
- Wenn Frames erfasst werden können, die Farben jedoch nicht korrekt sind, sollten RAW-Bittiefe, Bayer-Reihenfolge, Media-Bus-Code, Memory FourCC und ISP-Pipeline geprüft werden.
Häufig gestellte Fragen
1. Sind CSI-2 und D-PHY dasselbe?
Nein. CSI-2 ist ein paketbasiertes Protokoll für Bilddaten, während D-PHY eine häufig verwendete Übertragungsschnittstelle der physikalischen Schicht ist.
2. Warum werden keine Bilddaten empfangen, obwohl die I²C-Kommunikation funktioniert?
Eine funktionierende I²C-Kommunikation bestätigt lediglich den Steuerkanal. Im Bilddatenpfad können weiterhin Probleme mit MCLK, Lanes, PHY-Timing, Protokoll, Media Graph, ISP oder DMA auftreten.
3. Was ist der Unterschied zwischen ECC und CRC?
ECC schützt hauptsächlich den Packet Header und kann Einzelbitfehler korrigieren sowie Zweibitfehler erkennen. CRC überprüft die Integrität der Long-Packet-Payload. Bei dauerhaft auftretenden Fehlern sollten in der Regel sowohl die Protokollkonfiguration als auch die Signalintegrität auf der physikalischen Schicht überprüft werden.
4. Warum kann sich derselbe Bildsensor auf verschiedenen Boards unterschiedlich verhalten?
PCB-Impedanz, Leiterbahnlänge, FPC, Masse-Rückstrompfade und EMI-Bedingungen können die D-PHY-Signalintegrität und die Timing-Marge beeinflussen.
Referenzen
- MIPI Alliance, "Camera Serial Interface 2 (MIPI CSI-2)", mipi.org/specifications/csi-2
- MIPI Alliance, "MIPI D-PHY", mipi.org/specifications/d-phy