ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qcom平台 Camera 之调试单刷验证

2021-07-13 21:06:11  阅读:327  来源: 互联网

标签:xml vendor camera 单刷 adb Camera Qcom imx307 调试


前言

由于调试camera 过程中,遇到的问题琐碎繁杂,在此将已经掌握和常用的调试技巧和一些知识点罗列出来,便于快速的开发调试camera。

平台包含msm8909、msm8953,软件平台包含Android5.0、Android8.1、Android9.0。

如有错误,还请交流指正。

调试顺序:

  1. 读取ID(配置上电,系统启动可以正常读取到Camera ID)
  2. 配置vendor 驱动,大家相机可以正常出图

kernel: 一般来说,调试一款camera,需要先配置kernel 的dts配置。

这部分包含,camera的 mipi-csi位置(后、景深、前)、关键引脚配置(mclk、rst、pwn),关键上电配置(IO电、模拟电、数字电)、CCI配置。

vendor:配置好基本的lib文件和chromatix文件,以及平台的camera 配置文件后。

根据规格书或者IC手册,在lib.h 中配置正确的上电时序。在vendor 的lib.h文件中填充正确的slave_addr 地址,和寄存器地址以及期望读取出的值。

目录

前言

一些知识点

调试 vendor 镜像问题

调试 device-vendor.mk

调试 msm8953_camera.xml

调试 XXX_chromatix.xml

调试 Android9.0 安全机制


一些知识点

修改配置好所有驱动后,全编后,刷入 vendor和kernel镜像,进行验证。

Android5.0 vendor驱动在system.img 中,需要刷 system和kernel镜像,进行验证。

调试 vendor 镜像问题

vendor中各个驱动是以so库模块的形式加载的,若改了某个模块对应的文件后,

可以单编,然后单独push 更新这个模块/或者全编全刷整个vendor镜像(建议全刷vendor)。

对应模块位置

文件对应的模块so名称在本目录或者上一级目录的Android.mk中可以找到。

形如:LOCAL_MODULE    := libmmcamera2_mct

生成的so文件位置:

路径:out/target/product/xxx/vendor/lib/libmmcamera2_mct.so

更新方式

adb root

adb remount

adb push out/target/product/xxx/vendor/lib/libmmcamera2_mct.so  /vendor/lib

adb shell sync

adb reboot   // 必须执行同步 sync和reboot重启后生效

例如:

如修改了帧检测函数的等待时间,可以单刷 libmmcamera2_mct.so

vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\mct\bus\mct_bus.c

#define MCT_BUS_NANOSECOND_SCALER 1000000000

+   #define MCT_BUS_NANOSECOND_SCALER 2000000000 // 2s

找到上一级目录对应的module 名称:

vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\mct\Android.mk

LOCAL_MODULE    := libmmcamera2_mct

按照上方的方式单刷这个镜像

out/target/product/xxx/vendor/lib/libmmcamera2_mct.so

调试 device-vendor.mk

camera 配置修改device-vendor.mk 中如下:

包含3种文件:

  1. 驱动lib库文件
  2. 效果库文件
  3. 效果配置文件

代码如:

MM_CAMERA += libmmcamera_imx307 // lib 驱动文件

MM_CAMERA += libchromatix_imx307_common // chromatix 效果文件

MM_CAMERA += libchromatix_imx307_postproc

MM_CAMERA += libchromatix_imx307_snapshot

MM_CAMERA += libchromatix_imx307_video

MM_CAMERA += libchromatix_imx307_cpp_preview

MM_CAMERA += libchromatix_imx307_cpp_snapshot

MM_CAMERA += libchromatix_imx307_cpp_video

MM_CAMERA += libchromatix_imx307_cpp_liveshot

MM_CAMERA += libchromatix_imx307_zsl_preview

MM_CAMERA += libchromatix_imx307_zsl_video

MM_CAMERA += imx307_chromatix.xml // 效果配置文件

这里要注意:

对应的驱动文件所在的Android.mk 中的作用是,是否把对应的文件编译成一个so库。

device-vendor.mk 的作用是,在编译整个vendor镜像的时候,是否把这些对应的camera驱动和配置文件打包进入vendor镜像,(这个是必须的,因为将来出版本是全编,所以必须打包进入vendor镜像)。

imx307_chromatix.xml 这个文件跟随vendor镜像更新

在 adb 下, vendor/data/camera/ 下可以找到对应文件

xxx:/vendor/etc/camera # ls

camera_config.xml  // 这个就是对应的 平台camera 配置文件msm8953_camera.xml

imx307_chromatix.xml  // 上面的效果配置文件

调试 msm8953_camera.xml

路径:

camera_config.xml

这个就是对应的平台camera 配置文件msm8953_camera.xml

配置当前项目支持的camera,主摄、景深、前摄。

配置各个camera的属性:cameraId、sensor名字、对焦马达、eeprom、闪光灯、支持模式、安装位置、安装角度、效果配置索引、mipi-csi配置、镜头等信息。

名称转换如下:

vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\configs\project.mk

else ifeq ($(call is-board-platform-in-list, msm8953),true)

include $(CLEAR_VARS)

LOCAL_MODULE     := camera_config.xml

LOCAL_MODULE_CLASS := EXECUTABLES

LOCAL_SRC_FILES    := msm8953_camera.xml

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/camera

LOCAL_MODULE_OWNER := qti

include $(BUILD_PREBUILT)

endif

adb 下:

vendor/data/camera/camera_config.xml

调试 XXX_chromatix.xml

包含一个camera sensor 所配置支持的效果搭配组合。根据实际需求配置。

对应lib.h中的,对应lib.h中几组不同的寄存器组配置。

路径:

vendor\qcom\proprietary\mm-camera\mm-camera2\media-controller\modules\sensors\configs

代码如:

<ChromatixConfigurationRoot>

  <CommonChromatixInfo>

    <ChromatixName>

      <ISPCommon>imx307_common</ISPCommon>

      <PostProc>imx307_postproc</PostProc>

    </ChromatixName>

  </CommonChromatixInfo>

  <ResolutionChromatixInfo>

    <ChromatixName sensor_resolution_index="0">

      <ISPPreview>imx307_snapshot</ISPPreview>

      <ISPSnapshot>imx307_snapshot</ISPSnapshot>

      <ISPVideo>imx307_snapshot</ISPVideo>

      <CPPPreview>imx307_cpp_preview</CPPPreview>

      <CPPSnapshot>imx307_cpp_snapshot</CPPSnapshot>

      <CPPVideo>imx307_cpp_video</CPPVideo>

      <CPPLiveshot>imx307_cpp_liveshot</CPPLiveshot>

      <A3Preview>imx307_zsl_preview</A3Preview>

      <A3Video>imx307_zsl_video</A3Video>

    </ChromatixName>

    <ChromatixName sensor_resolution_index="1">

      <ISPPreview>imx307_snapshot</ISPPreview>

      <ISPSnapshot>imx307_snapshot</ISPSnapshot>

      <ISPVideo>imx307_video</ISPVideo>

      <CPPPreview>imx307_cpp_preview</CPPPreview>

      <CPPSnapshot>imx307_cpp_snapshot</CPPSnapshot>

      <CPPVideo>imx307_cpp_video</CPPVideo>

      <CPPLiveshot>imx307_cpp_liveshot</CPPLiveshot>

    </ChromatixName>

  </ResolutionChromatixInfo>

</ChromatixConfigurationRoot>

调试 Android9.0 安全机制

Android9.0 的安全机制,如过单刷的镜像和版本不是同一台服务器编译出来的,系统会启动异常。

不利于单刷镜像,调试功能。

不能安装apk

不能remount

必须使用debug版本,执行以下命令。

代码如:

  adb root

  adb disable-verity

  adb reboot

  adb remount

然后去remount或者安装Apk

  adb install -r xxx.apk

标签:xml,vendor,camera,单刷,adb,Camera,Qcom,imx307,调试
来源: https://blog.csdn.net/FANG_YISHAO/article/details/118710712

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有