当前位置: 首页 > news >正文

RV1126B 适配gc2093启动HDR - 假-正

RV1126B 适配gc2093启动HDR

内核版本:6.1

文件系统:ubuntu22.04

1、具体问题

  客户要gc2093支持hdr功能,后续提供iq文件只支持hdr模式,发现默认没有启动hdr功能

2、调试过程及遇到问题

2.1 确认RV1126b支持hdr模式

  查阅rv1126b数据手册确认支持HDR_X2

image

2.2 设备树配置启动HDR

查阅include/uapi/linux/rk-camera-module.h

image

   在设备树中添加该配置

rockchip,camera-hdr-mode = <5>;

image

   在gc2093驱动中添加打印信息定位是否启动生效

image

    烧写固件后确认设备树配置生效,但是v4l2抓图会卡住,发现会被rkaiq_3A_server 启动后覆盖掉了

image

    查阅rkaiq_3A_server源码,发现默认配置并不支持切换场景。默认跑iq文件的normal

    源码路径:external/camera_engine_rkaiq/rkaiq_3A_server/rkaiq_3A_server.cpp

image

     

        由于使用iq文件只有hdr场景,如下图所示,修改rkaiq_3A_server.cpp (这里测试过imx415 iq是支持normal和hdr场景,直接配置rkaiq_3A_server切换为hdr模式即可)

    1、先使用rk_aiq_uapi2_sysctl_preInit_scene切换到hdr场景,

     2、再使用rk_aiq_uapi2_sysctl_prepare这个是用于切换模式的。

image

        

   这里将场景固定为RK_AIQ_WORKING_MODE_ISP_HDR2

static void init_engine(struct rkaiq_media_info *media_info)
{int index;rk_aiq_working_mode_t  work_mode = RK_AIQ_WORKING_MODE_ISP_HDR2;if (work_mode){rk_aiq_uapi2_sysctl_preInit_scene(media_info->sensor_entity_name, "hdr","day");ERR("rkaiq engine prepare mode0x%x   main_scene: hdr,   sub_scene:day  !\n",work_mode);}else{rk_aiq_uapi2_sysctl_preInit_scene(media_info->sensor_entity_name, "normal","day");ERR("rkaiq engine prepare mode0x%x   main_scene: normal, sub_scene:day !\n",work_mode);}media_info->aiq_ctx = rk_aiq_uapi2_sysctl_init(media_info->sensor_entity_name,IQ_PATH, NULL, NULL);/* 3A server has listened stream events already */rk_aiq_uapi2_sysctl_setListenStrmStatus(media_info->aiq_ctx, false);if (has_mul_cam)rk_aiq_uapi2_sysctl_setMulCamConc(media_info->aiq_ctx, 1);if (rk_aiq_uapi2_sysctl_prepare(media_info->aiq_ctx,width, height, work_mode)) {ERR("rkaiq engine prepare failed !\n");exit(-1);}
}

    修改后重新编译rkaiq_3a_server,再启动3a_server,成功启动hdr功能

image

  3、总结

  原厂指南也有这部分说明,只是一句话带过,具体需要以iq文件为准,实现顺序是先切摄像头场景,再切模式。

image