一口Linux

电子技术应用专栏作家——一口Linux。一起学习嵌入式、Linux、网络、驱动、arm知识

Camera | 3.瑞芯微平台MIPI摄像头常用调试命令

0
阅读(2811)

Camera | 1.Camera基础知识

Camera | 2.MIPI、CSI基础


前面2篇我们讲解了camera的一些基础概念和知识。

本文主要讲述在瑞芯微平台上摄像头开发常用的调试命令。


  0、环境

  soc  : rk3568

  board: EVB1-DDR4-V10

  软  件:Android 11

  Linux:4.19.232

  Camera:ov13850


  1. v4l2-utils工具包

  v4l-utils工具是由Linux维护的V4L2开发工具包。

  它提供了一套用于配置V4L2子设备属性的V4L2和媒体框架相关工具,测试V4L2设备,并提供开发库,如libv4l2等等。

  v4l-utils工具包主要包含两个常用工具,分别是media-ctl、v4l2-ctl

  瑞芯微的SDK在Buildroot固件中,已经编译好了v4l2-utils软件包里面的工具(Android通常默认支持)。

  ubuntu系统安装方法:

  peng@ubuntu:~$ sudo apt install v4l-utils


  2. media-ctl

  media-ctl是v4l2-utils包中的一个工具,主要用来查看、配置Media Framework的各Entity的信息,如格式、裁剪、链接使能等。

  V4l2-ctl 工具则是针对/dev/video0,/dev/video1 等 video设备,它在 video 设备上进行 set_fmt,reqbuf(申请buf),qbuf(送buf回队列),dqbuf(从队列取出buf),stream_on,stream_off 等一系列操作。

  n为4的倍数(0,1,2,3…)

  /dev/videon+0:视频输出 SP主通道

  /dev/videon+1:视频输出 MP自身通道

  /dev/videon+2:3A统计

  /dev/videon+3:3A参数设置


  1)找到video设备

  拓扑结构中有多个的Entity,一些是sub device,一些是video device。前者对应的设备节点是/dev/v4l-subdev,后者对应的是/dev/video。多个的video device中,最常关注的是哪个设备可以输出图像。

  $ media-ctl -d /dev/media0 -e "rkisp_selfpath"

  /dev/video1

  $ media-ctl -d /dev/media0 -e "rkisp_mainpath"

  /dev/video0

  上面两个命令分别显示出/dev/media0这个链路中,RKISP的SP及MP节点的设备路径。RKISP有两个视频输出设备,它们都能输出图像。

  2)显示拓扑结构

  使用以下命令可以显示拓扑结构:

  $ media-ctl -p -d /dev/media0

  主要关注的是有没有找到Sensor的Entity。如果没有找到Sensor的Entity,说明Sensor注册有问题,请按FAQ文档排查。

  例如,开发板上接上ov13850摄像头后可以看到如下的输出:

  image.png

image.png

image.png

  从entity70信息中可以看到:

  该Entity完整的名称是:m00_b_ov13850 4-0010

  它是一个V4L2 subdev(Sub-Device) Sensor

  它对应的节点是/dev/v4l-subdev3,应用程序(如v4l2-ctl)可以打开它,并进行配置

  它仅有一个输出(Source)节点,记为pad0

  它的输出格式是[fmt:SBGGR10/4224x3136],其中SBGGR10是一种mbus-code的简称

  它的Source pad0 链接到"rockchip-csi2-dphy0"的pad0,并且当前的状态是 ENABLED。

  拓扑结构图如下:【后面文章会详细讲解该结构图,请收藏本系列文章】

image.png

  3)修改Entity的format、size

  举例一,ov3850摄像头支持多个分辨率的输出,默认为1920x1080。现将输出分辨率改为640x480:

 image.png

  3. v4l2-ctl

  v4l2-ctl的帮助信息查看:

 image.png

  1)列出所有设备

 image.png

 

 2)指定设备的预览支持格式

 image.png

image.png

image.png

image.png

image.png

image.png


  3)获取指定设备的所有信息

  image.png

image.png

  

4) 显示摄像头参数

  image.png

 

5)增加曝光exposure

  exposure值区间为:  4-3324 命令实例:

  v4l2-ctl -d /dev/video0 --set-ctrl exposure=3324

  

6)增加图片亮度analogue_gain

  image.png

image.png

  

7)使用v4l2-ctl抓帧

  image.png

  

8)测试显示信息test_pattern

image.png

image.png

image.png

  4. 显示图片

  上一节,抓取的图片、视频要可以拷贝到ubuntu中借助借助工具ffplay查看。

  1)ffplay

  FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

  采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。

  它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

  ffplay是FFmpeg提供的一个极为简单的音视频媒体播放器(由ffmpeg库和SDL库开发),可以用于音视频播放、可视化分析 ,提供音视频显示和播放相关的图像信息、音频的波形等信息,也可以用作FFmpeg API的测试工具使用。

  由于是基于FFmpeg开发所以ffmpeg支持的视音频格式它基本上都支持,不过ffplay不是图形化界面需要通过CMD命令窗口来操作。

  2)官网网站

  http://www.ffmpeg.org/ffplay.html

  3)ffplay命令选项:

  image.png

  4)显示图片

 image.png

  文中各种mipi技术文档,后台回复关键字:mipi

  掌握了这些命令,我们就可以调试摄像头了。

  后面还会继续更新几篇Camera文章,

  建议大家订阅本专题!

  也可以后台留言,加一口君好友yikoupeng,

  拉你进高质量技术交流群。


原文链接:https://mp.weixin.qq.com/s/aZdqMvA8CxopxE5RfLzw9Q


微信图片_20220701092006.jpg

电子技术应用专栏作家  一口Linux