和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、预览花屏、分屏、卡屏
二、打开相机概率性红屏
三、打开相机概率性黑屏
四、某一次报错BG ROI bigger than CAMIF window 1920x1080 !
五、总结

一、预览花屏、分屏、卡屏

1. 现象

分屏

花屏

打开智能识物APP,底层sensor输出默认选择1632x1224(200w)这组sensor输出,就会导致出现花屏、分屏等问题,
但是选择全尺寸3264x2448(800w)输出时,又不会出现这样的问题。
经过测量DVDD电压,发现小尺寸1632x1224(200w)出现异常。

DVDD

可以看到,在使用小尺寸1632x1224(200w)输出时,DVDD在1.2V到1.4V直接不停的跳,导致供电电压不稳定,
但是在使用小尺寸全尺寸3264x2448(800w)输出,这路供电可以固定到1.4V,很稳定,因此全尺寸不会出现问题!

硬件原理图

那么问题来了?
为啥全尺寸3264x2448(800w)输出,这路供电可以固定到1.4V,使用小尺寸1632x1224(200w)输出时,DVDD在1.2V到1.4V直接不停的跳。

原因:本身这路电是给系统供电的,软件上我们并不会控制pm89l6_S3这路电压。
pm89l6_S3会自身根据系统负载去动态改变电压,
当使用全尺寸输出的时候,系统负载大,所以能稳定到1.4V,
当使用200w尺寸输出的时候,系统负载小,S3自身会跳到1.2V。

2. 解决方案:

  • 1.硬件上,这路供电切换到一个稳定的供电电压!

  • 2.软件上:
    修改cam_vdig-supply = <&pm8916_s3>电压,固定到1.4V供电。
    kernel/arch/arm/boot/dts/qcom/msm8909-pm8916-camera-sensor-i18.dtsi

qcom,camera@0 {
···cam_vdig-supply = <&pm8916_s3>; cam_vio-supply = <&pm8916_l10>;cam_vaf-supply = <&pm8916_l11>;qcom,cam-vreg-name = "cam_vdig","cam_vio", "cam_vaf";qcom,cam-vreg-type = <0 0 0>;qcom,cam-vreg-min-voltage = <1400000 1800000  2800000>;qcom,cam-vreg-max-voltage = <1400000 1800000  2800000>;
···
}

//修改pm8916_s3最大值为1.4V
kernel/arch/arm/boot/dts/qcom/msm8916-regulator.dtsi

    rpm-regulator-smpa3 {status = "okay";pm8916_s3: regulator-s3 {regulator-min-microvolt = <1200000>;//修改最大值为1.4Vregulator-max-microvolt = <1400000>;qcom,init-voltage = <1200000>;status = "okay";};  };

二、打开相机概率性红屏

1.现象

红屏

从log中看,sensor是有数据输出的,点击拍照也能拍,
只不过拍出来的画面和预览的画面是一样的,全红。

2.原因

由下图可以看出,AVDD上电比IO还快,不符合上电时序的要求,就可能造成许多莫名其妙的bug。

image

image

不同厂家的sensor,对时序的要求不一样,像OV5675对三路上电的时序就没有严格的要求,gc8034相对来说要严格一下。

另外一点:
ov5675,只有XSHUDTN,

gc8034有PWDN和Reset脚。

相当于ov5675的XSHUDTN完成了gc8034有PWDN和Reset脚所有的功能。

但是我们gc8034硬件连接上,只使用了PWDN,
如果芯片不是很好,也可能带来莫名其妙的bug,图像异常,黑屏等,存在这样的隐患。

如果没有RST,时序必须满足:GC8034有power on reset,即检测到AVDD有低电平到高电平的动作,sensor内部会做reset;但需要要求AVDD在DVDD之后上电才会有效

三、打开相机概率性黑屏

1.现象

预览黑屏

从log中分析:

04-01 17:26:17.536 424 4171 E mm-camera: mct_bus_sof_thread_run: SOF freeze; Sending error message
04-01 17:26:17.539 403 4148 E mm-camera-intf: mm_camera_event_notify: Camera Event DAEMON DIED received
04-01 17:26:17.541 3838 3838 E Camera FW: wzm Error callback 100

这就是SOF freeze:有示 ISP 未从内核接收到 SOF IRQ,必须检查CSID/CSIPHY/CAMIF,也就是说ISP没有接收传感器传输的帧
一般来说,这个问题排查比较复杂。

2. 原因

我们基于以下3个方面去排查问题:

  • 1.Timming(上电时序)

  • 2.sensor setting(与vendor商的fae确认)

  • 3.调整settle_cnt看是否有优化

st**atic struct msm_camera_csi2_params gc8034_csi_params = {.csid_params = {.lane_cnt = 4,   .lut_params = {.num_cid = ARRAY_SIZE(gc8034_cid_cfg),.vc_cfg = {&gc8034_cid_cfg[0],&gc8034_cid_cfg[1],},   },   },.csiphy_params = {.lane_cnt = 4, .settle_cnt = 0x10,//0x14//120ns},
};

不过,sof的问题,最重要的还是前面的上电时序要符合,并且reset脚要接
我们换了三星s5k4h7的sensor,对上电时序没要求,又有reset功能,就很稳定,没出现过sof freezon的问题

四、某一次报错BG ROI bigger than CAMIF window 1920x1080 !

1.现象

报错:

02-13 06:49:13.392 416 4068 D mm-camera: c2d_thread_handle_process_buf_event:190 input buf index 3
02-13 06:49:13.396 416 4103 E mm-camera: bg_stats_config: BG ROI bigger than CAMIF window 1920x1080 !
02-13 06:49:13.396 416 4103 E mm-camera: bg_stats_config: Horizontal: 618 63 9, Vertical: 236 47 21
02-13 06:49:13.396 416 4103 E mm-camera: isp_set_stats_fullsize_config: Stats Trigger update failed

2.解决方案

解决办法

--- a/mm-camera2/media-controller/modules/isp/hw/modules/stats/stats32/bg_stats.c
+++ b/mm-camera2/media-controller/modules/isp/hw/modules/stats/stats32/bg_stats.c
@@ -110,6 +110,30 @@ static int bg_stats_config(isp_stats_entry_t *entry,
pcmd->rgnHNum = pix_settings->stats_cfg.aec_config.bg_config.grid_info.h_num - 1;
pcmd->rgnVNum = pix_settings->stats_cfg.aec_config.bg_config.grid_info.v_num - 1; + if (pcmd->rgnVOffset * 2 + ((pcmd->rgnVNum + 1) * (pcmd->rgnHeight + 1)) > camif_window_h_t) {
+ CDBG_ERROR("%s: BG ROI bigger than CAMIF window %ux%u !", __func__,
+ camif_window_w_t, camif_window_h_t);
+ CDBG_ERROR("%s: Vertical: %u %u %u", __func__,
+ pcmd->rgnVOffset, pcmd->rgnVNum, pcmd->rgnHeight);
+ bg_rgn_height = (camif_window_h_t - pcmd->rgnVOffset * 2)/pcmd->rgnVNum;
+ if (bg_rgn_height < MIN_RGN_HEIGHT) {
+ bg_rgn_height = MIN_RGN_HEIGHT;
+ }
+ pcmd->rgnHeight = FLOOR2(bg_rgn_height) - 1;
+ }
+
+ if (pcmd->rgnHOffset * 2 + ((pcmd->rgnHNum + 1) * (pcmd->rgnWidth + 1)) > camif_window_w_t) {
+ CDBG_ERROR("%s: BG ROI bigger than CAMIF window %ux%u !", __func__,
+ camif_window_w_t, camif_window_h_t);
+ CDBG_ERROR("%s: Horizontal: %u %u %u", __func__,
+ pcmd->rgnHOffset, pcmd->rgnHNum, pcmd->rgnWidth);
+ bg_rgn_height = (camif_window_w_t - pcmd->rgnHOffset * 2)/pcmd->rgnHNum;
+ if (bg_rgn_width < MIN_RGN_WIDTH) {
+ bg_rgn_width = MIN_RGN_WIDTH;
+ }
+ pcmd->rgnWidth = FLOOR2(bg_rgn_width) - 1;
+ }
+
pcmd->rMax = 255 - 16;
pcmd->grMax = 255 - 16;
pcmd->bMax = 255 - 16; 

五、总结

Camera预研时,要极力排查上电时序、硬件设计是否符合sensor规范,避免不必要的bug。

原文链接:https://www.jianshu.com/p/3e2898c0dde4

友情推荐:

Android 开发干货集锦

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

点个在看,方便您使用时快速查找!

Camera 花屏、分屏、卡屏,黑屏问题分析相关推荐

  1. 黑苹果睡眠重启后死机_iPhone卡屏、死机、黑屏?| 学会这招,秒解!

    对于喜欢折腾手机的用户来说,最害怕遇到的就是手机卡屏.死机.黑屏了,当然,遇到这样的情况也不必担心,因为这些问题大都有一些万能的解决办法:刷机重启.卸载重装.清除数据.这些办法可能对于Android用 ...

  2. 2022.05.20-电脑切换全屏与非全屏(特别是谷歌浏览器)的时候会发生卡顿黑屏

    切换全屏与非全屏的时候会发生卡顿黑屏 可能是自己之前插的两块屏幕,后来一块屏幕断掉了,再将那一块屏幕接上去就好了 这个很有可能是谷歌浏览器造成的,因为往往是谷歌浏览器切屏的时候才会出现这个问题,而其他 ...

  3. 笔记本换固态后开机慢(长时间卡在黑屏)

    关于笔记本换固态后开机慢(长时间卡在黑屏) 机型联想z485 因为机械速度慢,所以想把电脑升下级,装好了固态,加个内存条,

  4. Ubuntu20.04 启动卡在黑屏的解决方法

    最近在VM中新安装了Ubuntu20.04,悲催的是启动后一直卡在黑屏:在坑里爬了几天后,终于出坑: 以下是整理的实际操作步骤,希望若有入坑的尽快出坑: 1.启动虚拟机时,进入Grub画面选择相应内核 ...

  5. 录制出来的是黑屏_打开好哈录屏或者OBS直播软件黑屏问题解决,亲测有效!

    在官网上下载好哈录屏或者是OBS直播软件后,打开软件后,添加"显示器捕捉",但一直黑屏,录制出来的视频文件只有声音,没有具体画面,今天小编给大家讲解如何解决这个问题. Obs黑屏如 ...

  6. win10锁定计算机后黑屏,Win10系统如何设置锁屏后不睡眠不黑屏

    大家都知道当win10系统锁屏之后一会就回自动进入睡眠并黑屏,要使用的话需要我们唤醒计算机,但是很多用户希望锁屏后不睡眠不黑屏,该怎么操作呢,本文就给大家带来Win10系统设置锁屏后不睡眠不黑屏的具体 ...

  7. 安装黑屏_含能公司黑屏管理助力智能化改造

    近期,含能公司仪表计量检测中心组织人员安装.调试化工一厂.化工六厂黑屏管理软件,为黑屏管理平稳运行奠定基础. 近年来,银光集团在对标学习东岳集团和先进企业管理经验的基础上,陆续在部分生产线推行黑屏管理 ...

  8. 戴尔电脑开机黑屏怎么办_笔记本电脑开机黑屏怎么办

    笔记本电脑开机黑屏是什么原因,电脑黑屏问题如何修复解决 众所周知笔记本电脑的散热性能不是特别好,长时间使用笔记本电脑就可能会出现笔记本发烫的状况,严重的有可能造成笔记本电脑出现问题.人们在使用笔记本电 ...

  9. 联想微型计算机电脑黑屏怎么做系统,联想电脑黑屏怎么办 5种方法轻松排除黑屏故障...

    电脑黑屏是容易出现的现象,尤其是使用时间比较长的电脑.电脑黑屏一般是由硬件损坏.系统不兼容或显卡驱动出现问题导致的.那么,应该如何解决呢?下面我们就以联想电脑为例来详细介绍联想电脑黑屏的问题! 联想电 ...

  10. 应用程序错误电脑黑屏_Win10电脑老是遇到黑屏问题,学会这几招,彻底解决系统故障-win10开机黑屏...

    在使用Windows 10的过程中,我们会遇到许多问题,但它们都不会像黑屏那样烦人,因为黑屏时不会收到任何错误代码或消息,提示我们从何处开始进行故障排除. 在Windows 10操作系统中,出现黑屏可 ...

最新文章

  1. AfxOleInit()和::CoInitialize(NULL)区别
  2. android 网络编程--URL获取数据/图片
  3. c语言enum能自定义吗,18、C语言 —— 枚举enum
  4. 002_Jsp三大指令
  5. Jenkins部署Python项目实战
  6. linux 空格函数,linux c语言的split函数和空格处理函数
  7. springMVC配置文件spring-servlet.xml中mvc:annotation-driven /的意义
  8. “所有一切”和“介于之间”:欧美“新媒体”艺术
  9. SFML 与 VS2015 的安装配置
  10. android开发学术报告,基于Android应用的安全防护技术研究
  11. 027.3 反射技术 简单应用
  12. FastRVC功能记录
  13. Atitit q2016 q4 doc list on home ntpc.docx
  14. 不讲武德,Java分布式面试题集合含答案!
  15. 颂钵带给我们是什么感受
  16. 硬盘都有哪些型号和规格大小
  17. 荒野行动电脑版一直连接服务器,荒野行动PC版进不去怎么办 电脑版连接不上服务器的解决方法...
  18. 机器人轨迹规划(熊友伦)
  19. 推荐系统 --- 数据工程 --- 用户标签
  20. php 抓取淘宝商品详情

热门文章

  1. 《Java语言程序设计》✍基础知识整理
  2. HG255D刷flash记录
  3. java模拟器_KEmulator(java模拟器)
  4. iis php 映射,iis添加php的模块映射
  5. 王道考研操作系统笔记(第一章)附:王道考研408所有PPT和思维导图
  6. 如何用c#来制作一个activeX控件或类似的东西
  7. 121、华为交换机配置手册
  8. CC2530串口通信
  9. CC2530存储器映射
  10. bpa软件视频教程,BPA是什么软件