二、高通相机bringup 流程

news2024/11/18 17:29:36

703abd0a3872c1f38b64e06202974a11.gif

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

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

一、相机Sensor 点亮相关的文件
二、Sensor 驱动文件详解

一、相机Sensor 点亮相关的文件

1.1 Sensor 驱动XML以及CPP文件
  • Sensor 文件路径:

vendor\qcom\proprietary\chi-cdk\oem\sensor\sensor_name
这颗Sensor 目录里面会有Sensor厂商提供或者别的项目copy过来成熟的 sensor.cpp 、 sensor.xml 、Android.mk文件

比如:
   vendor\qcom\proprietary\chi-cdk\oem\sensor\imx586
   vendor\qcom\proprietary\chi-cdk\oem\sensor\imx586\imx586.cpp
   vendor\qcom\proprietary\chi-cdk\oem\sensor\imx586\imx586.xml
   vendor\qcom\proprietary\chi-cdk\oem\sensor\imx586\Android.mk
  • sensor*.xml 编译生成bin文件

bin文件编译脚本命令参考如下:
./buildbins_.py --yaml-file-name buildbins_.yaml
buildbins_.yaml 文件中需要把对应的senesor.xml 以及module.xml 添加上
执行py脚本后会生成com.qti.sensor*.bin文件

  • sensor*.cpp 编译生成so 文件

so可以按正常的编译库文件编译

1.2 Module 配置XML文件

Module 配置文件路径:
\vendor\qcom\proprietary\chi-cdk\oem\module
比如:
\vendor\qcom\proprietary\chi-cdk\oem\module\imx586_module.xml

1.3 dtsi 设备树文件

dtsi 设备树文件路径如下:
\kernel\msm-4.19\arch\arm64\boot\dts\vendor\camera
比如target_name-camera-sensor-platform.dtsi
需要编译dtboimage 编译生成dtbo.img ,
另外需要编译bootimge 生成 boot.img, 使用fastboot flash dtbo dtbo.img 刷入手机中(需要跟bootimage一起刷入)

二、Sensor 驱动文件详解

2.1 sensor*.xml 文件详解

sensor*.xml 会包含
power settings,resolution, initialization settings, and exposure settings等
vendor\qcom\proprietary\chi-cdk\api\sensor\camxsensordriver.xsd 可以查看这个xml的详细内容

<sensorDriverData>
 <slaveInfo>
<sensorName>s5_rear</sensorName>
<slaveAddress>0x5a</slaveAddress>
<sensorId> 0x38e1</sensorId>
<i2cFrequencyMode>FAST</i2cFrequencyMode>
//上下电顺序相反
<powerUpSequence> </powerUpSequence>
<powerDownSequence> </powerDownSequence>
 </slaveInfo>
 <resolutionInfo>
<sensorVersion>0</sensorVersion>
      <!-- Res 0 8160*6144 10fps --> 第一个必须Full 全尺寸size
<resolutionData> 
 <streamInfo>
  <streamConfiguration>
   // 50M Full Size   
   <frameDimension>
    <xStart>0</xStart>
    <yStart>0</yStart>
    <width>8160</width>
    <height>6144</height>
   </frameDimension>
  </streamConfiguration>
 </streamInfo>
 <!--Line length pixel clock of frame
   Typically this value is the active width + blanking width -->
 <lineLengthPixelClock>8688</lineLengthPixelClock>
 <!--Frame length lines of frame
   Typically this value is the active height + blanking height -->
 <frameLengthLines>6400</frameLengthLines>
 <!--Output pixel clock -->
 <outputPixelClock>556800000</outputPixelClock>
 // 帧率fps = outputPixelClock/(frameLengthLines*lineLengthPixelClock)
 // 10fps =556800000/(6400*8688)=10.013
 <!--Maximum frame rate -->
 <frameRate>10.07</frameRate>
 
 <regSetting>  </regSetting>
 <!--Crop information for the frame -->
 <cropInfo>
  <left>0</left>
  <right>0</right>
  <top>0</top>
  <bottom>0</bottom>
 </cropInfo>
 <!--List of features / capabilities supported by sensor -->
 <capability>QUADCFA</capability>
 <RemosaicTypeInfo>SWRemosaic</RemosaicTypeInfo>
 <ADCReadoutTime>-6</ADCReadoutTime>
 </resolutionData>
 
 <!-- Res 1 4080*3072 30fps 4:3 -->
 <resolutionData>
  <frameDimension>
   <xStart>0</xStart>
   <yStart>0</yStart>
   <width>4080</width>
   <height>3072</height>
  </frameDimension>
 </resolutionData>
 
 <!-- Res 2 4080*2296 30fps -->
 <resolutionData>
  <frameDimension>
  <xStart>0</xStart>
  <yStart>388</yStart>
  <width>4080</width>
  <height>2296</height>
  </frameDimension>
 </resolutionData>
 
 <!-- Res 3 4080*3072 24fps -->
 <resolutionData>
  <frameDimension>
  <xStart>0</xStart>
  <yStart>0</yStart>
  <width>4080</width>
  <height>3072</height>
 </frameDimension>
  </resolutionInfo>
<exposureControlInfo></exposureControlInfo>
<streamOnSettings> </streamOnSettings>
<streamOffSettings> </streamOffSettings>
<masterSettings></masterSettings>
<initSettings></initSettings>
<resolutionData>
</sensorDriverData>
2.2 module.xml 文件详解

module.xml主要用来存储camera一些特殊信息,比如 lens镜头,mountangles挂载角度,actuator马达,OIS光学防抖,Flash 闪光灯等

<cameraModuleData>
<moduleGroup>
    <moduleConfiguration description="Module configuration">
      <cameraId>0</cameraId>
      <!--Name of the module integrator -->
      <moduleName>sunny</moduleName>
      <sensorName>s5_rear</sensorName>
      <actuatorName> </actuatorName>
      <oisName></oisName>
      <eepromName> </eepromName>
      <flashName> </flashName>
      <pdafName> </pdafName>
      <!--Chromatix name is used to used to open binary.
          Binary name is of the form sensor_model_chromatix.bin -->
      <chromatixName>s5_rear</chromatixName>
      <position>REAR</position>
      <!--Mount Angle -->
      <mountAngle>0</mountAngle>
      <!--CSI Information -->
      <CSIInfo description="CSI Information">
          <laneAssign>0x3210</laneAssign>
          <isComboMode>0</isComboMode>
      </CSIInfo>
      <!--Lens information -->
      <lensInfo description="Lens Information">
        <!--Focal length of the lens in millimeters. -->
        <focalLength>4.05</focalLength>
        <maxYawDegree>180</maxYawDegree>
      </lensInfo>
    </moduleConfiguration>
  </moduleGroup>
   </cameraModuleData>
2.3 dtsi 设备树文件详解

Camera客制化DTSI 参考文档目录
kernel\msm-4.19\Documentation\devicetree\bindings\media\camera
主要配置camera电源LDO, camera IIC通讯配置,根据硬件原理图配置出相应的电压给camera,包括AVDD,DVDD, 和IOVDD

参考文档:

  1. 80-p9301-97_p_camera_sensor_driver_bring-up_guide.pdf

  2. 【腾讯文档】Camera学习知识库
    https://docs.qq.com/doc/DSWZ6dUlNemtUWndv

友情推荐:

Android 开发干货集锦

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

eab8f85f90a6643d31e32f487edf7a0c.jpeg

点击阅读原文,为大佬点赞!

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

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

相关文章

搭建Nextcloud私有云 - 零基础搭建私有云盘并内网穿透远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自cpolar极点云的文章&#xff1a;使用Nextcl…

Python网页开发(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 最近更新时间&#xff1a;2023.5.31 最早更新时间&#xff1a;2023.5.31 文章目录 1. 项目实例2. flask包2. Django包3. mod_wsgi包 flask和Django等包是用来写网站的&#xff0c;但这些包构建的网站直接运行是不稳定的&#xff0c;所以需要Apa…

软件设计师(中级)全过程总结

软考总结目录 宏观  学习感受  阶段划分 微观  1.自己看书和看视频&#xff1a;  2.学习的知识点和课后题进行结合  3.做往年的软考真题  4.提炼出相对来说难以攻克的问题组织分享和讨论  5.小组讨论做错的题并进行结构化 总结学习时间上学习方法上学习形式上 宏…

86.建立主体页面-第二部分

上一节我们的基础的页面已经生成了&#xff0c;页面如下&#xff1a; ● 接着我们来编写标题的样式&#xff0c;标题的调整可以根据自己的需求来调整&#xff0c;我这里就直接写 .heading-primary {font-size: 5.2rem;font-weight: 700;line-height: 1.05;color: #333;lette…

一般测试用例执行过程的四个步骤

一般测试用例执行过程的四个步骤 测试用例的执行过程是软件测试中非常重要的一环&#xff0c;它可以有效验证软件是否符合预期的功能和性能要求&#xff0c;进而保证软件的质量和稳定性。一般来说&#xff0c;测试用例的执行过程可以分为四个步骤&#xff1a; 第一步&#xff1…

【C++】struct 和 class 的区别

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快。时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、示例代码 3、总结 1、缘起 在 C 中&#xff0c;struct 和 class 唯一的区别就在于 默认的访问权限不同。区别如下&#xff1a; …

STM32调试功能

文章目录 STM32调试功能1.硬件接口图2.调试原理3.引脚分配4.调试接口使用方式5.芯片配置 STM32调试功能 1.硬件接口图 2.调试原理 Cortex-M内核&#xff08;M0/M3/M4/M7等&#xff09;包含用于高级调试功能的硬件。利用这些调试功能&#xff0c;可以在取指&#xff08;指令断…

设计模式之~命令模式

定义&#xff1a; 命令模式&#xff08;Command&#xff09;&#xff0c;将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 为什么需要命令模式? 在我们的软件开发系统中…

100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇

历史文章&#xff08;文章累计460&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 用…

Web的基本漏洞--SSRF漏洞

目录 一、SSRF漏洞介绍 1.SSRF漏洞原理 2.SSRF漏洞经常存在的位置 3.攻击方式 4.SSRF漏洞危害 5.SSRF漏洞的防范 一、SSRF漏洞介绍 1.SSRF漏洞原理 SSRF&#xff08;服务器端请求伪造&#xff09;漏洞,出现的原因&#xff1a;是因为服务器与服务器之间有一个服务器内网&…

CVPR2023高质量论文 | Consistent-Teacher:半监督目标检测超强SOTA

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/abs/2209.01589 计算机视觉研究院专栏 作者&#xff1a;Edison_G 《Consistent-Teacher: Towards Reducing …

【C语言】sizeof和strlen的区别【详解】

目录 一.sizeof和strlen的主要区别 二.sizeof和strlen分别讲解&#xff08;含例题和详解&#xff09; 1.sizeof 在计算字符型数组时&#xff08;例题讲解&#xff09; 计算整型数组&#xff08;例题讲解&#xff09; 2.strlen 例子一&#xff08;讲解&#xff09;&#…

运维监控Grafana部署

运维监控Grafana部署 简介 安装 部署形式 Grafana支持两种部署形式 自行部署, 可以部署在操作系统之上. 自行提供服务器, 域名等.Grafana官方托管. 无需安装, 在线注册即可得到一个专属于自己的Grafana, 但是要花钱的. 是一种SaaS服务 我们课程选择方式1 安装 Grafana支…

0531最后的挣扎结束于传说中的段错误

部署训练后的缺陷检测模型 Linux Ubuntu18.04双机尝试 报错&#xff0c;Linux内核或是编译器版本不匹配&#xff0c;多次尝试更改18.04的gcc&#xff0c;g&#xff0c;gcc-arm-linux&#xff0c;garm-linux的代码&#xff0c;尝试在Makefile文件里更改编译器路径、添加LInux内…

智慧工厂主题 Meetup 线下报名+福利开启!IoTDB X EMQ 构建数据平台赋能智能制造...

随着全球制造业的竞争日益激烈&#xff0c;智慧工厂成为当今制造业的重要趋势之一。智慧工厂采用了先进的物联网、大数据等科技手段&#xff0c;以期通过智能化、数字化管理和生产&#xff0c;实现高度自动化和高效生产。因此&#xff0c;如何通过计算分析挖掘生产数据价值&…

【Android定制】修改BUILD_AGO_GMS = no 和 BUILD_GMS=no属性

文章目录 概要名词解释细节小结 概要 在安卓底层源码中&#xff0c;有这样的两个属性&#xff0c;这两个第一眼看上去都像是带不带谷歌&#xff0c;BUILD_AGO_GMS no和BUILD_GMSno有什么区别&#xff1f;&#xff1f; 如果带了谷歌&#xff0c;那么这个设备就差不多是国外定…

SQL数据库的整体结构、索引、MVCC、锁、日志、查询优化,三大范式等

关系型数据库和非关系型数据库 SQL:关系型数据库指的是使用关系模型&#xff08;二维表格模型&#xff09;来组织数据的数据库。(mysql,sqlserver,sqllite,oracle) 关系数据库的优点&#xff1a; 容易理解&#xff0c;符合正常思维方式&#xff1b;都是用表格形式&#xff0c;格…

大数据:Hadoop HDFS,基础架构,去中心化,中心化模式,HDFS基础架构,虚拟机和云服务器部署HDFS

大数据&#xff1a;Hadoop HDFS&#xff0c;基础架构&#xff0c;去中心化&#xff0c;中心化模式&#xff0c;HDFS基础架构&#xff0c;虚拟机和云服务器部署HDFS 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算…

美颜SDK的市场需求与技术策略:商业化落地的关键因素

随着人们对于美的追求不断加强&#xff0c;美颜技术也在不断进步&#xff0c;其中美颜SDK的出现极大地方便了开发者&#xff0c;使得美颜技术能够更加便捷地应用于各种应用中。那么&#xff0c;美颜SDK市场需求和技术策略是什么&#xff1f;商业化落地的关键因素又是什么呢&…

【C++】C++11 线程库

文章目录 一、thread 线程库二、mutex 锁三、atomic 原子性操作四、RAII 管理锁资源五、condition_variable 条件变量 一、thread 线程库 在 C11 之前&#xff0c;由于 C 没有对各平台的线程接口进行封装&#xff0c;所以当涉及到多线程编程时&#xff0c;编写出来的代码都是和…