VEYE MIPI 327 for KHADAS EDGE ubuntu/zh

From wiki_veye
Revision as of 13:35, 10 March 2020 by Xumm (talk | contribs) (→‎参考资料)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

English

如何在KHADAS的Edge平台使用VEYE-MIPI-327摄像头模组(ubuntu)

1 概述

本文主要介绍如何在KHADAS平台使用VEYE-MIPI-327摄像头模组。本文兼容的Khadas Edge、Khadas Edge-V,以Khadas Edge-V为例进行介绍。

RK3399是Rockchip的一个开源芯片平台,应用广泛。我们开发使用的SDK是Khadas的fenix_0.8.2(20200110)在线版本,系统启动方式为emmc。

2 硬件准备及安装

系统安装如图所示。我们有专门的RK3399平台套装。具体参数请参考:(TODO)。

VEYE-MIPI-327 摄像头模组与Khadas Edge-V连接示意图
Khadas Edge-V板插接示意图(接触面向外)
VEYE-MIPI-327 摄像头模组插接示意图(接触面向外)


注:Khadas Edge-V板的CAM0和CAM1都是使用的i2c-6,现在版本的dts只支持连接到CAM0接口。

3 下载我们提供的bsp包

从我们提供的github地址下载源码,下载链接:https://github.com/veyeimaging/rk3399_veye_dimaging_bsp


git clone https://github.com/veyeimaging/rk3399_veye_dimaging_bsp.git

4 使用编译好的镜像Edge更新系统

  • 安装官方镜像到板子上

从官方网站下载镜像,下载链接为:https://docs.khadas.com/edge/FirmwareUbuntu.html,我们使用的版本为Edge_Ubuntu-lxde-bionic_Linux-4.4_arm64_EMMC_V20190830。

按照以下步骤进行烧写:https://docs.khadas.com/edge/HowtoBootIntoUpgradeMode.html

  • 升级我们提供的kernel和dtb

升级包路径为

~/rk3399_veye_dimaging_bsp/ubuntu/platform/khadas_edge-v

将kernel-debs.tgz和rkisp-engine-2.0.1_arm64.tgz拷贝到Edge-V板上。

  • 安装kernel和dtb

tar -xzvf kernel-debs.tgz

cd kernel-debs

sudo dpkg -i linux-dtb-rockchip-4.4_0.8.2_arm64.deb

sudo dpkg -i linux-headers-rockchip-4.4_0.8.2_arm64.deb

sudo dpkg -i linux-image-rockchip-4.4_0.8.2_arm64.deb

  • 根据需要安装rkisp库(如系统中已有对应的库则不需要此步骤)

tar -xzvf rkisp-engine-2.0.1_arm64.tgz

sudo cp -arf rkisp-engine-2.0.1_arm64/* /

5 使用源码更新Edge系统

本章节为如何使用源码更新系统固件的说明。主要涉及两部分,kernel和dtb。

5.1 开发环境准备

  • 安装Fenix并下载源码

根据Khadas的步骤:https://docs.khadas.com/zh-cn/edge/FenixScript.html,会自动下载最新的代码。

make kernel

5.2 使用源码进行编译

  • 将我们的驱动文件放到对应kernel目录下

cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/VEYE-MIPI-327/veye327.c ~/project/fenix/linux/drivers/media/i2c/

cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/Makefile ~/project/fenix/linux/drivers/media/i2c/

cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/Kconfig ~/project/fenix/linux//drivers/media/i2c/

  • 增加编译选项

cd ~/project/fenix/linux/

make ARCH=arm64 kedge_defconfig

make ARCH=arm64 menuconfig

增加CONFIG_VIDEO_VEYE327选项。

也可以直接修改.config配置文件增加CONFIG_VIDEO_VEYE327选项。

  • 编译

make kernel && make kernel-deb

编译完成的debs在./build/images/debs/0.8.2/目录下。

6 应用和测试

6.1 系统状态检测

完成系统安装后,在板端执行以下命令来检测是否正确连接摄像头。

dmesg | grep veye327  

应当有如下提示:

Detected VEYE06 sensor

6.2 视频流测试

6.2.1 直接使用gst-launch-1.0
  • 视频预览1080p HD
  • 视频录像1080p HD

gst-launch-1.0 rkv4l2src num-buffers=512 ! video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1 ! queue ! mpph264enc ! queue ! h264parse ! mpegtsmux ! filesink location=/tmp/veye_video.ts

  • 抓拍图片

6.3 视频控制软件包的使用

我们使用DRA(Directly Register Access)模式进行摄像头模组寄存器的配置。并且提供了一个shell脚本帮助使用。

rk3399_veye_dimaging_bsp/ubuntu/i2c_cmd

  • Ubuntu系统执行命令

i2cdetect 6

检测硬件连接是否正常,VEYE327摄像头模组的产品i2c地址为0x3b。

  • 确定硬件连接正常后,脚本命令如下,-b指明i2c bus:

veye_mipi_i2c_rk.sh -b 6

视频控制接口软件包选项具体使用操作详见:I2C脚本使用说明

7 现存问题

7.1 问题现象

  • 视频录像不满帧

使用上一节所用的gstreamer指令进行视频编码,无法达到满帧。只能达到大约17帧左右。有客户使用整颗Soc降频到600Mhz可以解决此问题。

7.2 问题原因

rockchip的rk3399虽然支持yuv格式的camera模组输入,但是由于此类模组接入较少,他们提供的gstreamer插件存在严重的bug。

8 参考资料

8.1 RK3399介绍

RK3399是瑞芯微出品的一款高性价比的运算平台SoC。在业内拥有广泛的应用。

RK3399的资料详细,开放度高,备受欢迎。 重点资料列举如下:

wiki

github

docs

采用RK3399的主板也非常丰富,可供选择。各家软件均为基于瑞芯微资料制作,所以本文的内容也具有一定的普适性。