Chinaunix首页 | 论坛 | 博客
  • 博客访问: 311308
  • 博文数量: 101
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 774
  • 用 户 组: 普通用户
  • 注册时间: 2018-10-15 14:13
个人简介

搭建一个和linux开发者知识共享和学习的平台

文章分类

全部博文(101)

文章存档

2024年(15)

2023年(24)

2022年(27)

2019年(8)

2018年(27)

分类: 嵌入式

2024-08-16 10:34:29

在V4L2框架中,结合media-framework框架的思路,将camera sensor,MIPI DPHY,CSI HOST,VICAP,ISP等模块虚拟成video或者v4l-subdev的节点,以pipeline的链路形式链接在一起,形成数据流,因此使用v4l2-ctl的时候,如果是需要对数据输出的如VICAP或者ISP执行的话,则需要对应相应的video节点,如果是想控制sensor端或者获取sensor驱动的信息的话,则需要对sensor对应的v4l-subdev节点进行执行。

这篇文章简答介绍一下,对sensor或者一些转接芯片的subdev节点的一些常用命令:

①读取subdev帧率信息
v4l2-ctl -d /dev/v4l-subdev2 --get-subdev-fps
 
ioctl: VIDIOC_SUBDEV_G_FRAME_INTERVAL (pad=0)
        Frames per second: 30.000 (300000/10000)
返回信息可以看出,调用的是VIDIOC_SUBDEV_G_FRAME_INTERVAL 接口

②获取分辨率格式等信息
v4l2-ctl -d /dev/v4l-subdev2 --get-subdev-fmt 
 
ioctl: VIDIOC_SUBDEV_G_FMT (pad=0)
        Width/Height      : 3280/2464
        Mediabus Code     : 0x300f
        Field             : None
        Colorspace        : Default
        Transfer Function : Default (maps to Rec. 709)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Full Range)
{BANNED}最佳终调用的是VIDIOC_SUBDEV_G_FMT的接口,分辨率是3280*2464,格式为raw10

③枚举支持的格式
v4l2-ctl -d /dev/v4l-subdev2 --list-subdev-mbus-codes
 
ioctl: VIDIOC_SUBDEV_ENUM_MBUS_CODE (pad=0)
        0x300f
调用VIDIOC_SUBDEV_ENUM_MBUS_CODE 接口

④枚举所有的ctrls
这里以HDMI转MIPICSI类型的驱动为例。

v4l2-ctl -d /dev/v4l-subdev10 --list-ctrls                         
 
User Controls
 
            audio_sampling_rate 0x00981a80 (int)    : min=0 max=768000 step=1 default=0 value=48000 flags=read-only
            audio_present 0x00981a81 (bool)   : default=0 value=0 flags=read-only
 
Image Processing Controls
 
            link_frequency 0x009f0901 (intmenu): min=0 max=9 default=0 value=9
            pixel_rate 0x009f0902 (int64)  : min=0 max=800000000 step=1 default=800000000 value=800000000 flags=read-only
 
Digital Video Controls
 
             power_present 0x00a00964 (bitmask): max=0x00000001 default=0x00000000 value=0x00000000 flags=read-only
⑤设置驱动格式
调用驱动的set_fmt函数设置需要的格式

v4l2-ctl -d /dev/v4l-subdev2 --set-subdev-fmt=width=1920,height=10>
Note: --set-subdev-fmt is only for testing.
Normally media-ctl is used to configure the video pipeline.
ioctl: VIDIOC_SUBDEV_S_FMT (pad=0)
会提示建议使用media-ctl的方式,media-ctl设置节点的格式方式如下:

media-ctl -d /dev/media0 --set-v4l2 '"m00_b_LT7911UXC 5-0043":0[fmt:UYVY2X8/1920x1080]'
⑥设置曝光增益
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl 'exposure=1216,analogue_gain=10'
⑦设置马达
v4l2-ctl -d /dev/v4l-subdev3 --set-ctrl 'focus_absolute=64'
⑧查询timing(针对HDMI转MIPI类型)
v4l2-ctl -d /dev/v4l-subdev10 --query-dv-timings     
              
        Active width: 640
        Active height: 480
        Total width: 800
        Total height: 525
        Frame format: progressive
        Polarities: -vsync -hsync
        Pixelclock: 25175000 Hz (59.94 frames per second)
        Horizontal frontporch: 16
        Horizontal sync: 96
        Horizontal backporch: 48
        Vertical frontporch: 10
        Vertical sync: 2
        Vertical backporch: 33

阅读(404) | 评论(0) | 转发(0) |
0

上一篇:MIPI DPHY接口说明

下一篇:v4l2中videobuf处理

给主人留下些什么吧!~~