VEYE MIPI 327 for Nano Pi 4 ubuntu

From wiki_veye
Revision as of 17:35, 13 January 2020 by Xumm (talk | contribs)
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.

查看中文

How to use VEYE-MIPI-327 camera module on FriendlyARM NanoPi 4(RK3399)

1 Overview

This guide shows how to use VEYE-MIPI-290/327 on Friendlyarm Nanopi4(NanoPi M4,NanoPi NEO4,NanoPi T4),we use NanoPi M4 as an example.

RK3399 is Rockchip opensource platform. We use linuxsdk-friendlyelec-20190903 version SDK,and micro SD card version.

2 Hardware Setup

The system installation is shown as follows in the figure. We have Nanopi adapter board:VEYE-MIPI-327RK datasheet.

Connect VEYE-MIPI-327 to NanoPi M4
NanoPi M4 FFC cable details
VEYE-MIPI-327 adatpter board details


Note:NanoPi M4 board MIPI-CSI2 interface description

Interface I2C DPHY facing Reuse
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芯片,本文均可适用。