Edit online

调试指南

调试开关

在 luban 根目录下执行 make kernel-menuconfig,进入 kernel 的功能配置,可以打开 DVP 模块的 DEBUG 选项:

LinuxKernelhackingArtinchipDebug[*]DVPdriverdebug

此 DEBUG 选项打开的影响:

  1. DVP 驱动以-O0 编译

  2. DVP 的 pr_dbg()和 dev_dbg()调试信息会被编译

在系统运行时,如果要打印 pr_dbg()和 dev_dbg()信息,还需要调整 loglevel 为 8,两个方法:

  1. 在 dts 中修改 bootargs,增加“loglevel=8”

  2. 在板子启动到 shell 后,执行命令:

echo8 > /proc/sys/kernel/printk

Sysfs 节点

  1. 在 Sysfs 中查看 video 设备的信息:
    # ls /dev/video0 -l
    crw-------    1 root     root       81,   0 Jan  1  1970 /dev/video0
    # ls /sys/class/video4linux/v4l-subdev0/
    dev        dev_debug  device     index      name       subsystem  uevent
    #
    # cat /sys/class/video4linux/v4l-subdev0/name
    ov5640 3-003c
    #
    # cat /sys/class/video4linux/v4l-subdev1/name
    aic-dvp-sd
    # ls -l /sys/class/video4linux/
    lrwxrwxrwx    1 root     root             0 Jan  1 00:12 v4l-subdev0 -> ../../devices/platform/soc/99223000.i2c/i2c-3/3-003c/video4linux/v4l-subdev0
    lrwxrwxrwx    1 root     root             0 Jan  1 00:12 v4l-subdev1 -> ../../devices/platform/soc/98830000.dvp/video4linux/v4l-subdev1
    lrwxrwxrwx    1 root     root             0 Jan  1 00:12 video0 -> ../../devices/platform/soc/98830000.dvp/video4linux/video0
  2. 打开 L2 的 debug 开关

    在 L2 子系统中,用 dprintk(level)接口来控制调试信息,大于代码中的 dprintk(level)调用时的 level 就可以打印出信息。dprintk()一般用到两个 level:

    1 显示 ioctl 名称
    2 显示 API 的传入参数
    向对应的 Sysfs 节点写入一个整数值,可以修改该 level:
    echo 0x3 > /sys/module/videobuf2_v4l2/parameters/debug
    echo 0x3 > /sys/module/videobuf2_common/parameters/debug
    echo 0x3 > /sys/devices/platform/soc/18830000.dvp/video4linux/v4l-subdev1/dev_debug
    echo 0x3 > /sys/devices/platform/soc/18830000.dvp/video4linux/video0/dev_debug
    
  3. 查看 DVP 的 Buf 队列情况

    DVP 驱动中实现了一个 sysfs 节点 buflist,查看当前三个 Qbuf、DQbuf、DVP 驱动中的 list 状态:

    # cat /sys/devices/platform/soc/18830000.dvp/buflist
    In dvp->buf_list, the current buf in list:
    [0]: empty
    [1]: empty
    [2]: empty
    
    In V4L2 Q-buf list:
    [0]: empty
    [1]: empty
    [2]: empty
    
    In V4L2 DQ-buf list:
    [0], state: Done
    [1], state: Done
    [2], state: Done
    

V4L2 相关的其他工具

  • V4l2-ctl,v4l2 的瑞士军刀

  • V4l2 兼容性测试

  • V4l2-dbg,

  • qv4l2,QT 测试程序