Guide de développement pour caméras sur plateforme Rockchip RK3588

Introduction

Ce document technique présente la configuration des caméras sur les plateformes Rockchip utilisant le RK3588. Environnement de référence :

  • Carte : ArmSoM-W3
  • Noyau Linux : 5.10.160
  • Système : Debian 11

Concepts clés :

  • CSI : Interface série hôte-caméra
  • DSI : Interface série hôte-écran
  • ISP : Processeur de traitement du signal image
  • VICAP : Unité de capture vidéo
  • MIPI-DPHY : Contrôleur physique MIPI

Fondements du MIPI-CSI

MIPI-CSI2 est un protocole dédié aux interfaces caméra, caractérisé par :

  • Haute vitesse et faible consommation
  • Support des standards D-PHY et C-PHY
  • D-PHY v1.2 et v2.0 supportés sur RK3588

Architecture matérielle

Le RK3588 intègre :

  • 2 contrôleurs DCPHY
  • 2 contrôleurs DPHY
  • 1 interface DVP
  • 6 hôtes CSI
  • 1 contrôleur VICAP
  • 2 processeurs ISP

Capacités maxmiales :

  • 4 voies : 10 Gbps (bende passante)
  • 2 voies : 5 Gbps

Implémentation MIPI-CSI

Modes DPHY

  • Mode complet : 4 voies maximum via csi2_dphy0
  • Mode fractionné : 2x2 voies via csi2_dphy1 et csi2_dphy2

Support multi-capteurs

Jusqu'à 7 sources simultanées : 6 flux MIPI + 1 DVP

Configuraton logicielle

Structure des pilotes

drivers/
├── phy/rockchip/         # Pilotes PHY
│   ├── phy-mipi-rx.c
│   └── phy-csi2-dphy.c
├── media/
│   ├── platform/cif      # Pilote CIF
│   ├── platform/isp      # Pilote ISP
│   └── i2c/              # Pilotes capteurs

Portage de capteur

Étapes clés :

  1. Séquence d'alimentation
  2. Configuration des registres
  3. Implémentation V4L2
  4. Initialisation Media Controller
static int __sensor_power_on(struct device *dev)
{
    // Logique d'alimentation
}

static int sensor_check_id(struct i2c_client *client)
{
    // Vérification CID
}

Configuration DTS

Exemple pour capteur IMX415 :

&i2c3 {
    imx415: camera@1a {
        compatible = "sony,imx415";
        reg = <0x1a>;
        clocks = <&cru CLK_CAM_MCLK>;
        pwdn-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
        port {
            endpoint {
                remote-endpoint = <&mipi_input>;
                data-lanes = <1 2 3 4>;
            };
        };
    };
};

&csi_phy0 {
    ports {
        port@0 {
            mipi_input: endpoint {
                remote-endpoint = <&imx415_endpoint>;
            };
        };
    };
};

Configuration multi-caméras

Exemple pour 4 capteurs en mode fractionné :

&csi_phy1 {
    status = "okay";
    ports {
        port@0 {
            cam2_input: endpoint {
                remote-endpoint = <&sensor2_out>;
                data-lanes = <1 2>;
            };
        };
    };
};

&i2c5 {
    sensor2: cam_sensor@1a {
        port {
            sensor2_out: endpoint {
                remote-endpoint = <&cam2_input>;
            };
        };
    };
};

Étiquettes: RK3588 MIPI-CSI DPHY VICAP LinuxDeviceTree

Publié le 4 juillet à 22h58