← Documents Documentation/admin-guide/media/c3-isp.dot GitHub 원문 ↗

Linux 6.18.37 · Admin guide

C3 ISP 미디어 파이프라인 그래프

IMX290 센서에서 C3 MIPI·ISP 코어를 거쳐 세 캡처 출력, 통계 출력과 매개변수 입력으로 이어지는 V4L2 미디어 토폴로지를 설명합니다.

Source pathDocumentation/admin-guide/media/c3-isp.dot
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

c3-isp.dot:1-26

IMX290 센서에서 C3 MIPI·ISP 코어를 거쳐 세 캡처 출력, 통계 출력과 매개변수 입력으로 이어지는 V4L2 미디어 토폴로지를 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 digraph board {
2 rankdir=TB
3 n00000001 [label="{{<port0> 0 | <port1> 1} | c3-isp-core\n/dev/v4l-subdev0 | {<port2> 2 | <port3> 3 | <port4> 4 | <port5> 5}}", shape=Mrecord, style=filled, fillcolor=green]
4 n00000001:port3 -> n00000008:port0
5 n00000001:port4 -> n0000000b:port0
6 n00000001:port5 -> n0000000e:port0
7 n00000001:port2 -> n00000027
8 n00000008 [label="{{<port0> 0} | c3-isp-resizer0\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
9 n00000008:port1 -> n00000016 [style=bold]
10 n0000000b [label="{{<port0> 0} | c3-isp-resizer1\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
11 n0000000b:port1 -> n0000001a [style=bold]
12 n0000000e [label="{{<port0> 0} | c3-isp-resizer2\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
13 n0000000e:port1 -> n00000023 [style=bold]
14 n00000011 [label="{{<port0> 0} | c3-mipi-adapter\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
15 n00000011:port1 -> n00000001:port0 [style=bold]
16 n00000016 [label="c3-isp-cap0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
17 n0000001a [label="c3-isp-cap1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
18 n0000001e [label="{{<port0> 0} | c3-mipi-csi2\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
19 n0000001e:port1 -> n00000011:port0 [style=bold]
20 n00000023 [label="c3-isp-cap2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
21 n00000027 [label="c3-isp-stats\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
22 n0000002b [label="c3-isp-params\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
23 n0000002b -> n00000001:port1
24 n0000003f [label="{{} | imx290 2-001a\n/dev/v4l-subdev6 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
25 n0000003f:port0 -> n0000001e:port0 [style=bold]
26 }
27

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

센서 입력, ISP 처리와 캡처 출력

1-26

이 DOT 그래프는 C3 ISP의 V4L2 미디어 토폴로지를 위에서 아래로(`rankdir=TB`) 배치합니다. 녹색 `Mrecord` 노드는 포트를 가진 서브디바이스이고, 노란색 상자는 사용자 공간에서 접근하는 비디오 장치입니다. 포트 번호는 각 링크의 정확한 소스·싱크 패드를 나타내며 굵은 간선은 활성화된 미디어 링크를 표시합니다.

센서 `imx290 2-001a`의 포트 0은 `c3-mipi-csi2` 포트 0에 연결되고, CSI-2 포트 1은 `c3-mipi-adapter` 포트 0으로 이어집니다. 어댑터 포트 1은 `c3-isp-core` 입력 포트 0에 연결되어 센서 영상이 ISP 코어에 도달합니다. 이 세 링크는 모두 `style=bold`입니다.

`c3-isp-params`(`/dev/video4`)는 ISP 코어 포트 1로 처리 매개변수를 공급합니다. 코어 포트 2는 `c3-isp-stats`(`/dev/video3`)로 통계 데이터를 내보냅니다. 영상 출력은 코어 포트 3·4·5에서 각각 `c3-isp-resizer0`·`1`·`2`의 포트 0으로 분기됩니다.

세 리사이저의 포트 1은 각각 `c3-isp-cap0`(`/dev/video0`), `c3-isp-cap1`(`/dev/video1`), `c3-isp-cap2`(`/dev/video2`)로 굵게 연결됩니다. 따라서 하나의 센서 입력을 ISP 코어가 처리한 뒤 세 개의 독립 크기 조정·캡처 경로로 내보내고, 별도의 통계 출력과 매개변수 입력을 함께 제공하는 구조입니다.

C3 ISP 주 영상 경로
imx290 2-001a : port0c3-mipi-csi2 : port0→port1c3-mipi-adapter : port0→port1c3-isp-core : port0
c3-isp-core : port3c3-isp-resizer0 : port0→port1c3-isp-cap0 /dev/video0
c3-isp-core : port4c3-isp-resizer1 : port0→port1c3-isp-cap1 /dev/video1
c3-isp-core : port5c3-isp-resizer2 : port0→port1c3-isp-cap2 /dev/video2

센서에서 CSI-2와 어댑터를 거쳐 ISP 코어에 도달한 뒤 세 캡처 장치로 분기됩니다.

미디어 엔터티 12개
엔터티장치 경로유형·역할
imx290 2-001a/dev/v4l-subdev6이미지 센서, 출력 포트 0
c3-mipi-csi2/dev/v4l-subdev5CSI-2 수신기, 포트 0→1
c3-mipi-adapter/dev/v4l-subdev4MIPI 어댑터, 포트 0→1
c3-isp-core/dev/v4l-subdev0ISP 코어, 입력 0·1과 출력 2·3·4·5
c3-isp-resizer0/dev/v4l-subdev1첫 번째 크기 조정 경로
c3-isp-resizer1/dev/v4l-subdev2두 번째 크기 조정 경로
c3-isp-resizer2/dev/v4l-subdev3세 번째 크기 조정 경로
c3-isp-cap0/dev/video0첫 번째 영상 캡처 출력
c3-isp-cap1/dev/video1두 번째 영상 캡처 출력
c3-isp-cap2/dev/video2세 번째 영상 캡처 출력
c3-isp-stats/dev/video3ISP 통계 캡처 출력
c3-isp-params/dev/video4ISP 처리 매개변수 입력

DOT에 선언된 모든 서브디바이스와 비디오 노드를 정리합니다.

미디어 링크 11개
출발도착표시
imx290:port0c3-mipi-csi2:port0bold
c3-mipi-csi2:port1c3-mipi-adapter:port0bold
c3-mipi-adapter:port1c3-isp-core:port0bold
c3-isp-paramsc3-isp-core:port1기본
c3-isp-core:port2c3-isp-stats기본
c3-isp-core:port3c3-isp-resizer0:port0기본
c3-isp-core:port4c3-isp-resizer1:port0기본
c3-isp-core:port5c3-isp-resizer2:port0기본
c3-isp-resizer0:port1c3-isp-cap0bold
c3-isp-resizer1:port1c3-isp-cap1bold
c3-isp-resizer2:port1c3-isp-cap2bold

포트 좌표와 굵은 링크 여부를 원문 그대로 대응합니다.

digraph board {
        rankdir=TB
        n00000001 [label="{{<port0> 0 | <port1> 1} | c3-isp-core\n/dev/v4l-subdev0 | {<port2> 2 | <port3> 3 | <port4> 4 | <port5> 5}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000001:port3 -> n00000008:port0
        n00000001:port4 -> n0000000b:port0
        n00000001:port5 -> n0000000e:port0
        n00000001:port2 -> n00000027
        n00000008 [label="{{<port0> 0} | c3-isp-resizer0\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000008:port1 -> n00000016 [style=bold]
        n0000000b [label="{{<port0> 0} | c3-isp-resizer1\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000000b:port1 -> n0000001a [style=bold]
        n0000000e [label="{{<port0> 0} | c3-isp-resizer2\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000000e:port1 -> n00000023 [style=bold]
        n00000011 [label="{{<port0> 0} | c3-mipi-adapter\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n00000011:port1 -> n00000001:port0 [style=bold]
        n00000016 [label="c3-isp-cap0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
        n0000001a [label="c3-isp-cap1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
        n0000001e [label="{{<port0> 0} | c3-mipi-csi2\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000001e:port1 -> n00000011:port0 [style=bold]
        n00000023 [label="c3-isp-cap2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
        n00000027 [label="c3-isp-stats\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
        n0000002b [label="c3-isp-params\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
        n0000002b -> n00000001:port1
        n0000003f [label="{{} | imx290 2-001a\n/dev/v4l-subdev6 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
        n0000003f:port0 -> n0000001e:port0 [style=bold]
}