




















内核版本:6.1
文件系统:ubuntu22.04
客户要gc2093支持hdr功能,后续提供iq文件只支持hdr模式,发现默认没有启动hdr功能
查阅rv1126b数据手册确认支持HDR_X2

查阅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文件为准,实现顺序是先切摄像头场景,再切模式。

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。