3.2. sample_vin 使用说明

3.2.1. 功能概述

get_vin_data 完成 Camera Sensor 、 MIPI CSI 和 SIF 模块的初始化,实现从 vin 模块获取视频帧数据的功能,支持从 VIN 模块获取 Raw 或者 YUV 格式的图像。

3.2.1.1. 软件架构说明

image-20250110-172641.png

3.2.1.2. 代码位置及目录结构

  • 代码位置 app/samples/platform_samples/sample_vin/get_vin_data

  • 目录结构

sample_vin/
└── get_vin_data
    ├── get_vin_data.c
    └── Makefile

3.2.1.3. API 流程说明

image-20250110-165856.png

3.2.2. 编译部署

3.2.2.1. 编译

  • 进入 get_vin_data 目录,执行 make 编译

  • 输出产物是 get_vin_data 源码目录下的 get_vin_data

  • 详细程序编译方式请查阅 编译方法 章节

3.2.2.2. 程序部署

刷写系统软件镜像后 , 本 sample 的可执行文件位于板端 : /app/platform_samples/sample_vin/get_vin_data

3.2.3. 运行

3.2.3.1. 程序运行方法

  • 直接执行程序 ./get_vin_data -h 可以获得帮助信息:

3.2.3.2. 程序参数选项说明

Usage: get_vin_data [OPTIONS]
Options:
  -s <sensor_index>      Specify sensor index
  -t <settle_value>      Specify settle time for debug
  -m <sensor_mode>       Specify sensor mode of camera_config_t
  -h                     Show this help message
index: 0  sensor_name: sc1330t                  config_file:linear_1280x960_raw10_30fps_1lane.c
index: 1  sensor_name: irs2875-tof              config_file:linear_208x1413_raw12_15fps_2lane.c
index: 2  sensor_name: sc230ai-10fps            config_file:linear_1920x1080_raw10_10fps_1lane.c
index: 3  sensor_name: sc230ai-30fps            config_file:linear_1920x1080_raw10_30fps_1lane.c
index: 4  sensor_name: sc132gs-1280p            config_file:linear_1088x1280_raw10_30fps_1lane.c
index: 5  sensor_name: sc035hgs                 config_file:linear_640x480_raw10_30fps_1lane.c
index: 6  sensor_name: sc035hgs_mono            config_file:linear_mono_640x480_raw10_30fps_1lane.c
index: 7  sensor_name: ov5640                   config_file:linear_1920x1080_raw10_30fps_2lane.c
index: 8  sensor_name: f37                      config_file:linear_1920x1080_raw10_30fps_1lane.c
index: 9  sensor_name: imx415-30fps-2lane       config_file:linear_3840x2160_raw10_30fps_2lane.c
index: 10  sensor_name: imx415-30fps-4lane      config_file:linear_3840x2160_raw10_30fps_4lane.c
index: 11  sensor_name: sc202cs-1600x1200       config_file:linear_1600x1200_raw10_30fps_1lane.c
index: 12  sensor_name: irs2381c-tof            config_file:linear_224x1903_raw12_5fps_2lane.c
index: 13  sensor_name: sc035hgs-vc0            config_file:linear_640x480_raw10_30fps_2lane_vc0.c
index: 14  sensor_name: sc035hgs-vc1            config_file:linear_640x480_raw10_30fps_2lane_vc1.c
index: 15  sensor_name: sc231ai-30fps           config_file:linear_1920x1080_raw10_30fps_2lane.c
index: 16  sensor_name: imx586-30fps-4lane      config_file:linear_3840x2160_raw10_30fps_4lane.c
index: 17  sensor_name: os08c10-30fps-2lane     config_file:linear_3840x2160_raw12_30fps_2lane.c
index: 18  sensor_name: ar0233-30fps            config_file:linear_1920x1080_raw12_30fps_2lane.c
index: 19  sensor_name: ar0820std-30fps         config_file:linear_3840x2160_yuv422_30fps_4lane.c
index: 20  sensor_name: sc1336                  config_file:linear_1280x720_raw10_15fps_2lane.c
index: 21  sensor_name: dummy                   config_file:dummy_sensor.c
index: 22  sensor_name: ar0233-30fps            config_file:ar0233_linear_1920x1080_raw12_30fps_2lane_vc0.c
index: 23  sensor_name: ar0233-30fps            config_file:ar0233_linear_1920x1080_raw12_30fps_2lane_vc1.c
index: 24  sensor_name: ov9782-200fps-2lane     config_file:linear_640x360_raw10_200fps_2lane.c
index: 25  sensor_name: ov9782-120fps-2lane     config_file:linear_1280x720_raw10_120fps_2lane.c
index: 26  sensor_name: imx219-640x480-30fps    config_file:linear_640x480_raw10_30fps_2lane.c
index: 27  sensor_name: imx219-1632x1232-30fps  config_file:linear_1632x1232_raw10_30fps_2lane.c
index: 28  sensor_name: imx219-1920x1080-30fps  config_file:linear_1920x1080_raw10_30fps_2lane.c
index: 29  sensor_name: imx219-3264x2464-15fps  config_file:linear_3264x2464_raw10_15fps_2lane.c
index: 30  sensor_name: imx219-3264x2464-21fps  config_file:linear_3264x2464_raw10_21fps_2lane.c
index: 31  sensor_name: ov5647-640x480-60fps    config_file:linear_640x480_raw10_60fps_2lane.c
index: 32  sensor_name: ov5647-1280x960-30fps   config_file:linear_1280x960_raw10_30fps_2lane.c
index: 33  sensor_name: ov5647-1920x1080-30fps  config_file:linear_1920x1080_raw10_30fps_2lane.c
index: 34  sensor_name: ov5647-2592x1944-15fps  config_file:linear_2592x1944_raw10_15fps_2lane.c
index: 35  sensor_name: imx477-1280x960-120fps  config_file:linear_1280x960_raw10_120fps_2lane.c
index: 36  sensor_name: imx477-1920x1080-50fps  config_file:linear_1920x1080_raw12_50fps_2lane.c
index: 37  sensor_name: imx477-2016x1520-40fps  config_file:linear_2016x1520_raw12_40fps_2lane.c
index: 38  sensor_name: imx477-4000x3000-10fps  config_file:linear_4000x3000_raw12_10fps_2lane.c

选项:

  • s <sensor_index>: 指定要使用的 camera sensor 索引。

  • t <settle_value>: MIPI dphy 的 settle 时间配置,报 phy 错时可调整,该选项用于指定调试时的稳定时间( settle time)。

  • m <sensor_mode>: 指定 camera sensor 配置中的传感器模式。

  • h: 显示帮助信息。

当前支持的传感器以及对应的配置文件列表:

Index Sensor Name Configuration File
0 sc1330t linear_1280x960_raw10_30fps_1lane.c
1 irs2875-tof linear_208x1413_raw12_15fps_2lane.c
2 sc230ai-10fps linear_1920x1080_raw10_10fps_1lane.c
3 sc230ai-30fps linear_1920x1080_raw10_30fps_1lane.c
4 sc132gs-1280p linear_1088x1280_raw10_30fps_1lane.c
5 sc035hgs linear_640x480_raw10_30fps_1lane.c
6 sc035hgs_mono linear_mono_640x480_raw10_30fps_1lane.c
7 ov5640 linear_1920x1080_raw10_30fps_2lane.c
8 f37 linear_1920x1080_raw10_30fps_1lane.c
9 imx415-30fps-2lane linear_3840x2160_raw10_30fps_2lane.c
10 imx415-30fps-4lane linear_3840x2160_raw10_30fps_4lane.c
11 sc202cs-1600x1200 linear_1600x1200_raw10_30fps_1lane.c
12 irs2381c-tof linear_224x1903_raw12_5fps_2lane.c
13 sc035hgs-vc0 linear_640x480_raw10_30fps_2lane_vc0.c
14 sc035hgs-vc1 linear_640x480_raw10_30fps_2lane_vc1.c
15 sc231ai-30fps linear_1920x1080_raw10_30fps_2lane.c
16 imx586-30fps-4lane linear_3840x2160_raw10_30fps_4lane.c
17 os08c10-30fps-2lane linear_3840x2160_raw12_30fps_2lane.c
18 ar0233-30fps linear_1920x1080_raw12_30fps_2lane.c
19 ar0820std-30fps linear_3840x2160_yuv422_30fps_4lane.c
20 sc1336 linear_1280x720_raw10_15fps_2lane.c
21 dummy dummy_sensor.c
22 ar0233-30fps ar0233_linear_1920x1080_raw12_30fps_2lane_vc0.c
23 ar0233-30fps ar0233_linear_1920x1080_raw12_30fps_2lane_vc1.c
24 ov9782-200fps-2lane linear_640x360_raw10_200fps_2lane.c
25 ov9782-120fps-2lane linear_1280x720_raw10_120fps_2lane.c
26 imx219-640x480-30fps linear_640x480_raw10_30fps_2lane.c
27 imx219-1632x1232-30fps linear_1632x1232_raw10_30fps_2lane.c
28 imx219-1920x1080-30fps linear_1920x1080_raw10_30fps_2lane.c
29 imx219-3264x2464-15fps linear_3264x2464_raw10_15fps_2lane.c
30 imx219-3264x2464-21fps linear_3264x2464_raw10_21fps_2lane.c
31 ov5647-640x480-60fps linear_640x480_raw10_60fps_2lane.c
32 ov5647-1280x960-30fps linear_1280x960_raw10_30fps_2lane.c
33 ov5647-1920x1080-30fps linear_1920x1080_raw10_30fps_2lane.c
34 ov5647-2592x1944-15fps linear_2592x1944_raw10_15fps_2lane.c
35 imx477-1280x960-120fps linear_1280x960_raw10_120fps_2lane.c
36 imx477-1920x1080-50fps linear_1920x1080_raw12_50fps_2lane.c
37 imx477-2016x1520-40fps linear_2016x1520_raw12_40fps_2lane.c
38 imx477-4000x3000-10fps linear_4000x3000_raw12_10fps_2lane.c

3.2.3.3. 运行效果

  1. 根据提示选择当前连接在开发板上的 Sensor 名,以 f37 为例,执行 ./get_vin_data -s 7

  2. 执行命令后会自动加 f37 载配置文件linear_1920x1080_raw10_30fps_1lane.c对 Camera Sensor、MIPI CSI 和 SIF 模块完成初始化。

  3. 初始化完成后,系统进入用户交互模式。

执行命令:

cd sample_vin/get_vin_data
chmod +x get_vin_data
./get_vin_data -s 7

运行日志:

  • g: 获取一帧图像,支持输入多个 g 来连续获取图像,例如:输入 gggg ​会获取4张图像。

Using index:7  sensor_name:f37  config_file:linear_1920x1080_raw10_30fps_1lane.c
[INFO] board_id is 0x0202, not need skip sci1.
mipi mclk is configed.
Searching camera sensor on device: /proc/device-tree/soc/cam/vcon@0 i2c bus: 4 mipi rx phy: 0
INFO: Found sensor_name:f37 on mipi rx csi 0, i2c addr 0x40, config_file:linear_1920x1080_raw10_30fps_1lane.c

***************  Command Lists  ***************
 g      -- get single frame
 l      -- get a set frames
 q      -- quit
 h      -- print help message

Command: g
handle 34661 vin dump raw 1920x1080(stride:3840), buffer size: 4147200 frame id: 0, timestamp: 46024411807696
Dump image to file(handle_34661_vin_chn0_1920x1080_stride_3840_frameid_0_ts_46024411807696.raw), size(4147200) succeeded
  • l: 连续获取 12 帧图像,相当于输入 12 个 g ​

Command: l
handle 34661 vin dump raw 1920x1080(stride:3840), buffer size: 4147200 frame id: 1, timestamp: 46024435294737
Dump image to file(handle_34661_vin_chn0_1920x1080_stride_3840_frameid_1_ts_46024435294737.raw), size(4147200) succeeded
... ( 省略,总共 Dump 12  ) ...
handle 34661 vin dump raw 1920x1080(stride:3840), buffer size: 4147200 frame id: 424, timestamp: 46038535296244
Dump image to file(handle_34661_vin_chn0_1920x1080_stride_3840_frameid_424_ts_46038535296244.raw), size(4147200) succeeded
  • q: 退出程序​

Command: q
quit

效果说明:

3.2.3.4. 运行效果说明

执行程序后会获取到如 handle_34661_vin_chn0_1920x1080_stride_3840_frameid_424_ts_46038535296244.raw 命名格式的 Raw 图像。

请参考 Hobot player 静态图片章节浏览图像,图像的参数配置说明如下:

  • 浏览 RAW 图

按照如下图所示步骤配置选项,其中 file config 里面关注 pic_type 、 raw_type 、 pix_length 、 width 和 height 的配置, sc1330t 配置为( PIC_RAW、 UNPACKET_RAW、 RAW_MIPI_BIT_10 , 1920 , 1080 )

image-20250110-195428.png

3.2.4. 常见问题

3.2.4.1. 1. 显示 No Camera Sensor found

  • 原因分析:

    1. 开发板实际连接 camera 型号和./get_vin_data -s 时指定的 camera 不匹配。

    2. FPC 线缆接触不良、接口松动导致测试异常。

  • 解决方法:

    1. 确保实际连接的 camera 和./get_vin_data -s 时指定的 camera 匹配。

    2. 检查 FPC 线缆连接,确保接口稳定连接。