本文主要分享高通camera驱动中minHorizontalBlanking(最小水平消隐)和minVerticalBlanking(最小垂直消隐)配置项的计算方法;

IFE时钟频率由以下sensor参数所决定:

对应sensor mode的输入IFE的帧尺寸(width&height);

水平和垂直消隐周期(horizontal and vertical blanking periods);

输出时钟频率(output clock rate);

输入IFE的帧尺寸和消隐周期由对应sensor的XML配置文件指定,例如下列的典型某一sensor mode的相关配置:

    <resolutionData><colorFilterArrangement>BAYER_BGGR</colorFilterArrangement><streamInfo><streamConfiguration><vc range="[0,3]">0</vc><dt>43</dt><frameDimension><xStart>0</xStart><yStart>0</yStart><width>3264</width><height>2448</height></frameDimension><bitWidth>10</bitWidth><type>IMAGE</type></streamConfiguration></streamInfo><lineLengthPixelClock>1932</lineLengthPixelClock><frameLengthLines>2482</frameLengthLines><minHorizontalBlanking>0</minHorizontalBlanking><minVerticalBlanking>0</minVerticalBlanking><outputPixelClock>288000000</outputPixelClock>......

上面是高通平台Camera的驱动文件的示例,其中各个sensor mode(每一组resolutionData)中的frameDimension、lineLengthPixelClock frameLengthLines、minHorizontalBlanking、minVerticalBlanking等数据,包括寄存器配置一般都是由sensor供应商(sensor vendor/FAE)提供;但是XML中的HBI(minHorizontalBlanking)和VBI(minVerticalBlanking)只是供应商依据sensor系列的平均值给出的,不一定就是最小的消隐周期;有时如果采用供应商提供的该项平均值,有可能会影响IFE的时钟频率与实际sensor输出速率不匹配,进而导致CAMIF(camera interface)发生溢出(overflow);

为了获取到最佳且正确的消隐周期,高通给出的计算方法(Spectra HW’s ability,含义不明待补充)如下:

1. 打开KMD csid和camif的log等级获取信息:

adb shell "echo 0x80 > /sys/kernel/debug/camera_ife/ife_csid_debug"

adb shell "echo 0x1 > /sys/kernel/debug/camera_ife/ife_camif_debug"

adb logcat -b kernel > kmd.log(或adb shell dmesg > kmd.log)

*高通KMD log各等级开启请参考:高通 Camx debug log控制_小驰笔记的博客-CSDN博客

2.在log中搜索关键字 cam_ife_csid_get_hbi_vbi 可以获取到csidHBIcycles[11:0]和csidVBIcycles[31:0],下面是高通示例log:

07-25 03:52:51.427 0 0 W cam_ife_csid_get_hbi_vbi: 292 callbacks suppressed
07-25 03:52:51.427 0 0 I CAM_INFO: CAM-ISP: cam_ife_csid_get_hbi_vbi: 3090 Device csid4 index 0 Resource 4 HBI: 0x665016d VBI: 0x32e98
07-25 03:52:51.427 0 0 I CAM_INFO: CAM-ISP: cam_ife_csid_get_hbi_vbi: 3090 Device csid4 index 1 Resource 4 HBI: 0x665016d VBI: 0x32e98
07-25 03:52:51.461 0 0 I CAM_INFO: CAM-ISP: cam_ife_csid_get_hbi_vbi: 3090 Device csid4 index 0 Resource 4 HBI: 0x665016d VBI: 0x32e99
07-25 03:52:51.461 0 0 I CAM_INFO: CAM-ISP: cam_ife_csid_get_hbi_vbi: 3090 Device csid4 index 1 Resource 4 HBI: 0x665016d VBI: 0x32e99
07-25 03:52:51.494 0 0 I CAM_INFO: CAM-ISP: cam_ife_csid_get_hbi_vbi: 3090 Device csid4 index 0 Resource 4 HBI: 0x665016d VBI: 0x32e98
07-25 03:52:51.494 0 0 I CAM_INFO: CAM-ISP: cam_ife_csid_get_hbi_vbi: 3090 Device csid4 index 1 Resource 4 HBI: 0x665016d VBI: 0x32e98
07-25 03:52:51.527 0 0 I CAM_INFO: CAM-ISP: cam_ife_csid_get_hbi_vbi: 3090 Device csid4 index 0 Resource 4 HBI: 0x665016d VBI: 0x32e98
07-25 03:52:51.527 0 0 I CAM_INFO: CAM-ISP: cam_ife_csid_get_hbi_vbi: 3090 Device csid4 index 1 Resource 4 HBI: 0x665016d VBI: 0x32e98

即csidHBIcycles为0x665016d 的后12位(HBI[11:0]),则数据为0x16d;

同理csidVBIcycles为0x32e98 的后32位,因为数据本身不足32位,则数据为0x00032e98;

我们需要使用以下公式获取min HBI:

*RoundUp是向上取整

  • csidHBIcycles就是上文通过log获取到的HBI后12位信息;
  • outputPixClkRate是sensor XML中的outputPixelClock配置项;
  • CSIDclockRate是用于此usecase的CSID块的时钟速率。当usecase处于活动状态时,可以使用这些命令来读取:

adb shell cat /d/clk/cam_cc_ife_0_csid_clk/clk_measure

adb shell cat /d/clk/cam_cc_ife_1_csid_clk/clk_measure

要根据usecase使用的是IFE_0还是IFE_1来选择正确的频率;

获取min VBI需要使用以下公式:

其中的minCSIDVerticalBlanking计算公式为:

*Ceiling(a,b)函数是指将a向上取整至最接近b的倍数

  • outputWidthPixels指的是sensor XML中对应sensor mode下的frameDimension中的width;

*本文内容来自《80-p9301-97_p_camera_sensor_driver_bring-up_guide》3.2.5节

*适用平台SM8150/SM8250

高通Camera IFE时钟配置相关推荐

  1. 高通camera调试

    高通camera驱动分析 ./qcom/proprietary/mm-still/codec_v1/omx/jpeg_encoder/Android.mk:15:CHROMATIX_VERSION : ...

  2. 高通Camera 软件工程师的成长之路

    本文以个人的工作学习经历来描述一 Camera 软件工程师的披荆斩棘之路,时间从大学开始,以至任职于高通 Camera 软件工程师结束,杂以本人学习过程当中的一系列学习笔记和博客文章,绝对是干货满满, ...

  3. 高通平台android 环境配置编译及开发经验总结

    完全转自:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  4. 高通平台android 环境配置编译及开发经验总结【转】

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  5. 高通 Camera HAL3:CAMX、CHI-CDK 详解

    网上关于高通CameraHAL3的介绍文档不多,之前做高通CameraHAL3的一些总结.整理,杂乱了一点,将就着看吧. 一.初步认知 高通CameraHAL3的架构很庞大,代码量也很巨大. 先对CA ...

  6. 高通Camera数字成像系统简介

    转载: https://deepinout.com/qcom-camx-chi/qcom-camx-system-intro.html 整理:小驰笔记 相机的硬件层,作为整个框架的最底层,通过硬件模块 ...

  7. 高通Camera bring up软件流程【转】

    本文转载自:http://blog.csdn.net/liwei16611/article/details/51279658 高通camera bring up分为两种类型:YUV和bayer bri ...

  8. 高通 Camera HAL3:项目开发技术点总结

    做高通 Camera HAL3开发的一些技术点的总结.整理. 做个记录,方便后续查阅. 1.目录.so.配置文件 productName是项目名 out Target路径:\out\target\pr ...

  9. 高通APQ8074 spi 接口配置

    高通APQ8074 spi 接口配置 8074 平台含有两个BLSP(BAM Low-Speed Peripheral) , 每一个BLSP含有两个QUP, 每一个QUP可以被配置为I2C, SPI, ...

最新文章

  1. App项目实战之路(二):API篇
  2. js iframe是否加载完成,加载完成执行函数
  3. signature=c4f11bb5142d9f6ce0876b3cc0d888af,PROVISIONAL SIGNATURE SCHEMES
  4. android判断以太网还是wifi,对比平台--WiFi和以太网之间的区别
  5. IOS项目之分层MVVM
  6. BOM 的 变量 (技术, 生产, 销售, 计划)
  7. cgic: 为C语言编写CGI的C函数库
  8. 代码改动和配置文件相分离
  9. java百钱白鸡的算法
  10. appium+python+iOS 环境搭建与使用中常见问题的解决方案链接
  11. Maven学习总结(35)——Maven项目错误 JAX-RS (REST Web Services) 2.0 can not be installed问题
  12. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_1_方法引用基本介绍...
  13. PHP 微信网页授权开发
  14. 如何判断绩效管理系统实施是否有效
  15. 直接ISO启动工具ventoy
  16. python求平均工资_python实现求和,求平均值——函数
  17. 如何根据ACPI规范来获取I/O APIC控制寄存器的地址
  18. win10黑屏假死怎么解决
  19. 计量经济学笔记1:简介
  20. java 中定义Person类

热门文章

  1. 有些政府性质的网站对非IE浏览器不怎么支持,该如何处理?
  2. 公共基础知识:生活常识之垃圾分类
  3. [单片机芯片]CH32V203的USB1 HID库调试经验分享
  4. 计算机相关双人相声,适合学生表演的双人相声剧本
  5. 使用Java压缩文件生成各种zip包总结(整理为工具类版)
  6. 2018年下半年信息系统项目管理师考试真题附答案解析(4)
  7. 视频技术系列 - 谈谈毫米波之二,应用篇
  8. OSPF及一类LSA、二类LSA
  9. IPv4编址及子网划分
  10. 点赞!盲人程序员独立开发吃鸡游戏,眼睛看不到,心却明亮