0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

rk3588 android12 OV50C40传感器RAW格式异常修复:还原8192x6144原生分辨率

jf_44130326 来源:Linux1024 作者:Linux1024 2026-02-27 08:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在RK3588平台适配OV50C40高分辨率图像传感器的过程中,我们发现传感器RAW格式输出分辨率出现异常,被错误配置为4096x3072,而非硬件原生的8192x6144,直接导致相机拍照分辨率未达硬件规格,还伴随部分配置不匹配引发的相机启动、拍照异常问题。本次通过驱动层、ISP算法配置层、Camera HAL层的全链路参数修正,彻底解决了该RAW格式分辨率错误问题,修复后相机可正常打开,拍照功能完全达标,各项关联功能也适配正常。

本文将详细拆解本次OV50C40传感器的修复思路与核心代码修改点,为高分辨率图像传感器在RK3588平台的适配提供可落地的参考。

wKgZO2mg4gaAVUgPAADfO3ZNyU8701.png

核心修复思路

本次修复围绕还原OV50C40传感器8192x6144原生RAW分辨率展开,核心原则是全链路参数统一匹配原生分辨率,同时修正因分辨率不匹配引发的传感器翻转、镜头阴影校正(LSC)、自动对焦(AF)、相位检测(PD)等关联配置异常,最终实现:

1.RAW格式输出分辨率恢复为8192x6144;

2.相机正常打开、拍照功能无异常;

3.传感器对焦、LSC、PD等辅助功能适配正常。

修复涉及三个核心层级的代码修改,实现从硬件驱动到算法配置、上层HAL的全链路参数对齐。

关键代码修改细节(含修复前后对比)

本次修复的代码文件集中在RK3588平台的相机适配相关目录,涵盖ISP配置、Camera HAL配置、Kernel传感器驱动三大模块,以下为各模块的核心修改点及代码对比。

一、ISP算法配置层:修正传感器与算法核心参数

文件路径:

external/camera_engine_rkaiq/iqfiles/isp3x/ov50c40_HZGA06_ZE0082C1.json

作为ISP算法的核心配置文件,此处需同步分辨率参数,并修正所有关联的算法配置,确保与原生分辨率匹配。

1.传感器基础分辨率+翻转配置(核心)

修复前代码

"sensor": { "width":8192,"height":6144,"CISFlip":1,"CISMirror":0},

修复后代码

"sensor":{"width":8128,// 修正:硬件实际有效像素宽度(8192为标称值,8128为有效输出)"height":6144,"CISFlip":0, // 修正:关闭翻转,解决画面上下颠倒问题"CISMirror":0},

修改说明

•宽度从8192调整为8128,匹配传感器硬件实际输出的有效像素;

•关闭CISFlip翻转(1→0),解决分辨率调整后画面翻转的异常问题。

2. LSC镜头阴影校正参数适配

修复前代码

"LSC":{"LSC_Enable":1,"LSC_Resolution":"8192x6144","LSC_HSegSize":512,"LSC_VSegSize":384,"LSC_D65":"LSC_OV50C40_D65_8192x6144.bin"}

修复后代码

"LSC":{"LSC_Enable":1,"LSC_Resolution":"8128x6144",// 修正:匹配有效像素分辨率"LSC_HSegSize":508,     // 修正:8128/16=508,原512适配8192,分辨率不匹配会导致LSC失效"LSC_VSegSize":384,"LSC_D65":"LSC_OV50C40_D65_8128x6144.bin"// 修正:关联对应分辨率的LSC参数表}

修改说明

•所有光照条件(D65/A/CWF等)的LSC参数文件名同步改为8128x6144,确保算法加载正确的校正表;

•水平分段尺寸从512改为508,计算公式为「有效宽度/16」,解决LSC校正区域错位问题。

3.自动对焦(AF)配置优化

修复前代码

"AF":{"FullRangeTbl":[0,16,32,48,64],"FineSearchStep":2,"TrigThers":0.2,"BrightnessPauseEn":1,"PointLightThers":0.1}

修复后代码

"AF":{"FullRangeTbl":[0,8,16,24,32,40,48,56,64],"FullRangeTbl_Len":9,// 新增:明确数组长度,避免算法解析异常"FineSearchStep":null,// 移除:无效参数,导致对焦步长计算错误"TrigThers":0.075,  // 修正:降低触发阈值,提升对焦灵敏度"BrightnessPauseEn":0,// 关闭:亮度暂停检测,避免对焦频繁中断"PointLightThers":0.3 // 提升:点光源检测阈值,减少误触发}

二、Camera HAL层:更新上层流配置与传感器信息

文件路径:

hardware/rockchip/camera/etc/camera/camera3_profiles_rk3588.xml

HAL层作为应用与底层驱动的中间层,需同步更新分辨率相关的流配置和传感器信息,确保上层应用识别正确的硬件规格。

核心:分辨率流配置修正

修复前代码

 33333333 333333334096x30724096x3072

修复后代码

  33333333 33333333  333333338128x6144 8192x6144     8128x6144    

修改说明

•新增8128x6144分辨率的BLOB/YCbCr流配置,让上层应用支持原生高分辨率输出;

•修正sensor-info中的有效阵列/像素阵列尺寸,解决上层识别分辨率与底层不匹配的问题。

三、Kernel驱动层:修正传感器硬件驱动参数

文件路径:kernel-5.10/drivers/media/i2c/ov50c40.c

驱动层是传感器硬件的直接控制层,需修正分辨率模式、像素时钟、总线格式等核心硬件参数,还原原生分辨率的硬件驱动逻辑。

1.分辨率模式+时序配置(核心)

修复前代码

// 错误的4096x3072高帧率模式(被错误设为默认)staticconststruct ov50c40_mode ov50c40_mode_4096x3072_30fps = { .width=4096, .height=3072, .hts=4224, .vts=3100, .mipi_freq_idx=1, // 低频率索引 .pix_clk=625000000,};// 被注释的原生8192x6144模式// static const struct ov50c40_mode ov50c40_mode_8192x6144_15fps = {//  .width = 8192,//  .height = 6144,//  .hts = 8320,//  .vts = 6176,//  .mipi_freq_idx = 2,//  .pix_clk = 1250000000,// };// 默认模式赋值错误conststruct ov50c40_mode *ov50c40_get_default_mode(void) {return&ov50c40_mode_4096x3072_30fps;}

修复后代码

// 注释错误的4096x3072模式,还原原生8192x6144模式// static const struct ov50c40_mode ov50c40_mode_4096x3072_30fps = {//  .width = 4096,//  .height = 3072,//  .hts = 4224,//  .vts = 3100,//  .mipi_freq_idx = 1,//  .pix_clk = 625000000,// };// 还原并修正原生8192x6144模式(有效像素8128)staticconststruct ov50c40_mode ov50c40_mode_8192x6144_15fps = { .width=8128,  // 修正:有效像素宽度 .height=6144, .hts=8256,   // 修正:时序匹配8128宽度 .vts=6176, .mipi_freq_idx=2, // 高频率索引,适配高分辨率带宽 .pix_clk=1250000000,};// 默认模式改为原生分辨率conststruct ov50c40_mode *ov50c40_get_default_mode(void) {return&ov50c40_mode_8192x6144_15fps;}

2.像素时钟+总线格式修正

修复前代码

// 像素时钟计算错误#defineOV50C40_PIX_CLK_1250M (1250 * 1000 * 1000)// 总线格式错误(SGRBG10不符合传感器规格)staticconststructov50c40_mbus_info mbus_info = { .code = MEDIA_BUS_FMT_SGRBG10_1X10, .pixeltype = V4L2_PIX_FMT_SGRBG10,};

修复后代码

// 修正像素时钟宏定义(保持数值,补充注释)#defineOV50C40_PIX_CLK_1250M (1250 * 1000 * 1000) // 适配8192x6144分辨率的像素时钟// 修正总线格式为SRGGB10(匹配OV50C40色彩滤波阵列)staticconststructov50c40_mbus_infombus_info = { .code = MEDIA_BUS_FMT_SRGGB10_1X10, .pixeltype = V4L2_PIX_FMT_SRGGB10,};

修改说明

•总线格式从SGRBG10改为SRGGB10,匹配OV50C40传感器的原生色彩滤波阵列(R-G-G-B排列),解决画面色彩失真问题;

•像素时钟保持1250MHz,适配8192x6144高分辨率的带宽需求。

修复后验证效果

本次全链路参数修正完成后,对OV50C40传感器在RK3588平台的功能进行了全面实测,核心验证结果如下:

1.基础功能:相机可正常打开,拍照、预览功能无异常,无闪退、卡死等问题;

2.分辨率达标:RAW格式输出分辨率成功还原为传感器原生的8192x6144(有效像素8128x6144),拍照分辨率符合硬件规格;

3.关联功能正常:LSC镜头阴影校正、自动对焦、PD相位检测等功能均正常工作,对焦触发灵敏、画面无阴影、相位检测精准;

4.性能稳定:8128x6144高分辨率下,帧率输出稳定,无丢帧、花屏、拖影等画质问题。

总结

1.本次修复核心是全链路分辨率参数对齐:从驱动层的硬件分辨率模式,到ISP算法层的LSC/AF/PD配置,再到HAL层的流配置,全部同步为OV50C40原生的8192x6144(有效8128x6144);

2.代码修改需兼顾“数值修正”和“关联配置适配”:比如分辨率调整后,需同步修正LSC分段尺寸、AF触发阈值、总线格式等,避免单一参数修改引发新异常;

3.修复前后的代码对比清晰展示了核心问题点:分辨率模式赋值错误、有效像素未匹配、翻转配置异常、总线格式不兼容是本次问题的核心诱因。

更多嵌入式相机传感器适配、RK3588平台硬件驱动开发的技术细节,欢迎一起交流探讨~

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2577

    文章

    55499

    浏览量

    793912
  • RK3588
    +关注

    关注

    8

    文章

    588

    浏览量

    7554
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3588 Type-C一线通,DP显示输出实战指南

    使用扩展坞连接显示。一、方案概述RK3588是瑞芯微旗舰级高性能处理,其Type-C接口内置了USB3.1+DPAltMode双模支持能力。通过简单的软件配置
    的头像 发表于 04-03 08:33 1.1w次阅读
    <b class='flag-5'>RK3588</b> Type-<b class='flag-5'>C</b>一线通,DP显示输出实战指南

    避坑指南!RK3588 D/C-PHY硬件设计致命误区,别让Camera和LCD“打架”(android12

    在嵌入式硬件设计中,RK3588 凭借强大的算力和丰富的外设接口,成为直播机、工业平板、智能终端等设备的热门主控。但其中MIPI D/C-PHY(数据 / 控制物理层) 的设计往往被忽略—— 它直接
    的头像 发表于 02-04 17:40 4053次阅读
    避坑指南!<b class='flag-5'>RK3588</b> D/<b class='flag-5'>C</b>-PHY硬件设计致命误区,别让Camera和LCD“打架”(<b class='flag-5'>android12</b>)

    一文打通Rockchip DP调试:从原理到实战,覆盖RK3399/RK3576/RK3588全平台

    嵌入式开发中,DisplayPort(DP)接口的调试常让工程师头疼 —— 不同芯片特性差异大、Type-C 与标准口配置不同、高分辨率输出异常、MST 多屏适配难… 尤其是 Rockchip
    的头像 发表于 02-04 16:14 963次阅读
    一文打通Rockchip DP调试:从原理到实战,覆盖<b class='flag-5'>RK</b>3399/<b class='flag-5'>RK</b>3576/<b class='flag-5'>RK3588</b>全平台

    RK3588平台USB摄像头调试实战:从报错到稳定运行

    在嵌入式开发中,RK3588 凭借强劲的算力常被用于边缘计算、工业视觉等场景,而 USB 摄像头作为常见外设,调试过程中难免遇到各类 “卡壳” 问题。最近我们在 RK3588 上调试 USB 摄像头
    的头像 发表于 02-04 16:13 673次阅读

    RK3588 平台 MPP 编译 + VPU 格式测试

                大家在做瑞芯微  RK3588  开发时,是不是经常困惑「怎么验证  VPU  到底支持哪些编解码格式?」「 MPP  媒体库该怎么编译?」今天手把手带你走一遍流程
    的头像 发表于 12-25 11:33 2336次阅读
    <b class='flag-5'>RK3588</b> 平台 MPP 编译 + VPU <b class='flag-5'>格式</b>测试

    迅为RK3588开发板Android系统烧写及注意事项

    迅为RK3588开发板Android系统烧写及注意事项
    的头像 发表于 12-03 15:17 7393次阅读
    迅为<b class='flag-5'>RK3588</b>开发板<b class='flag-5'>Android</b>系统烧写及注意事项

    RK3588 Android12 外设相机能力升级:前置切换+高清录制双buff加持

    在基于 RK3588 平台的 Android12 系统开发中,外设相机(USB 相机)的适配体验一直是开发者关注的重点。近期我们针对外设相机进行了一系列针对性优化,通过调整核心配置文件与硬件抽象层
    的头像 发表于 11-20 17:49 1696次阅读
    <b class='flag-5'>RK3588</b> <b class='flag-5'>Android12</b> 外设相机能力升级:前置切换+高清录制双buff加持

    迅为RK3588开发板Android系统修改屏幕分辨率和density

    先来了解下屏幕相关的基本概念 修改屏幕分辨率和 density 有俩种方法。 方法一: 输入以下命令查看分辨率的大小,如下图所示: wm size 输入以下命令修改屏幕分辨率,(x
    发表于 08-12 16:53

    RK3588数据手册

    RK3588的资料
    发表于 08-01 16:08 54次下载

    RK这2款旗舰芯片RK3588 PK RK3576,谁是最优选

    RK3576:支持最高 16M Pixel ISP 带有 HDR 和 3DNR。• RK3588:配备 48M Pixel ISP 带有 HDR 和 3DNR,RK3588 的像素 ISP
    发表于 07-10 18:24

    如何使用Banana Pi BPI-M7,BPI-M5 Pro 瑞芯微RK3588,RK3576芯片摄像头功能

    , volatile 11.5.7 切换其他分辨率ov13850支持多个分辨率的输出,默认为2112/1568。现将输出分辨率改为4224x
    发表于 05-30 17:52

    RK3576 vs RK3588:为何越来越多的开发者转向RK3576?

    ]项目RK3576RK3588 CPU4×Cortex-A72@2.2GHz + 4×A53@1.8GHz + M0 协处理4×Cortex-A76@2.4GHz + 4×A55@1.8GHz 算力
    发表于 05-30 08:46

    RK3588参数与主要特性 RK3588数据手册解读

    RK3588参数与主要特性 RK3588数据手册解读
    的头像 发表于 05-19 18:34 1.5w次阅读
    <b class='flag-5'>RK3588</b>参数与主要特性  <b class='flag-5'>RK3588</b>数据手册解读

    RK3588S和RK3588S2差异说明

    RK3588S2 较 RK3588S少了一组 MIPI D/C-PHY CSI_RX PORT0,新增一组 MIPI DPHY CSI_RX PORT1,同时接口位置除 MIPI D/C
    的头像 发表于 05-13 14:23 3203次阅读
    <b class='flag-5'>RK3588</b>S和<b class='flag-5'>RK3588</b>S2差异说明

    CX3上的AR0245传感器的探头控制分辨率错误怎么解决?

    你好。我正在开发一款使用 AR0234CS 传感器和 CX3( CYUSB3065-BZXI )芯片的相机,并努力获得正确的视频流分辨率。 该传感器能够以 120 fps 提供 1920 x
    发表于 05-12 07:02