Как правило, камера и SOC имеют два интерфейса для подключения, которые разделены на интерфейс MIPI и интерфейс I2C. Интерфейс MIPI используется для передачи данных изображения, а путь передачи данных — от датчика к SOC. Другой интерфейс — это интерфейс I2C, который в основном используется SOC для настройки регистра конфигурации инициализации датчика и параметров камеры. Например, при захвате данных изображения вам необходимо настроить регистр датчика через i2c.
После того, как свет проходит через датчик, чип датчика генерирует исходные данные изображения (необработанные) посредством преобразования АЦП, а затем исходные данные изображения (необработанные), сгенерированные датчиком, поступают в SOC через шину MIPI. После входа в SOC они проходят. через чип обработки изображений (например, ISP) для обработки изображений. Итак, видно, что драйвер камеры V4L2 должен состоять из этих трех частей:
(Свет) -------> [sensor] ----->(rawизображениеданные) ----->[mipiавтобус] ----->[обработка изображенийчип(нравитьсяISP)] -----> (NV16/NV12 и данные изображения других форматов)
Выходной формат датчика необработанного формата — это исходная запись уровня, когда датчик преобразует оптический сигнал в электрический сигнал. Необработанные данные не обрабатываются:
Мы уже знаем, что у камеры есть три части драйверов, которые описывают сенсор, MIPI и чип обработки изображений, поэтому эти три части также описаны в dts.
&i2c1 {
tp2855_1: tp2855_1@44 {
compatible = "techpoint,tp2855";
reg = <0x44>; //i2c-адрес
...
port {
ucam_out0: endpoint {
remote-endpoint = <&csi_dphy0_input>; //Сенсорсоединять к mipi
data-lanes = <1 2 3 4>;
};
};
};
tp2855_2: tp2855_2@45 {
compatible = "techpoint,tp2855";
reg = <0x45>; //i2c-адрес
...
port {
ucam_out1: endpoint {
remote-endpoint = <&csi_dphy1_input>; //Сенсорсоединять к mipi csi_dphy1_input
data-lanes = <1 2 3 4>;
};
};
};
};
Для платформ RV1126 и RV1106 поддерживаются два оборудования DPHY. Существует два независимых и полных стандартных физических файла mipi csi2, соответствующих csi_dphy0 и csi_dphy1 в dts (см. rv1126.dtsi). Характеристики следующие:
data полоса максимум 4 lanes;
Максимальная скорость 2,5 Гбит/с/линия;
sensor----mipi dphy:
//соединять 0x44 первые четыре канала Камера
&csi_dphy0 {
status = "okay";
//mipi имеет два конца один сегмент соединятьSensor,Другойодинконецсоединять mipi_csi2_input
ports {
#address-cells = <1>;
#size-cells = <0>;
//соединятьприезжатьSensor
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
csi_dphy0_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&ucam_out0>; // соединятьприезжатьSensor : ucam_out0
data-lanes = <1 2 3 4>;
};
};
//соединятьприезжать mipi_csi2_input
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
csi_dphy0_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi_csi2_input>; // соединятьприезжать mipi_csi2_input
data-lanes = <1 2 3 4>;
};
};
};
};
//соединять 0x45 тыловые четыре канала Камера
&csi_dphy1 {
status = "okay";
//соединятьприезжатьSensor
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
csi_dphy1_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&ucam_out1>;// соединятьприезжатьSensor : ucam_out1
data-lanes = <1 2 3 4>;
};
};
//соединятьприезжатьISP
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
csi_dphy1_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&isp_in>; // соединятьприезжатьISP : isp_in
data-lanes = <1 2 3 4>;
};
};
};
};
Каждому mipi phy требуется модуль csi2 для анализа датчика протокола mipi ---- mipi dphy ---- mipi_csi2
&mipi_csi2 {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi_csi2_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&csi_dphy0_output>;
data-lanes = <1 2 3 4>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
mipi_csi2_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&cif_mipi_in>;
data-lanes = <1 2 3 4>;
};
};
};
};
sensor----mipi dphy ---- mipi_csi2-----vicap
rkcif_mipi_lvds: rkcif_mipi_lvds {
compatible = "rockchip,rkcif-mipi-lvds";
rockchip,hw = <&rkcif>;
// iommus = <&rkcif_mmu>;
memory-region = <&isp_reserved>;
status = "disabled";
};
&rkcif_mipi_lvds {
status = "okay";
rockchip,cif-monitor = <3 2 25 1000 5>;
port {
/* MIPI CSI-2 endpoint */
cif_mipi_in: endpoint {
remote-endpoint = <&mipi_csi2_output>;
data-lanes = <1 2 3 4>;
};
};
};
Чип обработки изображений (ISP), связанный:
&rkisp_vir0 {
status = "okay";
ports {
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
isp_in: endpoint@0 {
reg = <0>;
remote-endpoint = <&csi_dphy1_output>;//соединятьприезжать mipi : csi_dphy1_output
};
};
};
};
0x44 Обработка изображения взаимосвязи соединений первых четырех каналов через vicap:
ucam_out0 - csi_dphy0_input - csi_dphy0_output - mipi_csi2_input <-> mipi_csi2_output
tp2855_1@44 csi_dphy0 mipi_csi2 rkcif_mipi_lvds
ucam_out0 ---> csi_dphy0_input -- csi_dphy0_output --> mipi_csi2_input -- mipi_csi2_output <---> cif_mipi_in
Разделение драйверов на первые четыре канала:
1 о Анализ сенсорного модуля: Sensor.c
kernel\drivers\media\i2c\techpoint\techpoint_v4l2.c
2 о mipi физический уровень (csi dphy) модуль (csi_dphy0 / csi_dphy1) анализ : mipi_csi_dphy.c
kernel\drivers\phy\rockchip\phy-rockchip-mipi-rx.c
3 о модуль парсинга mipi( mipi csi)(MIPI Анализ модуля хоста: mipi_csi.c
kernel\drivers\media\platform\rockchip\cif\mipi-csi2.c
4 о обработка изображенийvicap Анализ модуля: rkcif_mipi.c
kernel\drivers\media\platform\rockchip\cif\dev.c
0x45 Связь последних четырех каналов и маршрута обработки изображения isp:
ucam_out1 - csi_dphy1_input - csi_dphy1_output <-> isp_in
tp2855_2@45 csi_dphy1 rkisp_vir0
ucam_out1 --> csi_dphy1_input -- csi_dphy1_output <---> isp_in
Из приведенного выше анализа мы можем узнать, что в структуре камеры есть три части, которые необходимо реализовать на разных платах или разных платформах.
Из конфигурации dts мы видим, что путь привязки драйвера — от датчика к MIPI, а затем от MIPI к интернет-провайдеру. Таким образом, данные, полученные датчиком, передаются интернет-провайдеру через MIPI, а затем обрабатываются интернет-провайдером. и затем передается на прикладной уровень обработки, вероятно, этим процессом является вся структура драйвера камеры.
Ссылка на статью: http://t.csdnimg.cn/3xcLG.