高通Camera IFE时钟配置

news2024/11/25 12:51:56

本文主要分享高通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:

minHorizontalBlanking = RoundUp(\frac{outputPixClkRate*csidHBIcycles}{CSIDclockRate})

*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需要使用以下公式:

minVerticalBlanking=RoundUp(\frac{outputPixClkRate*minCSIDVerticalBlanking}{CSIDclockRate})

其中的minCSIDVerticalBlanking计算公式为:

minCSIDVerticalBlanking=\frac{csidVBIcycles}{Ceiling((outputWidthPixels+csidHBIcycles),32)}

*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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/526106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序源码1000套

简介 不懂开发&#xff0c;但又想拥有自己的小程序怎么办&#xff1f;或者想要基于某个小程序框架做二次开发&#xff1f;如下截图&#xff0c;免费提供1000套微信小程序源码包合集&#xff08;收集过程中发现网上资源大部分居然还要收费&#xff0c;真的很无语&#xff0c;人…

【TypeScript】TS条件类型(十)

🐱 个人主页:不叫猫先生 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫优质专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料以及文中源…

【burpsuite安全练兵场-服务端9】服务端请求伪造SSRF漏洞-7个实验(全)

前言&#xff1a; 介绍&#xff1a; 博主&#xff1a;网络安全领域狂热爱好者&#xff08;承诺在CSDN永久无偿分享文章&#xff09;。 殊荣&#xff1a;CSDN网络安全领域优质创作者&#xff0c;2022年双十一业务安全保卫战-某厂第一名&#xff0c;某厂特邀数字业务安全研究员&…

UI自动化测试框架之cypress

​ 官网地址&#xff1a;JavaScript End to End Testing Framework | cypress.io testing tools cypress由一个免费的、开源的、本地安装的应用程序和一个用于记录您的测试的仪表服务组成。是前端测试的工具&#xff0c;解决开发人员和QA工程师在测试应用程序时面临的关键痛点…

跟光磊学Java-Windows版Java17开发环境搭建

如果想要开发Java程序/Java项目之前&#xff0c;必须要安装和配置JDK&#xff0c;这里的JDK表示Java17&#xff0c;不过下载软件的时候&#xff0c;强烈推荐大家一定要去软件的官网下载,因为官网提供的软件版本是最新的&#xff0c;会修复旧版本遗留的问题&#xff0c;这样我们…

教育edusrc证书站点漏洞挖掘

前言 以下涉及到的漏洞已提交至edusrc教育行业漏洞报告平台并已修复&#xff0c;该文章仅用于交流学习&#xff0c;切勿利用相关信息非法测试&#xff0c;如有不足之处&#xff0c;欢迎各位大佬指点。 正文 0x00 敏感信息泄漏 访问存在漏洞的站点首页&#xff0c;分析BurpS…

【数据科学赛】PromptCBLUE:首个中文医疗场景LLM评测基准 #¥16000

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 更多比赛信息见 CompHub主页[1] 以下信息由AI辅助创作&#xff0c;仅供参考&#xff0c;请以官网为准&#xff08;文末…

华为认证HCIA+HCIP题库(超500题含答案解析)

本套题库包含以下内容&#xff0c;覆盖数通Datacom方向HCIA和HCIP两科考题&#xff0c;考试代码为H12-811、H12-821、H12-831。有需要的可以直接拿。 首先来看看各科目的考试内容及分值占比。所有满分均为1000分&#xff0c;只需600分即可拿证&#xff0c;考试时间均为60分钟。…

CTF比赛必备常用工具

文中介绍的所有工具&#xff0c;均在压缩包中&#xff0c;结合本文更便于大家下载使用&#xff0c;快速上手。 CTF常用工具下载 CTF比赛必备常用工具 一、什么是CTF二、比赛中工具的重要性三、常用MISC&#xff08;杂项&#xff09;工具1. Audacity &#xff08;提取莫斯密码辅…

C++【继承】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 16.11.17 文章目录 &#x1f307;前言&#x1f3d9;️正文1、继承的概念1.1、本质1.2、作用1.3、实际例子 2、继承的定义2.1、格式2.2、…

linux创建新用户

只需要四步就能创建一个新的linux用户 1.打开终端 快捷键CtrlAltT 2.创建用户和密码 sudo useradd -m aaa 创建用户名为aaa的用户 -m&#xff1a;自动建立用户的登入目录 sudo是允许系统管理员让普通用户执行root命令的一个工具&#xff08;获取权限&#xff09; 这里会需要输…

Packet Tracer安装包及安装教程(8.0版本)

Packet Tracer安装包下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/19BbCZzSxukKKdsdaqw7dHw 提取码&#xff1a;6666 &#xff08;若果链接失效&#xff0c;可在评论区留言。&#xff09; 安装步骤 1、解压缩文件&#xff0c;得到 cisco packet tr…

[架构之路-198] - 功能需求与分析:1张图、 4个阶段、16个步骤,系统分析问题与彻底解决问题的方法:问题界定、原因分析、方案确认、落实执行

目录 前言&#xff1a;一张图&#xff1a; 一、界定问题&#xff1a;找到真正的问题&#xff0c;问题就解决了一大半 1.发现异常&#xff1a; 2.优先顺序&#xff1a; 3.描述现状&#xff1a; 4.确定目标&#xff1a; 二、要因分析&#xff1a;透过表象&#xff0c;直达…

Synopsys的仿真软件Hspice 2022版在Windows系统上的下载安装教程

目录 前言一、Hspice安装二、安装许可管理工具三、配置使用总结 前言 Synopsys HSPICE是电子电路仿真领域非常强大的软件&#xff0c;具有模拟和分析MOS元件的算法。HSPICE用于分析基本的电子电路&#xff0c;如晶体管&#xff0c;不包括电子元件&#xff0c;如微控制器。该软…

虚拟机搭建宝蓝德中间件(三)

2.1. 准备介质 2.1.1. 介质包&#xff1a; 宝兰德中间件的介质名为&#xff1a;BES-9.5.2.4703.tar.gz&#xff0c;该介质包适用于不同操作系统和 硬件平台。 2.1.2. 上传 BES952 单机版介质&#xff0c;上传路径&#xff1a;/home/bes 2.1.3. 新建 BES 中间件目录&#xff0c;…

基于阿里云物联网平台的Android物联网软件框架

Android 物联网APP 提示&#xff1a;该工程是连接阿里云物联网平台的模板代码&#xff0c;将MQTT连接、JSON数据的订阅发布等操作封装&#xff0c;并且能够迅速将获取到的数据显示到手机界面上。使用了Servier进行网络连接的逻辑操作&#xff0c;并且使用自定义控件&#xff0…

uni-app嵌入微信小程序原生代码

使用uni-app有时需要用到微信小程序原生代码 解析: uni-app项目结构跟原生小程序的项目结构有着不一致的区别,如果说开发过程中必须要使用原生代码,就需要把原生代码作为组件的方式在uni-app项目中引入使用官网为了应对这一个需求,就给出了以下方法,供开发者实现 wxcomponent…

SQL注入详解(全网最全,万字长文)

漏洞原因 一些概念&#xff1a; SQL&#xff1a;用于数据库中的标准数据查询语言。 web分为前端和后端&#xff0c;前端负责进行展示&#xff0c;后端负责处理来自前端的请求并提供前端展示的资源。 而数据库就是存储资源的地方。 而服务器获取数据的方法就是使用SQL语句进…

Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ SQLite简介 SQLite是一种小巧的嵌入式数据库&#xff0c;使用方便&#xff0c;开发简单&#xff0c;如同mysql&#xff0c;oracle那样&#xff0c;SQLite也采用SQL语句管理数据&#xff0c;由于它属于轻型数据库&#xff0…

【网络】- TCP/IP四层(五层)协议 - 数据链路层

一、概述 TCP/IP 在最初定义时&#xff0c;是一个四层的体系结构&#xff0c;包括应用层、传输层、网络层、网络接口层。由于最下面的网络接口层并没有什么具有内容。因此&#xff0c;在学习计算机网络原理时&#xff0c;往往采用折中的办法&#xff0c;综合了 OSI 和 TCP/IP 的…