> ## 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.

# 摄像头

IQ9-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   |
| CSI3   | U43 (TMUX646ZECR) | JCAM3  | JEXP4, Pins 29–38   |

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

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

### DIP 开关配置

四个 CSI PHY 可以通过 DIP 开关路由到 MIPI 摄像头端口或 GMSL 摄像头端口（通过夹层板）。

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

<Warning>
  SW1 是上图中左侧的一系列开关。
</Warning>

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

## 支持的摄像头传感器

### Raspberry Pi 摄像头传感器

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

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

**柔性电缆（Arducam 22 针 Raspberry Pi 至 Qualcomm 30 针 CSI 适配器）：**

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

<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" />

### MIPI CSI 摄像头传感器

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

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

## 支持的分辨率

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

<Note>
  IQ-9075 不支持高级功能，例如 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
```

如果管道状态更改为 `PLAYING`，则摄像头正在运行。按 `Ctrl+C` 停止。

### 视频编码

```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}
scp -r ubuntu@<ip-addr>:/home/ubuntu/mux_avc.mp4 .
```

### 对象检测管道

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

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

```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
```

然后运行对象检测管道：

```bash theme={null}
gst-launch-1.0 -e qtivcomposer name=mixer \
  sink_0::position="<0, 0>" sink_0::dimensions="<640, 360>" \
  sink_1::position="<640, 0>" sink_1::dimensions="<640, 360>" \
  mixer. ! queue ! waylandsink enable-last-sample=false fullscreen=true \
  qtiqmmfsrc name=camsrc_0 camera=0 multicamera-hint=true ! \
  video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! queue ! \
  tee name=split_0 split_0. ! queue ! qtimetamux name=mux_0 ! queue ! \
  qtivoverlay ! queue ! mixer. split_0. ! queue ! qtimlvconverter ! queue ! \
  qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
  external-delegate-options="QNNExternalDelegate,backend_type=htp;" \
  model=/etc/models/yolox_quantized.tflite ! queue ! \
  qtimlpostprocess settings="{\"confidence\": 75.0}" results=10 module=yolov8 \
  labels=/etc/labels/yolox.json ! text/x-raw ! queue ! mux_0.
```

### 视频编码 + 快照

<Steps>
  <Step title="启动管道">
    ```bash theme={null}
    gst-pipeline-app -e qtiqmmfsrc name=camsrc camera=0 ! \
      video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,\
      interlace-mode=progressive,colorimetry=bt601 ! queue ! \
      v4l2h264enc capture-io-mode=4 output-io-mode=5 \
      extra-controls="controls,video_bitrate_mode=0,video_bitrate=6000000;" ! \
      queue ! h264parse ! mp4mux ! queue ! \
      filesink location="/home/ubuntu/mux_720_avc.mp4" \
      camsrc.image_1 ! "image/jpeg,width=1280,height=720,framerate=30/1" ! \
      multifilesink location=/home/ubuntu/frame%d.jpg async=false sync=true \
      enable-last-sample=false
    ```
  </Step>

  <Step title="拍摄快照">
    从交互式菜单：**(1) Ready → (3) Playing → (p) Plugin Mode → (11) camerasrc → (37) capture-image → (1) Snapshot → 输入计数**
  </Step>

  <Step title="停止并检索文件">
    按 Enter → `b` (返回) → `q` (退出)。

    ```bash theme={null}
    scp -r ubuntu@<ip-addr>:/home/ubuntu/<filename> .
    ```
  </Step>
</Steps>

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

IQ-9075 有两个用于实时 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" />

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

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

在每个 `qtiqmmfsrc` 源上使用 `multicamera-hint=true` 运行 4 摄像头 AI 推理管道。请参阅上面的单摄像头对象检测管道以了解模式 — 为 `camera=1`、`camera=2` 和 `camera=3` 复制。

### 验证多摄像头操作

**用户日志 — 查找：**

```
RealTimeFeatureZSLPreviewRawOfflineIFE_0_cam_0 status is now PipelineStatus::STREAM_ON
```

**内核日志 — 查找：**

```
Acquired Single IFE[0] SFE[0] OFFLINE: Y with [9 pix] [0 pd] [0 rdi] ports for ctx:1
```

## 故障排除

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

      <Step title="重启 cam-server">
        ```bash theme={null}
        systemctl restart cam-server
        # or
        pkill 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="摄像头传感器未探测">
    收集日志并搜索 `probe success`：

    ```bash theme={null}
    journalctl -f > /home/ubuntu/log.txt
    ```

    **预期探测成功日志：**

    ```
    CAM_INFO: CAM-SENSOR: Probe success, slot:0, slave_addr: 0x34, sensor_id:0x577
    ```

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

  <Accordion title="摄像头未流式传输">
    启用 CSI 调试日志并收集 dmesg：

    ```bash theme={null}
    sudo su
    echo 3 > /sys/kernel/debug/camera/ife/ife_csid_debug
    dmesg -w > /home/ubuntu/dmesg.txt
    ```

    启动摄像头，并检查日志中的 SOF/EOF IRQ 消息。
  </Accordion>
</AccordionGroup>

### 收集调试日志

```bash theme={null}
journalctl -f > /home/ubuntu/user_log.txt   # 用户空间日志
dmesg -w > /home/ubuntu/kernel_log.txt       # 内核日志
```

## 资源

| 主题           | 链接                                                                                                                                                          |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 摄像头架构        | [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) |
| 自定义高级摄像头功能   | [Customize Advanced Camera Features](https://dragonwingdocs-staging.qualcomm.com/Addendum-docs/Camera/addendum/Customize-advanced-camera-features)          |
