我是靠谱客的博主 孝顺钻石,最近开发中收集的这篇文章主要介绍高通msm8953平台摄像头移植,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

硬件平台:msm8953

系统版本:android9

摄像头sensor:gc2385

由于项目需要,在高通msm8953上使用GC2385摄像头,移植成功,记录下移植过程碰到的问题。首先要向摄像头供应商要sensor的驱动,驱动的获取很重要,要拿到正确硬件平台及安卓版本的驱动,否则会走不少弯路咯。

1、添加驱动文件

在vendorqcomproprietarymm-cameramm-camera2media-controllermodulessensorssensorlibs 路径下新建gc2385文件夹,拷贝gc2385.c、gc2385.h、Android.mk三个文件,Android.mk文件需要做修改,否则有可能会编译出错,可以把其他sensor驱动的Android.mk文件拷贝过来,修改LOCAL_C_INCLUDES 、LOCAL_SRC_FILES、LOCAL_MODULE三个地方即可

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../../../../../mm-camerasdk/sensor/includes/
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../../sensors/module/
LOCAL_C_INCLUDES += gc2385_lib.h

LOCAL_SRC_FILES:= gc2385_lib.c
LOCAL_MODULE           := libmmcamera_gc2385
LOCAL_SHARED_LIBRARIES := libcutils

ifeq ($(MM_DEBUG),true)
LOCAL_SHARED_LIBRARIES += liblog
endif

LOCAL_MODULE_OWNER := qti
LOCAL_PROPRIETARY_MODULE := true

ifeq ($(32_BIT_FLAG), true)
LOCAL_32_BIT_ONLY := true
endif

include $(BUILD_SHARED_LIBRARY)

2、配置电源

注意kernel/msm-4.9/arch/arm64/boot/dts/qcom/msm8953-camera-sensor-mtp.dtsi文件AVDD、DVDD、IOVDD的配置,由于一般按照默认配置,不需要修改,调试的时候,注意这几个电压是否有输出。

3、上电时序

上电时序在文件gc2385_lib.h,根据sensor的时序图,注意对应引脚电平变化顺序,如果有增加或删减,需要.size,此处由于电路板的画图的时候引脚化的有问题,RESET和STANDBY时序做了下修改。

 

4、 msm8953_camera.xm配置添加sensor

修改vendorqcomproprietarymm-cameramm-camera2media-controllermodulessensorsconfigsmsm8953_camera.xml文件,添加GC2385配置,其中CameraId与msm8953-camera-sensor-mtp.dtsi中的qcom,camera@0, qcom,camera@1 and qcom,camera@2一致,CSIDCore与qcom,csid-sd-index一致

<CameraModuleConfig>
    <CameraId>0</CameraId>
    <SensorName>gc2385</SensorName>
    <FlashName>pmic</FlashName>
    <EepromName>gc2385_otp</EepromName>
    <ChromatixName>gc2385_chromatix</ChromatixName>
    <ModesSupported>1</ModesSupported>
    <Position>FRONT</Position>
    <MountAngle>270</MountAngle>
    <CSIInfo>
      <CSIDCore>0</CSIDCore>
      <LaneMask>0x3</LaneMask>
      <LaneAssign>0x4320</LaneAssign>
      <ComboMode>0</ComboMode>
    </CSIInfo>
    <LensInfo>
      <FocalLength>3.83</FocalLength>
      <FNumber>2.0</FNumber>
      <TotalFocusDistance>1.97</TotalFocusDistance>
      <HorizontalViewAngle>63.2</HorizontalViewAngle>
      <VerticalViewAngle>49.0</VerticalViewAngle>
      <MinFocusDistance>0.1</MinFocusDistance>
    </LensInfo>
  </CameraModuleConfig>

5、添加Chromatix代码

在vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/chromatix/0310下添加chromatix_gc2385文件夹

6、添加gc2385_chromatix.xml

vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/configs 下添加 gc2385_chromatix.xml,修改Android.mk

include $(CLEAR_VARS)
LOCAL_MODULE:= gc2385_chromatix.xml
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_SRC_FILES := gc2385_chromatix.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/camera
LOCAL_MODULE_OWNER := qti
include $(BUILD_PREBUILT)

7、 添加.so文件

vendor/qcom/proprietary/common/config/device-vendor.mk下添加相关编译目标so文件

#GC2385 add start
MM_CAMERA += gc2385_chromatix.xml
MM_CAMERA += libmmcamera_gc2385
MM_CAMERA += libchromatix_gc2385_common
MM_CAMERA += libchromatix_gc2385_postproc
MM_CAMERA += libchromatix_gc2385_snapshot
MM_CAMERA += libchromatix_gc2385_cpp_preview
MM_CAMERA += libchromatix_gc2385_cpp_snapshot
MM_CAMERA += libchromatix_gc2385_cpp_liveshot
MM_CAMERA += libchromatix_gc2385_zsl_preview
#GC2385 add end

8、编译

编译后查看out/target/product/msm8953_64/vendor/lib下是否生成如下so文件

9、调试

首先调试驱动,查看日志,是否有提示 gc2385 probe succeeded 的提示,如果提示 gc2385 read id fail,排查电源及上电时序,在调试驱动时,可直接push libmmcamera_gc2385.so库。

probe成功后,下载system.img、vendor.img、userdata.img,开启相机软件闪退,折腾了一段时间,查不出什么原因,直接全编全刷了一下,图像出来了,后面有空再查找原因。

10、镜像和180°旋转

摄像头图像左右镜像直接修改sensor驱动文件

#define GC2385_MIRROR_FLIP_ENABLE 1 

摄像头图像旋转180°,修改msm8953_camera.xml

   <MountAngle>270</MountAngle>

只能旋转180°,不能旋转90°,如果确实需要旋转90°,只能旋转摄像头了。

最后

以上就是孝顺钻石为你收集整理的高通msm8953平台摄像头移植的全部内容,希望文章能够帮你解决高通msm8953平台摄像头移植所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部