RV1126B 适配gc2093启动HDR
内核版本:6.1
文件系统:ubuntu22.04
1、具体问题
客户要gc2093支持hdr功能,后续提供iq文件只支持hdr模式,发现默认没有启动hdr功能
2、调试过程及遇到问题
2.1 确认RV1126b支持hdr模式
查阅rv1126b数据手册确认支持HDR_X2

2.2 设备树配置启动HDR
查阅include/uapi/linux/rk-camera-module.h

在设备树中添加该配置
rockchip,camera-hdr-mode = <5>;

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

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

查阅rkaiq_3A_server源码,发现默认配置并不支持切换场景。默认跑iq文件的normal
源码路径:external/camera_engine_rkaiq/rkaiq_3A_server/rkaiq_3A_server.cpp

由于使用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这个是用于切换模式的。

这里将场景固定为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功能

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

