VEYE MIPI 327 for Nano Pi 4 ubuntu/zh

From wiki_veye
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

English

如何在友善之臂的NanoPi4平台(RK3399)使用VEYE-MIPI-327摄像头模组(ubuntu)

1 概述

本文主要介绍如何在NanoPi4平台使用VEYE-MIPI-327摄像头模组。本文兼容的NanoPi M4、NanoPi NEO4、NanoPi T4,以NanoPi M4为例进行介绍。

RK3399是Rockchip的一个开源芯片平台,应用广泛。我们开发使用的SDK是linuxsdk-friendlyelec-20190903版本,系统启动方式本文以SD卡启动为例。

2 硬件准备及安装

系统安装如图所示。我们有专门的RK3399平台套装。具体参数请参考:VEYE-MIPI-327RK数据手册

VEYE-MIPI-327 摄像头模组与NanoPi M4板连接示意图
NanoPi M4板插接示意图
VEYE-MIPI-290/327 摄像头模组插接示意图


注:NanoPi M4板的MIPI-CSI2接口说明

接口 I2C DPHY facing 复用
MIPI-CSI1 1 RX0 back NA
MIPI-CSI2 2 RX1 front TX1

3 使用编译好的整体镜像更新NanoPi4系统

  • 下载系统镜像文件

我们在friendlyelec-20190903版本的SD卡烧写镜像基础上,制作了支持VEYE摄像头模组的镜像。点击链接下载。

  • 烧录镜像文件

利用SD Card Formatter软件将micro SD卡格式化(格式化前有必要将需要的文件进行备份),将下载后的压缩文件解压为rk3399-sd-friendlydesktop-bionic-4.4-arm64-20200112.img。

使用win32diskimager软件将解压后的镜像文件写入micro SD卡。

具体烧写过程和方法,可以参考链接

4 使用源码更新NanoPi4系统

本章节为如何使用源码更新系统固件的说明。主要涉及两部分,kernel和dtb。客户可参考此部分章节将VEYE-MIPI-327的驱动移植到其他RK3399的主板上。

4.1 开发环境准备

  • 安装编译工具链

RK3399采用的是标准linaro编译工具链。参考链接安装编译工具链。也可以参考Rockchip官方资料安装编译工具链。

  • 下载kernel源码

有三种方案进行kernel源码的获取。

  1. 使用friendlyarm提供的linuxsdk-friendlyelec完整开发包。下载链接:http://download.friendlyarm.com/NanoPiM4
  2. 从friendlyarm的官方github获取。
  3. 从rockchip的官方github获取。

我们采用第一种方案。

tar -xvf linuxsdk-friendlyelec-20190903.tar

.repo/repo/repo sync -l

  • 下载我们提供的驱动

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

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

4.2 使用编译好的Image和DTB

我们提供了NanoPi M4主板的resource.img和kernel.img,可以分区烧写提高速度。sd-fuse_rk3399详细方法请参考Readme。

使用方法如下:

  • 下载sd-fuse_rk3399

git clone https://github.com/friendlyarm/sd-fuse_rk3399.git

  • 下载friendlydesktop-arm64-images.tgz

下载链接:http://download.friendlyarm.com/NanoPiM4下,images-for-eflasher目录找到对应文件,下载。

tar -xzvf friendlydesktop-arm64-images.tgz -C sd-fuse_rk3399

  • 替换文件和动态烧写

tar -xzvf  rk3399_veye_dimaging_bsp/ubuntu/platform/friendlyarm_nanopi4/images/kernel.img.tar.gz -C ./sd-fuse_rk3399/friendlydesktop-arm64/

tar -xzvf  rk3399_veye_dimaging_bsp/ubuntu/platform/friendlyarm_nanopi4/images/resource.img.tar.gz -C ./sd-fuse_rk3399/friendlydesktop-arm64/  

cp  rk3399_veye_dimaging_bsp/ubuntu/platform/friendlyarm_nanopi4/images/update_partmap.txt  ./sd-fuse_rk3399/friendlydesktop-arm64/

将micro SD卡通过TF卡转USB工具,插到开发Host PC上。通过以下命令,可以只进行升级,而不是整个卡进行烧写,速度比较快。

cd ./sd-fuse_rk3399/

sudo ./tools/sd_update -d /dev/sdb -p ./friendlydesktop-arm64/update_partmap.txt

4.3 使用源码进行编译

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

cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/VEYE-MIPI-327/veye327.c ~/linuxsdk-friendlyelec/kernel/drivers/media/i2c/

cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/Makefile ~/linuxsdk-friendlyelec/kernel/drivers/media/i2c/

cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/Kconfig ~/linuxsdk-friendlyelec/kernel/drivers/media/i2c/

  • 增加编译选项

cd ~/linuxsdk-friendlyelec/kernel

make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi4_linux_defconfig

make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig

增加CONFIG_VIDEO_VEYE327选项。

make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi4-images

cp kernel.img resource.img ~/sd-fuse_rk3399/friendlydesktop-arm64/

4.4 动态升级

将micro SD卡通过TF卡转USB工具,插到开发Host PC上。通过以下命令,可以只进行升级,而不是整个卡进行烧写,速度比较快。

cd ./sd-fuse_rk3399/

sudo ./tools/sd_update -d /dev/sdb -p ./friendlydesktop-arm64/update_partmap.txt

5 应用和测试

5.1 系统状态检测

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

dmesg | grep veye327  

应当有如下提示:

Detected VEYE06 sensor

5.2 视频流测试

5.2.1 使用gstreamer
5.2.1.1 使用gst-camera-veye.sh

由于友善之臂官方提供的gst-camera.sh默认分辨率为720p,VEYE-MIPI-327不支持,我们提供了 修改版本的gst-camera-veye.sh。

目录为:

rk3399_veye_dimaging_bsp/ubuntu/platform/friendlyarm_nanopi4/gst-camera-sh/

  • 视频预览1080p HD

./gst-camera-veye.sh -a preview

  • 视频录像1080p HD

./gst-camera-veye.sh --action video -output 1.ts

  • 抓拍图片

./gst-camera-veye.sh -a photo -o 1.jpg

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

gst-launch-1.0 rkisp device=/dev/video1 io-mode=4 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! rkximagesink

  • 视频录像1080p HD

gst-launch-1.0 rkisp num-buffers=512 device=/dev/video0 io-mode=1 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! mpph264enc ! queue ! h264parse ! filesink location=/tmp/out.mp4 -e

  • 抓拍图片

gst-launch-1.0 rkisp num-buffers=2 device=/dev/video0 io-mode=1 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=10/1 ! jpegenc ! multifilesink location="/tmp/isp-frame%d.jpg" -e

5.3 视频控制软件包的使用

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

rk3399_veye_dimaging_bsp/ubuntu/i2c_cmd

  • Ubuntu系统执行命令

i2cdetect [value]

value description
1 MIPI-CSI1
2 MIPI-CSI2

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

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

veye_mipi_i2c_rk.sh

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

6 参考资料

6.1 RK3399介绍

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

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

wiki

github

docs

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

6.2 NanoPi M4介绍

NanoPi M4是友善之臂出品的基于RK3399的开发板。在爱好者和行业内拥趸极多。其资料开放,易于开发,wiki详细周到。

友善之臂也维护了自己github

我们在开发的时候,采用的是友善之臂的官方定版版本,建议采用google drive云盘下载,速度更快。

Nanopi的4系列均采用RK3399芯片,本文均可适用。