Edit online

测试指南

2 Dec 2024
Read time: 3 minute(s)

测试环境

  • 硬件
    • 开发板,或者 D211 的 FPGA 板

    • 可转接摄像头的子板

    • 摄像头,如 OV5640

  • 软件
    • PC 端的串口终端软件,用于 PC 和开发板进行串口通信

    • DVP 模块的测试 demo:test_dvp

软件配置

  1. 配置 OV5640 摄像头
    测试中需要用到摄像头,以 OV5640 为例,在 Luban 的根目录下通过 make kernel-menuconfig,按如下选择:
    Linux
        Device Drivers
             Multimedia support
                Media ancillary drivers
                    Camera sensor devices
                        <*> OmniVision OV5640 sensor support
    
    board.dts 中,也需要增加 OV5640 的配置,假设 OV5640 是接在 I2C3 通道:
    &i2c3 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c3_pins_a>,  <&clk_out1_pins>;          /* i2c3 引脚及 clock 引脚 */
        status = "okay";
    
        ov5640: camera@3C {
            compatible = "ovti,ov5640";
            reg = <0x3C>;
            clocks = <&cmu CLK_APB1>;
            clock-names = "xclk";
            reset-gpios = <&gpio_p 5 GPIO_ACTIVE_LOW>;
            powerdown-gpios = <&gpio_p 6 GPIO_ACTIVE_HIGH>;
    
            port {
                ov5640_out: endpoint {
                    remote-endpoint = <&dvp0_in>;
                    /* V4L2_FWNODE_BUS_TYPE_BT656
                    bus-type = <6>; */
                    bus-width = <8>;
                    data-shift = <2>;
                    hsync-active = <0>;
                    vsync-active = <1>;
                    pclk-sample = <1>;
                };
            };
        };
    };
    注:
    1. 如果要使用 BT656 模式,请打开 bus-type 参数。

    2. 如果是 YUV422,不需要配置 bus-type,代码中默认采用 YUV422(即 V4L2_FWNODE_BUS_TYPE_PARALLEL,定义在 drivers/media/v4l2-core/v4l2-fwnode.c)。

  2. test_dvp 配置

    Luban 根目录,运行make linux-menuconfig,按如下选择:

    ArtInChip packages
        Sample code
            [*] test-dvp
    

test_dvp 测试

test_dvp 的主要功能是将摄像头的数据采集后,传给 DE 模块的 Video 图层去显示。

在打开 test_dvp 的编译后,板子上的 test_dvp 位于 /usr/local/bin/,无需进入该目录,直接运行 test_dvp 即可:
[aic@] # test_dvp -u
Usage: test_dvp [options]:
     -f, --format       format of input video, NV12/NV16 etc
     -c, --count        the number of capture frame
     -w, --width        the width of sensor
     -h, --height       the height of sensor
     -r, --framerate    the framerate of sensor
     -u, --usage
     -v, --verbose

Example: test_dvp -f nv16 -c 1

# 使用示例:
# 设置摄像头的分辨率为 720*576,帧率为 15 帧/s,
# 使用 NV12 格式(默认)输出到 Video Layer 显示,共采集并显示 100 帧数据
[aic@] # test_dvp -w 720 -h 576 -r 15 -c 100