우리는 귀하의 프라이버시를 소중히 여깁니다
"모든 쿠키 허용"을 클릭하면 사이트 탐색을 개선하고, 사이트 사용을 분석하며, 마케팅 및 성능 노력에 도움을 주기 위해 쿠키를 귀하의 장치에 저장하는 데 동의한 것으로 간주됩니다. 이 주제에 대한 추가 정보는 당사의 정책에서 확인할 수 있습니다. 개인정보 보호정책
이 글에서는 MIPI CSI-2 카메라 인터페이스의 시스템 아키텍처, D-PHY 전송, 패킷 메커니즘, 이미지 포맷, 대역폭 산정과 Linux media-controller 환경에서의 통합 및 문제 해결 과정을 설명합니다. ARM SoC, 이미지 센서, ISP 및 V4L2 비디오 파이프라인을 사용하는 하드웨어 및 소프트웨어 통합에 적용할 수 있습니다.

MIPI CSI-2(Camera Serial Interface 2)는 이미지 센서에서 SoC, ISP 또는 FPGA로 이미지 데이터를 전송하기 위한 고속 직렬 프로토콜입니다. CSI-2는 패킷 포맷, Data Type, Virtual Channel 및 오류 보호 메커니즘을 정의하며, D-PHY 또는 C-PHY는 물리 신호 전송을 담당합니다.

| 계층 | 주요 역할 | 일반적인 Linux / SoC 구현 |
|---|---|---|
| 제어 플레인 | 모드, 노출, 게인 및 스트림 제어 | Sensor driver 및 I²C/I³C |
| CSI-2 프로토콜 계층 | 패킷화, VC, DT, ECC 및 CRC | CSI-2 TX/RX controller |
| PHY 계층 | LP/HS 상태, 클록 및 차동 신호 | D-PHY/C-PHY 및 PHY driver |
| 이미지 파이프라인 | 디코딩, 처리, DMA 및 캡처 | ISP, DMA 및 V4L2 node |
D-PHY Data Lane은 유휴 상태에서 LP Stop State를 유지하며, LP 상태 시퀀스를 거쳐 HS 모드로 전환한 후 CSI-2 패킷을 전송합니다. 센서 레지스터 액세스와 스트림 제어는 일반적으로 별도의 I²C/I³C 버스를 통해 이루어지며, D-PHY Data Lane의 LP 상태와는 구분됩니다.

| 상태 / 구간 | 역할 | 통합 시 확인 사항 |
|---|---|---|
| LP-11 Stop State | 유휴 상태 및 LP 동작의 기본 상태 | lane 상태와 TX/RX PHY 지원 여부 확인 |
| LP-01, LP-00 | HS 진입/종료 시퀀스의 일부 | 이 상태를 I²C 제어 데이터로 해석하지 않아야 함 |
| HS-Prepare, HS-Zero | 고속 전송 전 준비 및 안정화 구간 | RX 감지 및 HS-Settle 튜닝에 영향 |
| SoT | 고속 패킷 전송의 시작을 표시 | SoT 오류는 타이밍, lane 또는 설정 문제를 나타낼 수 있음 |
| HS data transmission | CSI-2 packet byte stream 전송 | link frequency, lane 수 및 신호 무결성 확인 |
CSI-2는 Short Packet을 사용하여 프로토콜 이벤트 또는 동기화 정보를 전달하고, Long Packet을 사용하여 RAW, YUV, RGB 또는 embedded data를 전송합니다. Long Packet은 4-byte header, payload 및 2-byte CRC footer로 구성됩니다.

| 필드 | 기능 | 확인 항목 |
|---|---|---|
| Virtual Channel (VC) | 논리 데이터 스트림 구분 | 센서와 RX Virtual Channel 간 호환성 확인 |
| Data Type (DT) | 픽셀 포맷 또는 패킷 유형 표시 | 센서 output mode 및 RX 지원 기능과 일치하는지 확인 |
| Word Count (WC) | Long Packet payload의 바이트 수 표시 | line width 및 pixel packing과 일치하는지 확인 |
| ECC | packet header 보호 | 동기화, lane, 설정 및 RX 디코딩 확인 |
| CRC | Long Packet payload 보호 | PHY, data rate, lane mapping 및 TX/RX 구현 확인 |
Frame Start(FS)와 Frame End(FE)는 frame-level synchronization을 제공합니다. Line Start(LS)와 Line End(LE)는 선택적인 line-level synchronization을 제공합니다. LS와 LE가 실제로 출력되는지는 이미지 센서 문서, CSI receiver trace 또는 driver 카운터를 기준으로 확인해야 합니다.
CSI-2 Data Type, V4L2 media-bus code, V4L2 capture memory format 및 ISP format negotiation은 이미지 데이터의 의미가 서로 호환되어야 합니다. 다만 서로 다른 추상화 계층에 속하므로 설정 이름과 위치가 반드시 일대일로 대응할 필요는 없습니다. RAW 데이터의 경우 bit depth와 Bayer order를 확인해야 하며, YUV 데이터의 경우 byte order를 확인해야 합니다.
Active-pixel payload의 최솟값은 다음과 같이 산정할 수 있습니다.
위 계산값은 유효 픽셀 데이터에 필요한 최소 payload만을 나타냅니다. 실제 CSI-2 throughput과 D-PHY lane rate를 산정할 때는 packet header, CRC, 동기화 패킷, blanking 전송 방식, Data Lane 수, clock mode, 센서에서 사용 가능한 link-frequency 설정 및 SoC CSI receiver의 제한 사항도 고려해야 합니다.
Device Tree는 일반적으로 graph endpoint, data-lanes, clock-lanes 및 remote-endpoint 연결을 기술합니다. 대부분의 media-controller 아키텍처에서는 sub-device pad format, media link 및 routing negotiation을 통해 런타임에 이미지 포맷을 협상합니다. 실제 binding과 지원되는 포맷은 대상 SoC의 kernel driver에 따라 달라집니다.
# entity, pad 및 link 확인
media-ctl -p -d /dev/media0
# 예: 상위 센서의 pad format 설정
media-ctl -d /dev/media0 --set-v4l2 '"sensor 1-001a":0 [fmt:SRGGB10_1X10/1920x1080]'
# 예: link 활성화
media-ctl -d /dev/media0 --links '"sensor 1-001a":0 -> "csi2rx":0 [1]'
# capture node의 memory format을 설정하고 스트리밍 시작
v4l2-ctl -d /dev/videoX \
--set-fmt-video=width=1920,height=1080,pixelformat=RG10 \
--stream-mmap=4 --stream-count=100
dmesg -w
이 예제에 사용된 entity 이름, pad index, media-bus code, FourCC 값 및 video node는 실제 media graph에 맞게 조정해야 하며, 모든 플랫폼에서 동일하게 사용되는 것은 아닙니다.

| 영역 | 확인 항목 | 일반적인 증상 |
|---|---|---|
| PHY | lane 수, mapping, link frequency, clock mode 및 HS-Settle | SoT 오류, 데이터 수신 불가 또는 간헐적인 프레임 드롭 |
| 프로토콜 | VC, DT, 패킷 동작 및 ECC/CRC | Header 오류, CRC 오류 또는 프레임 동기화 문제 |
| 포맷 | Bit depth, Bayer order, YUV order 및 packing | 색상 오류, 그린 프레임 또는 이미지 깨짐 |
| Pipeline | DT graph, media link, pad format, ISP 및 DMA | STREAMON 실패 또는 buffer timeout |
아닙니다. CSI-2는 이미지 패킷 프로토콜이며, D-PHY는 일반적으로 사용되는 물리 계층 전송 인터페이스입니다.
I²C 통신이 정상이라는 것은 제어 채널이 동작한다는 것만 의미합니다. 이미지 데이터 경로에는 MCLK, lane, PHY 타이밍, 프로토콜, media graph, ISP 또는 DMA와 관련된 문제가 남아 있을 수 있습니다.
ECC는 주로 Packet Header를 보호하며 1 bit 오류를 수정하고 2 bit 오류를 감지할 수 있습니다. CRC는 Long Packet payload의 무결성을 검증합니다. 오류가 지속적으로 발생하는 경우 프로토콜 설정과 물리 계층의 신호 무결성을 모두 확인해야 합니다.
PCB 임피던스, 배선 길이, FPC, 그라운드 리턴 경로 및 EMI 조건은 모두 D-PHY의 신호 무결성과 타이밍 마진에 영향을 줄 수 있습니다.
"모든 쿠키 허용"을 클릭하면 사이트 탐색을 개선하고, 사이트 사용을 분석하며, 마케팅 및 성능 노력에 도움을 주기 위해 쿠키를 귀하의 장치에 저장하는 데 동의한 것으로 간주됩니다. 이 주제에 대한 추가 정보는 당사의 정책에서 확인할 수 있습니다. 개인정보 보호정책