能否通过v4l2更改imx415的imx415_mode或hdr_mode

Which version of system do you use? Khadas official images, self built images, or others?

edge2-ubuntu-20.04-gnome-linux-5.10-fenix-1.5.1-230710-emmc-develop.img.

Please describe your issue below:

`

  1. 在不改动驱动的前提下,通过v4l2更改imx415的模式,从而获得不同帧率以及不同hdr_mode情况下的输出。(这里的模式指imx415驱动中所给出的imx415_mode。)

  2. imx415驱动中似乎最高支持30fps,在HDR_X3下为20fps,且exposure和gain只有在hdr_mode==NOHDR下才能有效设置。

  3. imx415_mode参数量过多,我希望能够设置hdr_mode,以获取不同帧率的输出。

  4. 在程序中,能否像获取/设置exposure参数一样,实现对hdr_mode或imx415_mode的操作呢?

`

Post a console log of your issue below:

@cheesefish
稍晚些,给你答复!

这个问题有答复没有,我近期也有相关的问题

@QiYin
显然,我还没有收到答复,有答复我会回复你。

@cheesefish @QiYin
1.通过media-ctl -p -d /dev/mediaX找到sensor节点名称,节点名称格式为/dev/v4l-subdevX,参
考命令如下:

$ v4l2-ctl -d /dev/v4l-subdev4 --set-ctrl 'exposure=1216,analogue_gain=10'

也可以分开设置:

$ v4l2-ctl -d /dev/v4l-subdev4 --set-ctrl exposure=1216
$ v4l2-ctl -d /dev/v4l-subdev4 --set-ctrl analogue_gain=10

2、exposure最大值被sensor vts限制住,最大限制条件可能是vts-4或vts-10,不同sensor根据sensor
手册的说明做限制。假设当前帧率为30fps,最大曝光时间为33.3ms,要设置40ms的曝光,就得加大
vts才能设置40ms的曝光,可以等比例换算,vts_30fps * 30fps = vts_25fps * 25fps,从而换算出25fps
对应的vts,(vts - height)为vblank,将换算后vblank设置到sensor驱动即可设置更大的曝光,命令
参考如下:

$ v4l2-ctl -d /dev/v4l-subdev4 --set-ctrl vertical_blanking=200
2 Likes

@ivan.li
感谢您的回复。

  1. 关于设置exposure的方法,使用v4l2-ctl进行设置的方式我尝试过,正式经过多次实验我才发现exposure的值会变化,imx415是自动曝光的,我也因此去阅读imx415的驱动源码,了解到需要通过设置imx415_mode才能改变imx415的曝光模式。

  2. 关于如何修改imx415的曝光模式。我发现imx415的驱动提供了一些API,我也许可以通过这些API去修改,如果你能提供一份imx415驱动提供的API说明和使用示例,那将对我有极大的帮助。

我们没有相关API说明,但是你可以看看RK的参考文档。