[X3SDB]接入ovX3C模组时,用userspace_control方式控制AE,AWB时不生效

用户您好,请详细描述您所遇到的问题。

  1. 系统软件版本:x3j3_lnx_db_20230525
  2. 问题涉及的技术领域: camera sensor, ISP
  3. 问题描述:我们接入的是pwl的 ov X3C sensor, 想用userspace control 方式控制sensor的AE, AWB。但是发现在应用层用ioctl去获取isp的相关参数时,返回值都是-1,无法成功获取到ae和awb的信息
  4. 复现概率:必现

屏幕截图_出错的代码_20230608094352.png

x3平台通过用户态设置ae,awb相关参数需要通过一套自定义的api去实现,

api文档参考5.4. ISP图像系统 — X3 用户手册 1.0.1 文档 (horizon.ai)

api使用例程参考3.2.3. sample_isp 使用说明 — X3 用户手册 1.0.1 文档 (horizon.ai)

以下是出错的代码,但从kmesg中也没有看到 camera_ctrl中有异常信息,所以不知道该怎么查下去了,还请接指导一下,谢谢

进一步查到,是/dev/sensor_ctrl这个节点,在ioctl时返回错误,errno 1:Operation not permitted

我们已经实现了,并且在J3上验证过是ok的,现在同步到x3上,出现了以上的问题

如果只是sensor驱动中需要做userspace control回调,可以参考hbre/camera/utility/sensor/gc4663_utility.c等驱动中userspace control中回调即可

您好,这些都已经实现了。调用过程是需要先用我上面帖出来的ioctl去取到isp的相关信息,然后才会调用您上边说的接口去更新sensor 相关register,现在问题是ioctl取isp信息时出错了,取不到ae和awb的信息,这样也就没法调到sensor的这些接口去更新sensor的register

sensor驱动中的回调函数应该是每一帧都会触发回调,例如在驱动中enable awb/af等回调函数后,替换对应sensor驱动

在应用层使用对应sample code,platform_source_code/sample/get_isp_data,选择对应sensor如imx415,会自动每帧触发对应回调函数中打印,在相应的回调函数中通过i2c读写sensor寄存器

另外应用程序获取设置isp的相关参数,在x3上是使用上述链接中ISP图像系统中的接口来实现。

我们的应用用的是tuning_tool,不是我们自己写的代码,这个应用调用的是libcam.so中的相关接口去拿isp信息的,我们也没动过。这个过程在J3上是验证OK的,只是到X3时,就出了上述问题

在x3开发板上用tuning tool的hobotplayer测试,userspace control回调也是正常的,使用的tuning tool程序路径platform_source_code/hbre/sensors/imx415

请问您编译时lunch先的是那一个?

我们现在的问题原因确定是/dev/sensor_ctrl这个节点ioctl调用有问题,kernel中的log也打出来了,不知道是不是我们编译时的配制选的不合适导致的访问权限问题

我们用的是2G 存储,以上选项我们选的是0,请问您那边选的是几?

您好,看到您run的结果了,功能是通的。但我们这边现在ioctl还是那个问题,所以有些信息想和您那边拉齐一下:1 您那边的软件用的是那个版本?我们用的是X3_20230128这个版本

2 您那边编译时lunch选择的是那个工程?我们选的是0,2G emmc

谢谢您的支持,这个问题比较着急,现在无法做tuning,还请帮忙再多多支持一下,谢谢!!

1.sdk使用版本Version_20230128

2.编译选项根据使用的具体开发板选择配置文件,参考 4.1. 环境搭建及编译说明 — X3 用户手册 1.0.1 文档 (horizon.ai)

那我们的版本和您那边的是一样的,编译选项也是按文档说明中选的。

现在我们在kernel中打log,发现下面这个地方有问题,这里面的sensor_update事件一直没更新,导致wait_event超时,返回的-1,我们也在看这块,但对于这块的逻辑不太熟悉,您能帮忙给看看么?谢谢

先确认用git isp data的参考代码或hobot player能正常拿到yuv图像,再集成sensor驱动中的回调

您好,我们可以用hobotplay抓到yuv和raw图的

您说的”再集成sensor驱动中的回调“是指的awb 和ae 的userspace control接口么?这个我们已经加了

看这里回调函数命名和enable和参考代码都有些差异,回调函数应该按照文档中的定义实现:

aexp_gain_control,aexp_gain_control,awb_control,af_control等,可以先单独使能其中一个函数确认是否正常,如果有多个回调需要使能,类似这样*enable = HAL_GAIN_CONTROL | HAL_LINE_CONTROL打开

5.10.2. X3 Camera点亮说明 — X3 用户手册 1.0.1 文档 (horizon.ai)