二、高通相机bringup 流程

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于stm32的超声波测距

文章目录 一、HC-SR04超声波测距模块说明1、产品特点2、电气参数3、HC-SR04超声波测距模块4、超声波时序图 二、 CUBEMX配置三、keil配置代码 模块选择&#xff1a; stm32f103c8芯片 HC-SR04超声波测距模块 一、HC-SR04超声波测距模块说明 1、产品特点 HC-SR04 超声波测距模块…

UNIX网络编程卷一 学习笔记 第十七章 ioctl操作

ioctl函数传统上一直作为那些不适合归入现有已定义类别的特性的系统接口。POSIX正在通过创建特定的包装函数来代替ioctl函数的某些功能&#xff0c;以取而代之的是那些已被POSIX标准化的函数。例如&#xff0c;Unix终端接口传统上使用ioctl函数访问&#xff0c;而POSIX为终端创…

CVE漏洞复现-CVE-2023-32233 NetFilter权限提升

CVE-2023-32233 NetFilter权限提升 Netfilter是Linux 内核中的网络数据包处理框架&#xff08;iptables&#xff09;通过各种规则和过滤器&#xff0c;基于数据包的来源、目标地址、协议类型、端口号等信息&#xff0c;控制网络流量和数据包的转发和处理具体&#xff0c;详情请…

灵活使用Postman环境变量和全局变量,提高接口测试效率!

目录 前言&#xff1a; 环境变量和全局变量的概念 环境变量和全局变量的使用方法 1. 定义变量 2. 使用变量 环境变量和全局变量的实例代码 变量的继承和覆盖 变量的动态设置 总结&#xff1a; 前言&#xff1a; Postman是一个流行的API开发和接口测试工具&#xff0c;…

RK平台使用i2c-tools调试

简介 i2ctool是嵌入式开发过程中调试i2c设备常用的工具包&#xff0c;其中比较常用的有&#xff1a;i2cdetect、i2cdump、i2cset、i2cget。 RK平台的SDK大部分默认都会带这个工具&#xff0c;如果没有编译进去或者找不到的情况下可以自己从网上下载编译进去&#xff1a;https:…

JavaScript中的Hook技术:特性、优点、缺点和使用场景

引言&#xff1a; 随着JavaScript的不断发展&#xff0c;开发者们正在寻找更灵活和可扩展的方式来修改或扩展现有的代码。其中一种广泛应用的技术是"Hook"&#xff0c;它允许开发者拦截和修改现有的函数或方法的行为。本文将详细介绍JavaScript中的Hook技术&#xf…

Hive库表基本操作

Hive基本操作-库、表 规则语法 大小写规则: 1. hive的数据库名、表名都不区分大小写 2. 建议关键字大写 复制代码 命名规则&#xff1a; 1. 名字不能使用数字开头 2. 不能使用关键字 3. 尽量不使用特殊符号 复制代码 库操作语法 创建数据库 创建数据库的本质就是在hive…

javascript基础十六:Ajax 原理是什么?如何实现?

一、是什么 AJAX全称(Async Javascript and XML) 即异步的JavaScript 和XML&#xff0c;是一种创建交互式网页应用的网页开发技术&#xff0c;可以在不重新加载整个网页的情况下&#xff0c;与服务器交换数据&#xff0c;并且更新部分网页 Ajax的原理简单来说通过XmlHttpRequ…

算法复杂度分析(一)

求第n个斐波那契数列 斐波那契数 0 1 1 2 3 5 数列默认从0开始 public static int fib1(int n) {if(n < 1) return n;return fib1(n-1) fib1(n-2);}public static int fib2(int n) {if(n < 1) return n;int first 0;int secend 1;for (int i 0; i < n-1; i) {int…

solr教程

一&#xff1a;安装配置 下载完成之后&#xff0c;解压solr文件&#xff0c;解压tomcat 1.1 在tomcat安装solr,并且建立solrCore 把solr5.5目录下的server/solr-webapp/webapp 重命名为solr,并且放置到tomcat/webapp的目录下。 打开tomcat/webapp/solr/WEB-INF/web.xml新建…

DevOps - (3)使用SOPS 和Terraform来加密/解密敏感信息文件

一&#xff1a;背景 每个人都想将自己的敏感数据以加密格式存储在一个安全的地方。例如我们的数据库的账号密码&#xff0c;不能以纯文本的方式来记录。让我们利用Mozilla SOPS以一种安全的方式实现它。SOPS支持将文件加密为二进制文件&#xff0c;除此之外&#xff0c;它还具…

LNMT架构之LNMT与nginx动静分离

LNMT架构之LNMT与nginx动静分离 目录 一、实验前提环境配置 &#xff08;一&#xff09;关闭防火墙&#xff0c;安装本地yum &#xff08;二&#xff09;部署tomcat &#xff08;三&#xff09;部署Mariadb &#xff08;四&#xff09;部署nginx 二、动静分离 步骤一&a…

RISC-V IDE MRS使用笔记(八):实现局域网下的远程调试功能

RISC-V IDE MRS使用笔记(八)&#xff1a;实现局域网下的远程调试功能 1.原理介绍 MRS调试时上位机与硬件的通信基于gdb客户端与服务端的连接。调试时&#xff0c;首先启动openocd以挂载gdbserver的服务到指定端口上。通信建立后&#xff0c;监听到界面操作后以gdb指令的形式发…

Springboot +spring security,OAuth2 四种授权模式概念

一.简介 这篇文章来讲下Spring Security OAuth2 四种授权模式。 二.什么是OAuth2 OAuth 2.0 是一种用于授权的开放标准&#xff0c;允许用户授权第三方应用程序访问他们的资源&#xff0c;例如照片、视频或其他个人信息。OAuth 2.0 提供了一些不同的授权模式&#xff0c;包括…

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑&#xff0c;而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…

Django实现接口自动化平台(五)httprunner(4.x)介绍【持续更新中】

上一章&#xff1a; Django实现接口自动化平台&#xff08;四&#xff09;解决跨域问题【持续更新中】_做测试的喵酱的博客-CSDN博客 下一章&#xff1a; 一、httpruner介绍 1.1 背景&#xff1a; 之所以学习httpruner的用法&#xff0c;是要把httpruner嵌入我们的自动化平…

自动缩放Kubernetes上的Kinesis Data Streams应用程序

想要学习如何在Kubernetes上自动缩放您的Kinesis Data Streams消费者应用程序&#xff0c;以便节省成本并提高资源效率吗&#xff1f;本文提供了一个逐步指南&#xff0c;教您如何实现这一目标。 通过利用Kubernetes对Kinesis消费者应用程序进行自动缩放&#xff0c;您可以从其…

2023年陕西彬州第八届半程马拉松赛153pb完赛

1、赛事背景 2023年6月3日&#xff0c;我参加了2023陕西彬州第八届半程马拉松赛&#xff0c;最终153完赛&#xff0c;PB了5分钟。起跑时间早上7点30分&#xff0c;毕竟6月天气也开始热了。天气预报显示当天还是小到中雨&#xff0c;上次铜川宜君半马也是雨天跑的&#xff0c;阴…

lecory 波形二进制文件头(.trc)定义

1.文件头&#xff0c;从0字节开始 byte[] lecroy_trc_header new byte[]{0x23,0x39,0x30,0x30,0x32,0x30,0x30,0x30,0x31,0x34,0x34,0x57,0x41,0x56,0x45,0x44,0x45,0x53,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x45,0x43,0x52,0x4F,0x59,0x5F,0x32,0x5F,0x33,0x…

研发工程师玩转Kubernetes——使用Ingress进行路由

依据微服务理念&#xff0c;我们希望每个独立的功能由一个服务支持。比如有两个接口&#xff1a;http://www.xxx.com/plus和http://www.xxx.com/minus&#xff0c;前者由一个叫plus-service的服务支持&#xff0c;后者由一个叫minus-service的服务支持。这样就需要一个路由层&a…