RK3399安卓系统下的摄像头开发

一、概述

本文描述了rk3399在安卓系统下摄像头开发的过程、遇到的一些问题及相应的解决思路,希望能帮助到各位。

二、准备

这里需要准备RK3399的开发板,带mipi接口的摄像头,在虚拟机搭建的ubuntu环境下编译,准备好开发板的安卓系统源码。

三、调试

3.1 说明

RK3399 开发板分别带有两个 MIPI,一个 DVP 摄像头接口,rk3399平台可以支持多种不同接口的Camera,如MIPI,DVP,UVC,USB camera等。
对于DVP,MIPI接口的,是在cam_board.xml文件注册camera,isp控制器接收;
对于UVC,USB接口的只要移除cam_board.xml文件就可以,省得再去修改。
输出格式:像素低的camera一般用yuv格式,像素高的camera一般用raw格式。
官方主要支持的摄像头列表如下ː
13M:OV13850/IMX214-0AQH5
8M:OV8825/OV8820/OV8858-Z(R1A)/OV8858-R2A
5M:OV5648/OV5640/OV5645
2M:OV2680/OV2685
其它可以参考官方手册。

3.2 Android Camera驱动

① 安卓层驱动主要集成在hardware/rockchip/camera/SiliconImage/isi/drv目录下:
OVxxxx_MIPI_YUV/source/_PARREL.c 模组驱动文件,根据需求调试;
OVxxxx_MIPI_YUV/source/_tables.c 模组初始化数据,需要摄像头原厂支持;
OVxxxx_MIPI_YUV/include_priv/_priv.h 模组头文件,定义摄像头ID;
OVxxxx_MIPI_YUV/calib/_lens_xxxx.xml raw输出格式,模组tunning参数。
② 关于安卓层的mk文件修改说明:
新增摄像头驱动主要修改源码目录hardware/rockchip/camera/Config下的user.mk文件,这里需要添加编译规则,将驱动文件编译进系统,生成库文件:

ifeq ($(strip $(TARGET_BOARD_PLATFORM)), rk3399)
PRODUCT_PACKAGES += \
    libisp_isi_drv_OV2659 \
+    	libisp_isi_drv_OVxxxx \
        libisp_isi_drv_OV8825 \
        libisp_isi_drv_OV8858 \
        libisp_isi_drv_GS8604 \
        libisp_isi_drv_OV5648 \
        libisp_isi_drv_OV5640 \
        libisp_isi_drv_OV13850 \
        libisp_isi_drv_IMX214 \
        libisp_isi_drv_HM2057 \
        libisp_isi_drv_HM5040 \
        libisp_isi_drv_SP2518 \
        libisp_isi_drv_GC0308 \
        libisp_isi_drv_GC2035 \
        libisp_isi_drv_GC2155 \
        libisp_isi_drv_GC2355 \
        libisp_isi_drv_NT99252 \
        libisp_isi_drv_OV2680 \
        libisp_isi_drv_OV5645 \
        libisp_isi_drv_TC358749XBG \
        libisp_isi_drv_RN6752 \
        libisp_isi_drv_OV2685 \
        libisp_isi_drv_XC7022 \
        libisp_isi_drv_XC6130
endif

修改编译模块后会在目录out\target\product\rk3399_mid\system\lib\hw下生成libisp_isi_drv_OVxxxx.so文件,设备运行后可以在文件系统中目录/system/lib/hw/下查看有没有相应驱动。
③ 需要在目录hardware/rockchip/camera/Config/下结合当前摄像头参数修改cam_board_rk3399.xml文件,该文件也主要描述了摄像头硬件信息和软件支持功能,这里例举一部分比较重要的参数配置,结合寄存器的值和模组规格书:

<?xml version="1.0" ?>
<BoardFile>
		<BoardXmlVersion version="v0.0xf.0">
		</BoardXmlVersion>	
		<CamDevie>
			<HardWareInfo>
				<Sensor>
					<SensorName name="OV5640" ></SensorName>
					<SensorDevID IDname="CAMSYS_DEVID_SENSOR_1A"></SensorDevID>
					<SensorHostDevID busnum="CAMSYS_DEVID_MARVIN" ></SensorHostDevID>
					<SensorI2cBusNum busnum="3"></SensorI2cBusNum>
					<SensorI2cAddrByte byte="2"></SensorI2cAddrByte>
					<SensorI2cRate rate="100000"></SensorI2cRate>
					<SensorAvdd name="NC" min="0" max="0" delay="0"></SensorAvdd>
					<SensorDvdd name="NC" min="0" max="0" delay="0"></SensorDvdd>
					<SensorDovdd name="NC" min="18000000" max="18000000" delay="5000"></SensorDovdd>
					<SensorMclk mclk="24000000" delay="1000"></SensorMclk>
					<SensorGpioPwen ioname="RK30_PIN0_PC1" active="1" delay="1000"></SensorGpioPwen>
					<SensorGpioRst ioname="NC" active="0" delay="1000"></SensorGpioRst>
					<SensorGpioPwdn ioname="RK30_PIN2_PB6" active="1" delay="2000"></SensorGpioPwdn>
					<SensorFacing facing="back"></SensorFacing>
					<SensorInterface mode="CCIR601"></SensorInterface>
					<SensorMirrorFlip mirror="0"></SensorMirrorFlip>
					<SensorOrientation orientation="180"></SensorOrientation>
					<SensorPowerupSequence seq="1234"></SensorPowerupSequence>					
					<SensorFovParemeter h="60.0" v="60.0"></SensorFovParemeter>
					<SensorAWB_Frame_Skip fps="15"></SensorAWB_Frame_Skip>					
					<SensorPhy phyMode="CamSys_Phy_Cif" sensor_d0_to_cif_d ="2" cif_num="0" sensorFmt=
RK3399是一款颇受欢迎的处理器芯片,常用于运行Android开发板。下面是一个RK3399 Android开发教程的简要介绍: 1. 环境搭建:首先,您需要一台装有Windows、Linux或Mac操作系统的计算机。接下来,您需要下载和安装Android Studio,这是一个用于开发Android应用程序的集成开发环境(IDE)。 2. 获取源代码:访问Rockchip官方网站,下载RK3399Android源代码。解压缩源代码并将其存储在您的计算机中的适当位置。 3. 配置开发环境:打开Android Studio,并通过导入项目的方式将RK3399Android源代码导入到IDE中。确保您的开发环境正确配置。 4. 编译和烧写固件:在Android Studio中,您可以使用Gradle构建工具编译源代码,并生成Android固件。将生成的固件烧写到RK3399开发板上以进行测试和调试。 5. 开发应用程序:使用Android Studio进行应用程序开发。您可以编写Java或Kotlin代码,并使用Android的UI工具包设计用户界面。还可以使用RK3399的硬件功能(如摄像头、传感器等)。 6. 调试和测试:在开发过程中,您可以使用Android Studio提供的调试器来调试您的应用程序。您还可以在RK3399开发板上直接运行和测试应用程序。 7. 发布应用程序:一旦您的应用程序开发完毕并通过了测试,您可以将其打包为APK文件。然后,您可以将APK文件上传到Google Play商店或Rockchip应用商店等应用商店进行发布。 需要注意的是,这只是一个RK3399 Android开发教程的概览,实际开发过程可能更为复杂。建议您参考更详细的教程和文档,以获得更全面和深入的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深入黑暗

创作不易,希望大家支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值