RK3588-Kamera: Pfadanalyse von MIPI-CSI und ISP-Debugging

In diesem Artikel wird die Pfadanalyse des Camera:MI PI - CSI- Debuggings auf der RK3588-Plattform vorgestellt

Die MIPI Alliance ist die Mobile Industry Processor Interface (MIPI) Alliance. MIPI (Mobile Industry Processor Interface) ist ein offener Standard und eine von der MIPI Alliance initiierte Spezifikation für mobile Anwendungsprozessoren.

Der Zweck besteht darin, die internen Schnittstellen des Mobiltelefons wie Kamera, Anzeigeschnittstelle, Funkfrequenz- /Basisbandschnittstelle usw. zu standardisieren und so die Komplexität des Mobiltelefondesigns zu verringern und die Designflexibilität zu erhöhen.

CSI und  DSI

• CSI (Camera Serial Interface): Kameraschnittstelle

• DSI (Display Serial Interface): Anzeigeschnittstelle

2. Begriffserklärung:

ISP (Image Signal Processor): Das Bildsignalverarbeitungsmodul . Die Hauptfunktion besteht darin, das vom Front-End- Bildsensor ausgegebene Signal nachzuverarbeiten und sich dabei auf ISP zu verlassen, um die Details der Szene unter verschiedenen optischen Bedingungen besser wiederherzustellen. VICAP ( Videoaufnahme): Videoaufnahmeeinheit

3. Der Kamerakanal von RK3588:

Multisensor-Unterstützung:

Ein Einkanal- Hardware- ISP unterstützt bis zu 4-Kanal-Multiplexing, und die unterstützten Auflösungen des ISP-Multiplexings sind wie folgt: 2-Kanal-Multiplexing: Die maximale Auflösung beträgt 3840 x 2160, und dts ist entsprechend mit 2-Kanal-rkisp_vir-Geräten konfiguriert. 3-Kanal- oder 4-Kanal-Multiplexing: Die maximale Auflösung beträgt 2560 x 1536, und dts wird entsprechend mit 3- oder 4-Kanal-rkisp_vir-Geräten konfiguriert. Die Hardware unterstützt bis zu 7 Sensoren: 6mipi + 1dvp, und die Multisensor-Softwarepfade sind wie folgt:

Die folgende Abbildung ist ein schematisches Diagramm der Kameraverbindungsverbindung RK3588, die 7 Kameras unterstützen kann.

4. Linkanalyse:

In der Abbildung: mipi camera2---> csi2_dphy1 ---> mipi2_csi2 ---> rkcif_mipi_lvds2--->rkcif_mipi_lvds2_ sdi tf --->rkisp0_vir2

Entsprechender Knoten: imx415 ---> csi2_dphy0 ---> mipi2_csi2 ---> rkcif_mipi_lvds2--->rkcif_mipi_lvds2_sditf --->rkisp0_vir2

Linkbeziehung: Sensor ---> CSI2 Dphy ---->Mipi CSI Host --->Vicap

Durchgezogene Verbindungsanalyse: Kamerasensor ---> dphy ---> Analyse des Mipi-Protokolls über das Modul mipi_csi2 ---> vicap (rkcif-Knoten repräsentiert vicap)

Gepunktete Linkanalyse: vicap ---> rkcif_mipi_lvds2_sditf ---> isp

Die Verbindungsbeziehung zwischen jedem Vicap-Knoten und dem ISP wird durch das entsprechende virtuelle XXX_sditf angezeigt.

Fünftens: Blockdiagramm des RK3588-Hardwarekanals

Der rk3588 unterstützt 2 ISP-Hardware, und jedes ISP-Gerät kann mehrere virtuelle Knoten virtualisieren, und die Software liest die Bilddaten jedes Kanals nacheinander über die Rücklesemethode vom DDR und verarbeitet sie im ISP. Für die Multi-Cam-Lösung empfiehlt es sich, die Datenströme gleichmäßig auf die beiden ISPs zu verteilen. Rücklesen: Bezieht sich auf die vom Vicap gesammelten Daten an den DDR. Nachdem die Anwendung die Daten erhalten hat, überträgt sie die Pufferadresse an den ISP, und der ISP ruft dann die Bilddaten vom DDR ab.

Sechs, detaillierte Analyse:

imx415: Kamerasensorcsi2_dphy0: rk3588 unterstützt 2 Dphy-Hardware, hier nennen wir es dphy0_hw/dphy1_hw, beide Dphy-Hardware kann im Vollmodus und Split-Modus arbeiten.

Bei Verwendung von dphy0_hw:

Vollmodus: Der Knotenname verwendet csi2_dphy0 und unterstützt bis zu 4 Spuren. Wenn dphy0_hw den Vollmodus verwendet, muss die Verbindung gemäß der Verbindung csi2_dphy1 konfiguriert werden, der Knotenname csi2_dphy1 muss jedoch in csi2_dphy0 geändert werden, und die Software verwendet die Seriennummer des Phy, um den vom Phy verwendeten Modus zu unterscheiden. Split-Modus: Aufteilung in 2 Physs, nämlich csi2_dphy1 (mit 0/1 Lane), csi2_dphy2 (mit 2/3 Lanes), jeder Phys unterstützt bis zu 2 Lanes.

Bei Verwendung von dphy1_hw:

Vollmodus: Der Knotenname verwendet csi2_dphy3 und unterstützt bis zu 4 Lanes. Wenn dphy1_hw den Vollmodus verwendet, muss die Verbindung gemäß der Verbindung csi2_dphy4 konfiguriert werden, der Knotenname csi2_dphy4 muss jedoch in csi2_dphy3 geändert werden, und die Software verwendet die Seriennummer des Phy, um den vom Phy verwendeten Modus zu unterscheiden. Split-Modus: Aufteilung in 2 Physs zur Verwendung, nämlich csi2_dphy4 (mit 0/1 Lane), csi2_dphy5 (mit 2/3 Lanes), jeder Phys unterstützt bis zu 2 Lanes.

dc phy: rk3588 unterstützt zwei dcphy, Knotennamen sind csi2_dcphy0/csi2_dcphy1. Jede dcphy-Hardware unterstützt die gleichzeitige Verwendung von RX/TX, und RX wird für die Kameraeingabe verwendet. Unterstützt DPHY/CPHY-Protokoll-Multiplexing; es ist zu beachten, dass der TX/RX desselben DCHY nur DPHY oder CPHY gleichzeitig verwenden kann. Weitere dcphy-Parameter finden Sie im rk3588-Datenblatt.

Um die oben genannten Mipi-Phy-Knoten verwenden zu können, müssen Sie die entsprechenden physischen Knoten konfigurieren. (csi2_dcphy0_hw/csi2_dcphy1_hw/csi2_dphy0_hw/csi2_dphy1_hw)

Jeder Mipi-Phy benötigt ein CSI2-Modul, um das Mipi-Protokoll zu analysieren, und die Knotennamen sind mipi0_csi2 ~ mipi5_csi2.

Alle Kameradaten von rk3588 müssen über vicap geleitet und dann mit dem ISP verknüpft werden. Der rk3588 unterstützt nur eine Vicap-Hardware. Dieser Vicap unterstützt die gleichzeitige Eingabe von 6 Kanälen von Mipi Phy und einem Kanal von DVP-Daten, daher teilen wir den Vicap in rkcif_mipi_lvds~rkcif_mipi_lvds5, rkcif_dvp und weitere 7 Knoten auf. Die Bindungsbeziehung jedes Knotens muss sein Halten Sie sich strikt an die Knoten im Blockdiagramm. Seriennummernkonfiguration.

Die Verbindungsbeziehung zwischen jedem Vicap-Knoten und dem ISP wird durch das entsprechende virtuelle XXX_sditf angezeigt.

Der rk3588 unterstützt 2 ISP-Hardware, und jedes ISP-Gerät kann mehrere virtuelle Knoten virtualisieren, und die Software liest die Bilddaten jedes Kanals nacheinander über die Rücklesemethode vom DDR und verarbeitet sie im ISP. Für die Multi-Cam-Lösung empfiehlt es sich, die Datenströme gleichmäßig auf die beiden ISPs zu verteilen.

Straight-Through- und Read-Back-Modus: • Straight-Through: bezieht sich auf Daten, die von Vicap gesammelt und direkt an ISP zur Verarbeitung gesendet werden, ohne sie im DDR zu speichern. Es ist zu beachten, dass beim HDR-Passthrough nur kurze Frames echtes Passthrough sind, lange Frames im DDR vorhanden sein müssen und der ISP vom DDR liest.

• Rücklesen: bezieht sich auf die von vicap an ddr gesammelten Daten. Nachdem die Anwendung die Daten erhalten hat, überträgt sie die Pufferadresse an den ISP, und der ISP erhält die Bilddaten von ddr.

•Wenn während der DTS-Konfiguration eine ISP-Hardware nur mit einem virtuellen Knoten konfiguriert ist, verwendet sie standardmäßig den Pass-Through-Modus. Wenn mehrere virtuelle Knoten konfiguriert sind, verwendet sie standardmäßig den Readback-Modus.

7. Die DTS-Konfigurationsbeschreibung einer einzelnen Kamera: (Nehmen Sie die Kamera imx415 als Beispiel)

Fallbeispiel: Hier ist die Einzelkamerakonfiguration von csi2_dphy0: Linkkonfiguration: imx415 –> csi2_dphy0 –> mipi2_csi2 –> rkcif_mipi_lvds2 –> rkcif_mipi_lvds2_sditf –> rkisp0_vir2

&i2c3 {status = "okay";imx415: imx415@1a {status = "okay";compatible = "sony,imx415";reg = < 0x1a >;clocks = < &cru CLK_MIPI_CAMARAOUT_M3 >;clock-names = "xvclk";pinctrl-names = "default";pinctrl-0 = < &mipim0_camera3_clk >;power-domains = < &power RK3588_PD_VI >;pwdn-gpios = < &gpio1 RK_PB0 GPIO_ACTIVE_HIGH >;reset-gpios = < &gpio4 RK_PA0 GPIO_ACTIVE_LOW >;rockchip,camera-module-index = < 0 >;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "CMK-OT2022-PX1";rockchip,camera-module-lens-name = "IR0147-50IRC-8M-F20";port {imx415_out0: endpoint {remote-endpoint = < &mipidphy0_in_ucam0 >;data-lanes = < 1 2 3 4 >;};};};camera_imx219: camera-imx219@10 {status = "disabled";compatible = "sony,imx219";reg = < 0x10 >;clocks = < &clk_cam_24m >;clock-names = "xvclk";rockchip,camera-module-index = < 0 >;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "rpi-camera-v2";rockchip,camera-module-lens-name = "default";port {imx219_out0: endpoint {remote-endpoint = < &mipidphy0_in_ucam1 >;data-lanes = < 1 2 >;};};};};&csi2_dphy0_hw {status = "okay";};&csi2_dphy0 {status = "okay";ports {#address-cells = < 1 >;#size-cells = < 0 >;port@0 {reg = < 0 >;#address-cells = < 1 >;#size-cells = < 0 >;mipidphy0_in_ucam0: endpoint@1 {reg = < 1 >;remote-endpoint = < &imx415_out0 >;data-lanes = < 1 2 3 4 >;};mipidphy0_in_ucam1: endpoint@2 {reg = < 2 >;remote-endpoint = < &imx219_out0 >;data-lanes = < 1 2 >;};};port@1 {reg = < 1 >;#address-cells = < 1 >;#size-cells = < 0 >;csidphy0_out: endpoint@0 {reg = < 0 >;remote-endpoint = < &mipi2_csi2_input >;};};};};&mipi2_csi2 {status = "okay";ports {#address-cells = < 1 >;#size-cells = < 0 >;port@0 {reg = < 0 >;#address-cells = < 1 >;#size-cells = < 0 >;mipi2_csi2_input: endpoint@1 {reg = < 1 >;remote-endpoint = < &csidphy0_out >;};};port@1 {reg = < 1 >;#address-cells = < 1 >;#size-cells = < 0 >;mipi2_csi2_output: endpoint@0 {reg = < 0 >;remote-endpoint = < &cif_mipi2_in0 >;};};};};&rkcif {status = "okay";};&rkcif_mipi_lvds2 {status = "okay";port {cif_mipi2_in0: endpoint {remote-endpoint = < &mipi2_csi2_output >;};};};&rkcif_mipi_lvds2_sditf {status = "okay";port {mipi_lvds2_sditf: endpoint {remote-endpoint = < &isp0_vir0 >;};};};&rkcif_mmu {status = "okay";};&rkisp0 {status = "okay";};&isp0_mmu {status = "okay";};&rkisp0_vir0 {status = "okay";port {#address-cells = < 1 >;#size-cells = < 0 >;isp0_vir0: endpoint@0 {reg = < 0 >;remote-endpoint = < &mipi_lvds2_sditf >;};};};&pinctrl {camera {cam_pwdn_gpio: cam-pwdn-gpio {rockchip,pins = < 1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up >;};};};

Acht, Debugging-Fähigkeiten

8.1 Allgemeine Debugging-Befehle für i2c-Geräte: Überprüfen Sie, ob das Gerät unter dem i2c-Bus gemountet ist:

i2cdetect -y 3

8.2 Kamerabefehl

Befehle für Linux- Systemkameras:

gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3840,height=2160, framerate=30/1 ! xvimagesink

Android -System:

Das Android-System verfügt über eine Kamera-APP. Klicken Sie auf die APP, um zu sehen, ob der Kamerabildschirm normal angezeigt wird.

8.3 imx415-bezogene Protokollinformationen

dmesg | grep imx415

8.4 Topologie anzeigen

media-ctl -d /dev/media0 -p

Acho que você gosta

Origin blog.csdn.net/YEYUANGEN/article/details/131767085
Recomendado
Clasificación