> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 摄像头

IQ8-EVK 通过三个 MIPI CSI 接口支持摄像头传感器连接，同时支持 C-PHY 和 D-PHY 模式。

## 硬件架构

### CSI 接口映射

| CSI 接口 | 模拟开关              | 摄像头连接器 | B2B 连接器             |
| ------ | ----------------- | ------ | ------------------- |
| CSI0   | U45 (TMUX646ZECR) | JCAM0  | JEXP4, Pins 111–120 |
| CSI1   | U42 (TMUX646ZECR) | JCAM1  | JEXP4, Pins 51–60   |
| CSI2   | U44 (TMUX646ZECR) | JCAM2  | JEXP4, Pins 40–49   |

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/iq8275_camera_interface.png" />

### DIP 开关配置

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/Camera_dipswitch.png" />

| 开关    | ON             | OFF（默认）   |
| ----- | -------------- | --------- |
| SW1-5 | CSI0 → GMSL 夹层 | CSI0 → 主板 |
| SW1-6 | CSI1 → GMSL 夹层 | CSI1 → 主板 |
| SW1-7 | CSI2 → GMSL 夹层 | CSI2 → 主板 |

## 支持的 MIPI CSI 摄像头传感器

### ov9282 摄像头传感器

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/ov9282_camera_sensor.png" />

### Arducam imx577 摄像头传感器

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/Rasberrypi_imx577_camera_sensor.png" />

**Arducam 传感器需要额外的转换板（Arducam 22 针至 Qualcomm 30 针 CSI 适配器）**

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/BoardSide_Flexi_cable_converter_for_RasberryPi_based_Camera.png" />

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/Cameraside_Flexi_cable_converter_for_RasberryPi_based_Camera.png" />

**Arducam imx577 传感器 + 22 针柔性电缆 + 转换板**

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/arducam_flexcable_frontside.png" />

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/arducam_flexcable_backside.png" />

### Arducam imx577 摄像头传感器连接到 iq8275

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/rb4_with_arducam_imx577.png" />

### ov9282 摄像头传感器连接到 iq8275

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/rb4_with_arducam_ov9282.png" />

## 支持的分辨率

| 分辨率         | 宽高比  | IMX577 | OV9282 |
| ----------- | ---- | ------ | ------ |
| 4000 × 3000 | 4:3  | 是      | 否      |
| 3840 × 2160 | 16:9 | 是      | 否      |
| 1920 × 1080 | 16:9 | 是      | 否      |
| 1280 × 720  | 16:9 | 是      | 是      |
| 1024 × 768  | 4:3  | 是      | 是      |
| 640 × 480   | 4:3  | 是      | 是      |
| 320 × 240   | 4:3  | 是      | 是      |

<Note>
  * IQ-8275 不支持高级功能，例如 SHDR、LDC 和 EIS。
  * 没有硬件 JPEG 编码器 — 快照使用在 CPU 上运行的软件编码器。
</Note>

## 摄像头流式传输

### 单摄像头流

```bash theme={null}
gst-launch-1.0 -e qtiqmmfsrc name=camsrc camera=0 ! \
  'video/x-raw,format=NV12,width=1280,height=720,framerate=30/1' ! fakesink
```

上述命令以 720p 30 FPS 配置启动摄像头。
来自摄像头传感器的帧被 fakesink 丢弃。
如果 gst 管道状态更改为 "PLAYING"（如下所示），则表示摄像头正在运行。
由于此命令将摄像头帧转储到 fakesink，因此不会在设备上保存任何内容。
如果管道状态更改为 `PLAYING`，则摄像头正在运行。按 `Ctrl+C` 停止。

```bash theme={null}
gbm_create_device(187): Info: backend name is: msm_drm
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
```

### 视频编码

```bash theme={null}
gst-launch-1.0 -e qtiqmmfsrc name=camsrc camera=0 ! \
  video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,\
  interlace-mode=progressive,colorimetry=bt601 ! \
  v4l2h264enc capture-io-mode=4 output-io-mode=5 \
  extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! \
  h264parse ! mp4mux ! filesink location=/home/ubuntu/mux_avc.mp4
```

### 对象检测管道

首先下载所需的模型和资产：

```bash theme={null}
cd /home/ubuntu
curl -L -O https://raw.githubusercontent.com/quic/sample-apps-for-qualcomm-linux/refs/heads/main/qualcomm-linux/scripts/download_artifacts.sh
sudo chmod +x download_artifacts.sh && sudo ./download_artifacts.sh
```

## 使用离线 IFE 的多摄像头

IQ-8275 有两个用于实时 bayer 到 YUV 处理的 IFE。**离线 IFE** 功能允许单个 IFE 以离线模式处理两个摄像头，从而实现所有四个摄像头的并发流式传输。

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-staging/zh/Ubuntu/images/peripheral-interfaces/camera_offline_IFE.png" />

<Note>
  使用实时 IFE 时最多可以同时操作两个摄像头。使用离线 IFE 功能可以同时操作所有四个摄像头。
</Note>

## 故障排除

<AccordionGroup>
  <Accordion title="摄像头应用程序不工作">
    <Steps>
      <Step title="检查摄像头模块连接和 DIP 开关设置" />

      <Step title="重启 cam-server">
        ```bash theme={null}
        systemctl restart cam-server
        ```
      </Step>

      <Step title="运行单流测试">
        ```bash theme={null}
        gst-launch-1.0 -e qtiqmmfsrc name=camsrc camera=0 ! \
          video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! fakesink
        ```
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="摄像头传感器未探测">
    ```bash theme={null}
    journalctl -f > /home/ubuntu/log.txt
    ```

    查找：`CAM_INFO: CAM-SENSOR: Probe success, slot:0, ...`

    如果没有出现探测成功，请检查柔性电缆连接或摄像头模块。
  </Accordion>

  <Accordion title="摄像头未流式传输">
    ```bash theme={null}
    sudo su
    echo 3 > /sys/kernel/debug/camera/ife/ife_csid_debug
    dmesg -w > /home/ubuntu/dmesg.txt
    ```
  </Accordion>
</AccordionGroup>

## 资源

| 主题           | 链接                                                                                                                                                          |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 摄像头架构        | [Camera Architecture](https://dragonwingdocs-staging.qualcomm.com/Addendum-docs/Camera/addendum/Camera-architecture#camera-software-architecture)           |
| 摄像头传感器驱动程序开发 | [Camera Sensor Driver Development](https://dragonwingdocs-staging.qualcomm.com/Addendum-docs/Camera/addendum/Camera-sensor-driver-development)              |
| 自定义摄像头用例和管道  | [Customize Camera Use Case and Pipeline](https://dragonwingdocs-staging.qualcomm.com/Addendum-docs/Camera/addendum/Customize-camera-use-case-and-pipelines) |
