概述
硬件平台: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平台摄像头移植所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复