Difference between revisions of "VEYE MIPI 290/327 for Nano Pi/zh"

From wiki_veye
Jump to navigation Jump to search
 
(23 intermediate revisions by 3 users not shown)
Line 1: Line 1:
'''<big>VEYE-MIPI-290/327 摄像头模组接入RK3399平台使用说明</big>'''
+
English
 +
 
 +
===本文已废弃,请参考[[VEYE MIPI 327 for Nano Pi 4 ubuntu|新版本]]。===
 +
 
 +
 
 +
'''<big><big><big><big>[[VEYE MIPI 290/327 for Nano Pi/zh|如何在友善之臂的Nano Pi M4平台使用VEYE-MIPI-290/327摄像头模组]]</big></big></big></big>'''
  
 
===概述===
 
===概述===
本篇文章讲述VEYE-MIPI-290/327 摄像头模组接入RK3399平台的具体详细步骤及使用说明。以VEYE-MIPI-290/327 摄像头模组接入NanoPi M4为例来详细讲解接入的具体步骤及使用说明。
+
本篇文章讲述VEYE-MIPI-290/327 摄像头模组接入RK3399平台的具体详细步骤及使用说明。以VEYE-MIPI-290/327 摄像头模组接入NanoPi M4为例来详细讲解接入的具体步骤及使用说明。源代码及使用和RK3399平台的介绍都在本文中介绍。
  
 
===硬件准备及安装===
 
===硬件准备及安装===
原材料:NanoPi M4板,HDMI显示器,网线,Micro SD卡,FFC异面线,NanoPi M4电源线,镜头,摄像头主板,Nano Pi转接板(转接板包括树莓派转接板以及Nano Pi转接板,具体说明请见[[链接]])
+
原材料:NanoPi M4板,HDMI显示器,网线,Micro SD卡,FFC异面线,NanoPi M4电源线,镜头,摄像头主板,NanoPi转接板(转接板包括树莓派转接板以及Nano Pi转接板,详细说明请见[[Adapter Board for Raspberry Pi/zh|Adapter Board for Raspberry Pi]]和[http://wiki.veye.cc/index.php/Adapter_Board_for_Rockchip/zh Adapter Board for Rockchip])
 +
 
 +
如图所示,摄像头主板加Nano Pi转接板构成摄像头模组,摄像头模组通过FFC异面线连接到NanoPi M4板上MIPI CSI-2接口,Micro SD卡插入卡槽,HDMI显示器接入NanoPi M4板,网线插入网线接口,NanoPi M4电源线插入电源接口为NanoPi M4板提供电源。
 +
[[File:Veye nano pi OverAll.jpg|center|thumb|602x602px|VEYE-MIPI-290/327 摄像头模组与NanoPi M4板连接示意图]]
 +
[[File:VEYEWiring scheme00 副本12.jpg|center|thumb|602x602px|NanoPi M4板插接示意图]]
 +
[[File:Veye nano piWiring scheme01.jpg|center|thumb|596x596px|VEYE-MIPI-290/327 摄像头模组插接示意图]]
  
如图所示,摄像头主板加Nano Pi转接板构成摄像头模组,摄像头模组通过FFC异面线连接到NanoPi M4板上,Micro SD卡插入卡槽,HDMI显示器接入NanoPi M4板,网线插入网线接口,NanoPi M4电源线插入电源接口为NanoPi M4板提供电源。
+
 
[[File:Veye nanopi m4.jpg|center|thumb|463x463px|VEYE-MIPI-290/327 摄像头模组连接NanoPi M4示意图]]
+
注:NanoPi M4板的MIPI-CSI2接口说明
 +
{| class="wikitable"
 +
!接口
 +
!I2C
 +
!DPHY
 +
!facing
 +
!复用
 +
|-
 +
|MIPI-CSI1
 +
|1
 +
|RX0
 +
|back
 +
|NA
 +
|-
 +
|MIPI-CSI2
 +
|2
 +
|RX1
 +
|front
 +
|TX1<br />
 +
|}
  
 
===Ubuntu系统安装===
 
===Ubuntu系统安装===
Line 14: Line 43:
 
*下载系统镜像文件
 
*下载系统镜像文件
  
我们在友善之臂20190308的发布版本基础上,编译好了镜像(包括resource.img和kernel.img)。点击[https://pan.baidu.com/s/1sWrcfEOivjuQ7T7P5bVcng#list/path=%2Fveye_mipi%E8%B5%84%E6%96%99%2Fnanopim4image 链接]下载镜像压缩文件。
+
我们在20190308发布的友善之臂friendlydesktop系统版本基础上,编译好了新的镜像(包括resource.img和kernel.img)。点击[https://pan.baidu.com/s/1sWrcfEOivjuQ7T7P5bVcng#list/path=%2Fveye_mipi%E8%B5%84%E6%96%99%2Fnanopim4image 链接]下载镜像压缩文件。
[[File:Veye nanopi jingxiangjietu.png|center|thumb|473x473px|rk3399-sd-friendlydesktop-bionic-4.4-veye-arm64-20190423.img.7z为镜像压缩文件]]
+
[[File:Veye nanopi jingxiangjietu.png|center|thumb|531x531px|rk3399-sd-friendlydesktop-bionic-4.4-veye-arm64-20190423.img.7z为镜像压缩文件]]
  
 
*烧录镜像文件
 
*烧录镜像文件
Line 22: Line 51:
  
 
===视频流接口使用===
 
===视频流接口使用===
使用gstreamer
+
 
 +
*使用V4L2
 +
 
 +
rk_ispdemo为直接使用C语言调用V4L2接口,也比较方便进行智能分析。源代码路径:
 +
 
 +
linuxsdk-friendlyelec\external\camera_engine_cifisp\rkisp-demo
 +
 
 +
*使用gstreamer
  
 
可以实现抓拍、录像、预览等功能。视频流接口具体使用方法,详见:[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4/zh#gst-camera.sh_.E5.8F.82.E6.95.B0.E8.AF.B4.E6.98.8E nanopi官方资料]
 
可以实现抓拍、录像、预览等功能。视频流接口具体使用方法,详见:[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4/zh#gst-camera.sh_.E5.8F.82.E6.95.B0.E8.AF.B4.E6.98.8E nanopi官方资料]
Line 28: Line 64:
 
===视频控制接口软件包使用===
 
===视频控制接口软件包使用===
  
==== 下载及传输软件包 ====
+
====下载及传输软件包====
  
* 执行命令行
+
*执行命令行
  
 
<code>git clone <nowiki>https://github.com/veyeimaging/nanopi4.git</nowiki></code>
 
<code>git clone <nowiki>https://github.com/veyeimaging/nanopi4.git</nowiki></code>
Line 36: Line 72:
 
直接将文件复制到Ubuntu系统中。
 
直接将文件复制到Ubuntu系统中。
  
* 点击[https://github.com/veyeimaging/nanopi4 链接]下载视频控制接口软件包
+
*点击[https://github.com/veyeimaging/nanopi4 链接]下载视频控制接口软件包
  
[[File:Veye nanopi i2cruanjianbaojietu.png|center|thumb|531x531px|i2c为视频控制接口软件包]]
+
[[File:Veye nanopi i2cruanjianbaojietu.png|center|thumb|447x447px|i2c为视频控制接口软件包]]
 
利用samba将软件包文件传输至Ubuntu系统中,也可用U盘将软件包文件拷贝至Ubuntu系统中。
 
利用samba将软件包文件传输至Ubuntu系统中,也可用U盘将软件包文件拷贝至Ubuntu系统中。
  
==== 使用视频控制接口软件包 ====
+
====使用视频控制接口软件包====
首先检测硬件连接是否正常,Ubuntu系统用户登陆切换到root账户,执行命令行<code>i2cdetect [value]</code>
+
 
 +
*Ubuntu系统用户登陆切换到root账户,执行命令行
 +
 
 +
<code>i2cdetect [value]</code>
 
{| class="wikitable"
 
{| class="wikitable"
 
!value
 
!value
Line 53: Line 92:
 
|MIPI-CSI2
 
|MIPI-CSI2
 
|}
 
|}
确定硬件连接正常后,视频控制接口软件包具体使用操作详见:[http://www.veye.cc/?p=288 I2C脚本使用说明]。
+
检测硬件连接是否正常,VEYE290/327摄像头模组的产品I2C地址为0x3b。
 +
 
 +
*确定硬件连接正常后,在root账户下执行脚本命令
 +
 
 +
<code>veye_mipi_i2c_rk.sh</code> 
 +
 
 +
视频控制接口软件包选项具体使用操作详见:[[VEYE-MIPI-290/327 i2c/zh|I2C脚本使用说明]]。
  
=== 源代码及使用 ===
+
===源代码及使用===
  
==== kernel驱动源代码 ====
+
====kernel驱动源代码====
  
# 共三个文件,包括:veye_camera_module.c veye_camera_module.h veye290_v4l2-i2c-subdev.c 放置到linux源码的drivers/media/i2c/soc_camera/rockchip目录下。 注:VEYE327的驱动源码与290完全一致。
+
#共三个文件,包括:veye_camera_module.c veye_camera_module.h veye290_v4l2-i2c-subdev.c 放置到linux源码的drivers/media/i2c/soc_camera/rockchip目录下。 注:VEYE327的驱动源码与290完全一致。
# Kconfig drivers/media/i2c/soc_camera/rockchip/Kconfig,增加veye产品类型——VIDEO_VEYE290。 在make menuconfig中选中VEYE290。 路径:> Device Drivers > Multimedia support > Sensors used on soc_camera driver 。
+
#Kconfig drivers/media/i2c/soc_camera/rockchip/Kconfig,增加veye产品类型——VIDEO_VEYE290。 在make menuconfig中选中VEYE290。 路径:> Device Drivers > Multimedia support > Sensors used on soc_camera driver 。
# Makefile drivers/media/i2c/soc_camera/rockchip/Makefile obj-$(CONFIG_VIDEO_VEYE290) += veye_camera_module.o rk_camera_module.o veye290_v4l2-i2c-subdev.o
+
#Makefile drivers/media/i2c/soc_camera/rockchip/Makefile obj-$(CONFIG_VIDEO_VEYE290) += veye_camera_module.o rk_camera_module.o veye290_v4l2-i2c-subdev.o
  
==== DTS文件 ====
+
====DTS文件====
 
只需修改一个dit文件——rk3399-nanopi4-cifisp.dtsi。
 
只需修改一个dit文件——rk3399-nanopi4-cifisp.dtsi。
  
Line 72: Line 117:
 
文件请放到/etc/cam_iq下。
 
文件请放到/etc/cam_iq下。
  
=== 参考资料 ===
+
===参考资料===
<br />
 
  
==== RK3399介绍 ====
+
====RK3399介绍====
 
RK3399是[http://www.rock-chips.com/ 瑞芯微]出品的一款高性价比的运算平台SoC。在业内拥有广泛的应用。
 
RK3399是[http://www.rock-chips.com/ 瑞芯微]出品的一款高性价比的运算平台SoC。在业内拥有广泛的应用。
  
Line 88: Line 132:
 
采用RK3399的主板也非常丰富,可供选择。各家软件均为基于瑞芯微资料制作,所以本文的内容也具有一定的普适性,不局限于NanoPi4系列。
 
采用RK3399的主板也非常丰富,可供选择。各家软件均为基于瑞芯微资料制作,所以本文的内容也具有一定的普适性,不局限于NanoPi4系列。
  
==== NanoPi M4介绍 ====
+
====NanoPi M4介绍====
 
NanoPi M4是[https://www.friendlyarm.com/ 友善之臂]出品的基于RK3399的开发板。在爱好者和行业内拥趸极多。其资料开放,易于开发,[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4/zh wiki]详细周到。
 
NanoPi M4是[https://www.friendlyarm.com/ 友善之臂]出品的基于RK3399的开发板。在爱好者和行业内拥趸极多。其资料开放,易于开发,[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4/zh wiki]详细周到。
  
Line 97: Line 141:
 
Nanopi的4系列均采用RK3399芯片,本文均可适用。
 
Nanopi的4系列均采用RK3399芯片,本文均可适用。
  
==== RK3399 ISP简介(Linux) ====
+
====RK3399 ISP简介(Linux)====
 
Rk3399和RK3288采用同样的ISP硬件和驱动。由于linux和Android平台的软件框架差异很大,所以对接VEYE模组的过程也不同。'''Linux平台下,瑞芯微有两种ISP驱动,isp1为新版本,官方推荐使用;isp10为老版本。NanoPi选择isp10版本作为默认驱动。为了保持与原系统兼容性,我们也采用isp10版本进行开发。'''
 
Rk3399和RK3288采用同样的ISP硬件和驱动。由于linux和Android平台的软件框架差异很大,所以对接VEYE模组的过程也不同。'''Linux平台下,瑞芯微有两种ISP驱动,isp1为新版本,官方推荐使用;isp10为老版本。NanoPi选择isp10版本作为默认驱动。为了保持与原系统兼容性,我们也采用isp10版本进行开发。'''
  
==== linux平台 ====
+
====linux平台====
在linux平台下,isp10驱动和sensor的驱动均编译到kernel中,此外需要配置好DTS文件。下文将展开详述。
+
在linux平台下,isp10驱动和sensor的驱动均编译到kernel中,此外需要配置好DTS文件。
  
==== 主要参考文档: ====
+
====主要参考文档====
 
[http://opensource.rock-chips.com/wiki_Rockchip-isp1 瑞芯微官方ISP介绍]。
 
[http://opensource.rock-chips.com/wiki_Rockchip-isp1 瑞芯微官方ISP介绍]。
  
 
《RK_ISP10_Camera_User_Manual_v2.2.pdf》
 
《RK_ISP10_Camera_User_Manual_v2.2.pdf》

Latest revision as of 09:23, 12 June 2020

English

1 本文已废弃,请参考新版本

如何在友善之臂的Nano Pi M4平台使用VEYE-MIPI-290/327摄像头模组

2 概述

本篇文章讲述VEYE-MIPI-290/327 摄像头模组接入RK3399平台的具体详细步骤及使用说明。以VEYE-MIPI-290/327 摄像头模组接入NanoPi M4为例来详细讲解接入的具体步骤及使用说明。源代码及使用和RK3399平台的介绍都在本文中介绍。

3 硬件准备及安装

原材料:NanoPi M4板,HDMI显示器,网线,Micro SD卡,FFC异面线,NanoPi M4电源线,镜头,摄像头主板,NanoPi转接板(转接板包括树莓派转接板以及Nano Pi转接板,详细说明请见Adapter Board for Raspberry PiAdapter Board for Rockchip

如图所示,摄像头主板加Nano Pi转接板构成摄像头模组,摄像头模组通过FFC异面线连接到NanoPi M4板上MIPI CSI-2接口,Micro SD卡插入卡槽,HDMI显示器接入NanoPi M4板,网线插入网线接口,NanoPi M4电源线插入电源接口为NanoPi M4板提供电源。

VEYE-MIPI-290/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

4 Ubuntu系统安装

  • 下载系统镜像文件

我们在20190308发布的友善之臂friendlydesktop系统版本基础上,编译好了新的镜像(包括resource.img和kernel.img)。点击链接下载镜像压缩文件。

rk3399-sd-friendlydesktop-bionic-4.4-veye-arm64-20190423.img.7z为镜像压缩文件
  • 烧录镜像文件

烧录镜像具体方法:利用SD Card Formatter软件将Micro SD卡格式化(格式化前有必要将需要的文件进行备份),将下载后的压缩文件解压,利用Win32 Disk Imager软件将解压后的镜像文件写入Micro SD卡。

5 视频流接口使用

  • 使用V4L2

rk_ispdemo为直接使用C语言调用V4L2接口,也比较方便进行智能分析。源代码路径:

linuxsdk-friendlyelec\external\camera_engine_cifisp\rkisp-demo

  • 使用gstreamer

可以实现抓拍、录像、预览等功能。视频流接口具体使用方法,详见:nanopi官方资料

6 视频控制接口软件包使用

6.1 下载及传输软件包

  • 执行命令行

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

直接将文件复制到Ubuntu系统中。

  • 点击链接下载视频控制接口软件包
i2c为视频控制接口软件包

利用samba将软件包文件传输至Ubuntu系统中,也可用U盘将软件包文件拷贝至Ubuntu系统中。

6.2 使用视频控制接口软件包

  • Ubuntu系统用户登陆切换到root账户,执行命令行

i2cdetect [value]

value description
1 MIPI-CSI1
2 MIPI-CSI2

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

  • 确定硬件连接正常后,在root账户下执行脚本命令

veye_mipi_i2c_rk.sh

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

7 源代码及使用

7.1 kernel驱动源代码

  1. 共三个文件,包括:veye_camera_module.c veye_camera_module.h veye290_v4l2-i2c-subdev.c 放置到linux源码的drivers/media/i2c/soc_camera/rockchip目录下。 注:VEYE327的驱动源码与290完全一致。
  2. Kconfig drivers/media/i2c/soc_camera/rockchip/Kconfig,增加veye产品类型——VIDEO_VEYE290。 在make menuconfig中选中VEYE290。 路径:> Device Drivers > Multimedia support > Sensors used on soc_camera driver 。
  3. Makefile drivers/media/i2c/soc_camera/rockchip/Makefile obj-$(CONFIG_VIDEO_VEYE290) += veye_camera_module.o rk_camera_module.o veye290_v4l2-i2c-subdev.o

7.2 DTS文件

只需修改一个dit文件——rk3399-nanopi4-cifisp.dtsi。

路径:kernel/arch/arm64/boot/dts/rockchip

veye290.xml

文件请放到/etc/cam_iq下。

8 参考资料

8.1 RK3399介绍

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

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

wiki

github

docs

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

8.2 NanoPi M4介绍

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

友善之臂也维护了自己github

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

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

8.3 RK3399 ISP简介(Linux)

Rk3399和RK3288采用同样的ISP硬件和驱动。由于linux和Android平台的软件框架差异很大,所以对接VEYE模组的过程也不同。Linux平台下,瑞芯微有两种ISP驱动,isp1为新版本,官方推荐使用;isp10为老版本。NanoPi选择isp10版本作为默认驱动。为了保持与原系统兼容性,我们也采用isp10版本进行开发。

8.4 linux平台

在linux平台下,isp10驱动和sensor的驱动均编译到kernel中,此外需要配置好DTS文件。

8.5 主要参考文档

瑞芯微官方ISP介绍

《RK_ISP10_Camera_User_Manual_v2.2.pdf》