EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- S `& M8 h$ I; d9 L" ]
1 M. Q; |, N2 r) B9 x本文将讲解 OV13850 摄像头在开发板上的配置过程。接口效果图如下所示: , O7 l7 j4 n% }. l# A7 T& h/ \
3 l7 g- A! y+ f+ @7 R# O. N
6 t9 k% @% j8 ~
21.18.1 设备树配置 1 打开设备树 itop-3399_8.1/kernel/arch/ARM64/boot/dts/rockchip/rk3399-android.dtsi 文件,如下图所示。 camera 我们使用 ISP1 ) q8 B/ z# U; R& }/ P, G- Q
, k) m3 n8 M% y21.18.2 驱动说明 Android 部分: itop-3399_8.1/hardware/rockchip/camera/CameraHal 是摄像头的 HAL 源码 itop-3399_8.1/hardware/rockchip/camera/SiliconImage 是 ISP 库,包括所有支持模组的驱动源码 itop-3399_8.1/hardware/rockchip/camera/SiliconImage/isi/drv/OV13850 是 OV13850 模组的驱动源码 itop-3399_8.1/hardware/rockchip/camera/SiliconImage/isi/drv/OV13850/calib/OV13850.xml 是 OV13850 模组的 调校参数 itop-3399_8.1/hardware/rockchip/camera/Config/cam_board_rk3399.xml 文件可以设置摄像头的参数 Kernel 部分: itop-3399_8.1/kernel/drivers/media/video/rk_camsys 是 CamSys 驱动源码 21.18.3 原理图分析 配置摄像头需要配置摄像头的 GPIO 和时钟,即可完成配置。我们打开摄像头的原理图,如下图所示:
2 L" Z# y7 ]) M' O8 v$ A5 l
/ h+ C b, v/ M( n% L0 V$ b. ~7 P4 Y4 k( C# ]$ E% v
+ a0 s+ V5 F8 M: @' Z/ e
' p0 q, W, [2 g# P7 f* H
' T2 N, h6 G o0 s& o# f1 ]
& E& ~9 V! K7 g- q/ ?- k然后在开发板的底板原理图找到这俩个引脚,再在找到核心板原理图中找到对应的引脚,如下图所示: 3 i) h& N# q! x% ]9 Y
) D; q& v' k2 s' A2 h
/ {: P! ~/ N+ H0 H7 E0 @# F2 z
对应的接口
' c( I. R& }! f( K2 t
: O4 ^8 n2 b5 D0 Q5 C2 g8 Y) V5 ]) I! M) N: \
21.18.4 配置 Android 1 修改 itop-3399_8.1/itop-3399_8.1/hardware/rockchip/camera/Config/cam_board_rk3399.xml 文件用来 注册摄像头,如下图所示: 4 }* X: v7 g" D' m3 X
6 \5 N4 X! s7 _3 q8 n: [' d. Q接下来我们来分析一下分别代表什么含义。 1 Sensor 名称 <SensorName name="OV13850" ></SensorName> 2 Sensor 软件标识 <SensorDevID IDname="CAMSYS_DEVID_SENSOR_1A"></SensorDevID> 保证驱动标识不一致即可,可选项有 CAMSYS_DEVID_SENSOR_1A CAMSYS_DEVID_SENSOR_1B CAMSYS_DEVID_SENSOR_2 3 Sensor 采集控制器的名称 <SensorHostDevID busnum="CAMSYS_DEVID_MARVIN" ></SensorHostDevID> 4 i2c 通道 i2c1,具体通道号请参考摄像头原理图连接主控的 I2C 通道号。原理图查看了是 i2c1。 <SensorI2cBusNum busnum="1"></SensorI2cBusNum> 5 sensor 寄存器地址长度,单位是字节 <SensorI2cAddrByte byte="2"></SensorI2cAddrByte> 6 sensor i2c 频率,单位是 Hz,用于设置 I2C 的频率。 <SensorI2cRate rate="100000"></SensorI2cRate> 7 sensor 输入时钟频率,用于设置摄像头的时钟 <SensorMclk mclk="24000000" delay="1000"></SensorMclk> 8 Sensor AVDD 的 PMU LDO 名称 如果不是连接到 PMU,那么只需填写 NC <SensorAvdd name="NC" min="28000000" max="28000000" delay="0"></SensorAvdd> 9 Sensor DVDD 的 PMU LDO 名称 <SensorDvdd name="NC" min="12000000" max="12000000" delay="0"></SensorDvdd> 如果不是连接到 PMU,那么只需填写 NC。注意 min 和 max 值必须填写,决定了 Sensor 的 IO 电压 10 Sensor DOVDD 的 PMU LDO 名称 <SensorDovdd name="NC" min="18000000" max="18000000" delay="5000"></SensorDovdd> 11 Sensor PowerDown 引脚 <SensorGpioPwdn0 ioname="RK30_PIN2_PD4" active="0"></SensorGpioPwdn0> //mipi 直接填写名称即可,active 填写休眠的有效电平 12 Sensor Reset 引脚 <SensorGpioRst ioname="RK30_PIN2_PD3" active="0"></SensorGpioRst> 直接填写名称即可,active 填写复位的有效电平 13 Sensor Power 引脚 <SensorGpioPwen ioname="NC" active="1" delay="1000"></SensorGpioPwen> 直接填写名称即可,active 填写电源的有效电平 14 选择 Sensor 作为前置还是后置 <SensoRFacing facing="back"></SensorFacing> 可填写“ front”或“back” 15 Sensor 的接口方式 <SensorInterface mode="MIPI"></SensorInterface> 16 Sensor 的镜像方式 <SensorMirrorFlip mirror="0"></SensorMirrorFlip> 17 Sensor 的角度信息 <SensorOrientation orientation="0"></SensorOrientation> 18 物理接口设置 <SensorPhy phyMode="CamSys_Phy_Mipi" lane="2" phyIndex="1" sensorFmt="CamSys_Fmt_Raw_10b"> </SensorPhy> hyMode: Sensor 接口硬件连接方式,对 MIPI Sensor 来说,该值取"CamSys_ Phy_ Mipir" Lane: Sensor mipi 接口数据通道数 Phyindex: Sensor mipi 连接的主控 mipi phy 编号 sensorFmt: Sensor 输出数据格式,目前前支持 CamSys_ Fmt. Raw_ 10b 21.18.5 编译内核 我们需要将驱动源码 itop-3399_8.1/kernel/drivers/media/video/rk_camsys 编译进内核,配置方法如下: (1) itop-3399_8.1/kernel/arch/arm64/configs/rockchip_linux_defconfig 是内核默认配置文件,我们在修改之 前要将其备份。 (2) 然后用 itop-3399_8.1/kernel/arch/arm64/configs/rockchip_linux_defconfig 文件覆盖 itop-3399_8.1/kernel/.config 文件,然后输入 make menuconfig 进行配置,输入以下命令: cp -r arch/arm64/configs/rockchip_linux_defconfig .config make menuconfig : N5 T5 l7 y7 v5 q( P: \! y9 y
; \: c+ T% r8 {" y/ O7 q! U1 d- {
. s+ d4 N3 M8 i( i(3) 将以下配置打开,如下图所示: -> Device Drivers -> Multimedia support (MEDIA_SUPPORT [=y]) -> camsys driver (CAMSYS_DRV [=y]) (1) -> RockChip camera system driver % x5 q+ a% ^& q) a* _- ^0 v$ C
6 b' a1 S) y. ]
$ X% I" k, O8 ?8 X7 H: o: x k(4)配置完之后生成新的.config 文件,我们将其覆盖默认配置文件,然后重新编译内核。 cp -r .config arch/arm64/configs/rockchip_linux_defconfig 编译完成烧写镜像,终端下可以直接修改 /system/etc/cam_board.xml 调试各参数并重启生效。Android8 源码里面 itop-3399_8.1/RKDocs 可以查看详细的资料。 / t; K: x W* m [2 R* ^" h
|