RK3588 Android12 相机踩坑实录:OV50C40 RAW分辨率异常修复方案 电子说
一、故障背景
基于 RK3588 Android12 平台调试 OV50C40 50M 像素传感器,出现隐蔽成像故障:相机可正常启动、预览界面正常、拍照无闪退,但底层导出 RAW 帧分辨率固定为 4096×3072,无法输出完整 8K 原生 RAW 8192×6144。
直接导致高清拍摄细节丢失、数字变焦裁切错位、LSC 暗角矫正失效。经全链路定位,问题源于内核 sensor 模式配置颠倒,同时配套 IQ、HAL 多层尺寸参数联动改动,下文完整拆解故障根因、全链路代码修改点与修复验证效果。

二、故障核心根因
前期调试时为处理 sensor 边缘坏点、优化 AF 对焦逻辑,研发调整了内核分辨率 mode 结构体,将 8192 全尺寸与 4096 binning 模式的寄存器、时序配置互换,原生 8K RAW 通路被注释屏蔽,设备始终输出 4K 降采样画面;虽上层 IQ、HAL 同步适配了 8128 裁剪尺寸,但底层硬件输出链路不匹配,最终引发 RAW 尺寸错误。
三、分层代码修改点详解
(一)内核驱动:kernel-5.10/drivers/media/i2c/ov50c40.c(核心修复)
1.分辨率 mode 结构体复原,修正时序与寄存器绑定关系
原错误逻辑:8192 条目挂载 4K 时序,4096 条目挂载 8K 时序且被注释屏蔽
// 错误旧代码static const struct ov50c40_mode supported_modes_dphy[] = {/*{.bus_fmt = OV50C40_MEDIA_BUS_FMT ,.width = 8192, .height = 6144,.reg_list = ov50c40_10bit_8192x6144_dphy_regs,.mipi_freq_idx = 1,},*/{.bus_fmt = OV50C40_MEDIA_BUS_FMT ,.width = 8192, .height = 6144,.reg_list = ov50c40_10bit_4096x3072_dphy_30fps_nopd_regs,.mipi_freq_idx = 2,},{.bus_fmt = OV50C40_MEDIA_BUS_FMT ,.width = 4096, .height = 3072,.reg_list = ov50c40_10bit_8192x6144_dphy_regs,.mipi_freq_idx = 1,},};
修复改动:取消 8K 模式注释,互换两组 mode 内部时序、寄存器、MIPI 索引、帧率参数,8192 条目绑定原生 8K 硬件配置,4096 条目保留 binning 降采样配置,保障完整 RAW 输出。
2.MIPI 像素速率区分适配
8K 高分辨率传输恢复 1250M 高频时钟,仅 4K 降采样场景使用 384M 降频降低 EMI
// 适配修改,8K场景使用1250M基准#define PIXEL_RATE_WITH_1250M(MIPI_FREQ_1250M / 10 * 4 * 2)
3.拜耳格式与翻转配套保留,防止 RAW 色彩错乱
// 关闭硬件翻转后原生像素排列为SRGGB,固定总线格式#define OV50C40_MEDIA_BUS_FMTMEDIA_BUS_FMT_SRGGB10_1X10
4.裁剪宏适配硬件 8128 裁切,原生感光仍为 8192
#define RK3588_TEST#define DST_WIDTH 8128#define DST_HEIGHT 6144
(二)HAL 配置:camera3_profiles_rk3588.xml
负责向 Android 上层上报相机硬件能力,同步更新裁剪后有效画幅 8128×6144,新增 8K YUV/RAW 输出通路:
1.更新 sensor 感光尺寸参数
2.扩展 8K 数据流支持
原配置仅 BLOB RAW 支持 8K,修复后新增 YUV、IMPLEMENTATION_DEFINED 两路 8128 输出流,APP 可直接拉取 8K 预览与 RAW 拍照:
3.同步 8K 分辨率帧时长、stall 延迟参数,保证 30fps 稳定输出
(三)ISP 调校文件:ov50c40_HZGA06_ZE0082C1.json
仅保留硬件边缘裁剪逻辑,不改动原生 8192 感光阵列相关配置,保证暗角矫正匹配 8128 输出画幅:
1.sensor 标定层固定裁切宽度
"sensor_calib":{ "resolution":{ "width":8128, "height":6144 }, "CISFlip":0}
2.LSC 暗角分区同步适配 8128 宽度
"resolutionAll":[{ "name":"8128x6144", "lsc_sect_size_x":[508,508,...], "lsc_sect_size_y":[384,384,...]}]
3.全光源 LSC 标定表统一命名为 8128x6144,D65/A/CWF/D50 等光源矫正参数同步匹配;AF、PD 对焦整套优化参数全部保留,不干扰 RAW 成像输出。
四、修复完成验证标准
1.RAW 数据校验:抓取底层帧数据,sensor 原生感光尺寸为 8192×6144,ISP 输出有效画幅 8128×6144,不再输出 4096 降采样 RAW;
2.基础功能:相机正常打开,8K 预览无黑边、横纹、色偏,画面缩放位置正常;
3.拍照链路:点击拍摄可生成完整 8K 高清照片,画面细节完整,变焦无裁切偏移;
4.辅助功能:自动对焦、强光点光源抑制、暗光成像功能稳定,无反复拉风箱、对焦乱跑问题。
五、调试总结
1.高像素传感器修改分辨率,必须内核驱动、Camera HAL、ISP IQ 三层参数完全对齐,单一层修改极易造成 RAW、预览异常;
2.区分两个尺寸概念:sensor 原生感光阵列 8192×6144(硬件物理像素)、硬件裁剪输出 8128×6144(去除边缘坏点有效画面),调试时不可混淆;
3.不能仅依靠 APP 预览判断通路正常,必须抓取底层 RAW 帧校验分辨率,规避底层尺寸错配的隐蔽故障;
4.画幅改动会联动 MIPI 时序、拜耳排列、对焦参数,修复后需多光照、多变焦档位全场景复测,保障成像稳定。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !