Difference between revisions of "VEYE MIPI 327 for KHADAS EDGE ubuntu/zh"
(Created page with "<br /> ===概述=== 本文主要介绍如何在NanoPi4平台使用VEYE-MIPI-327摄像头模组。本文兼容的NanoPi M4、NanoPi NEO4、NanoPi T4,以NanoPi M4为例进行...") |
(→参考资料) |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | <br /> | + | [[VEYE MIPI 327 for KHADAS EDGE ubuntu|English]] |
+ | |||
+ | [[VEYE MIPI 327 for KHADAS EDGE ubuntu/zh|<big>如何在KHADAS的Edge平台使用VEYE-MIPI-327摄像头模组(ubuntu)</big>]]<br /> | ||
===概述=== | ===概述=== | ||
− | + | 本文主要介绍如何在[https://www.khadas.com/ KHADAS平台]使用VEYE-MIPI-327摄像头模组。本文兼容的Khadas Edge、Khadas Edge-V,以Khadas Edge-V为例进行介绍。 | |
− | + | RK3399是Rockchip的一个开源芯片平台,应用广泛。我们开发使用的SDK是Khadas的fenix_0.8.2(20200110)在线版本,系统启动方式为emmc。 | |
===硬件准备及安装=== | ===硬件准备及安装=== | ||
− | + | 系统安装如图所示。我们有专门的RK3399平台套装。具体参数请参考:(TODO)。 | |
+ | [[File:KHADAS EDGE VEYE327.jpg|alt=|center|thumb|602x602px|VEYE-MIPI-327 摄像头模组与Khadas Edge-V连接示意图]] | ||
+ | [[File:KHADAS EDGE FFC.jpg|alt=|center|thumb|602x602px|Khadas Edge-V板插接示意图(接触面向外)]] | ||
+ | [[File:VEYE-MIPI-327KH FFC.jpg|alt=|center|thumb|596x596px|VEYE-MIPI-327 摄像头模组插接示意图(接触面向外)]] | ||
− | + | 注:Khadas Edge-V板的CAM0和CAM1都是使用的i2c-6,现在版本的dts只支持连接到CAM0接口。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ===下载我们提供的bsp包=== | |
+ | 从我们提供的github地址下载源码,下载链接:https://github.com/veyeimaging/rk3399_veye_dimaging_bsp<nowiki/>。 | ||
− | |||
− | + | <code>git clone [https://github.com/veyeimaging/rk3399_veye_dimaging_bsp https://github.com/veyeimaging/rk3399_veye_dimaging_bsp.git]</code> | |
+ | ===使用编译好的镜像Edge更新系统=== | ||
− | + | *安装官方镜像到板子上 | |
− | + | 从官方网站下载镜像,下载链接为:https://docs.khadas.com/edge/FirmwareUbuntu.html<nowiki/>,我们使用的版本为Edge_Ubuntu-lxde-bionic_Linux-4.4_arm64_EMMC_V20190830。 | |
− | + | 按照以下步骤进行烧写:https://docs.khadas.com/edge/HowtoBootIntoUpgradeMode.html<nowiki/>。 | |
− | |||
− | |||
− | |||
− | * | + | *升级我们提供的kernel和dtb |
− | + | 升级包路径为 | |
− | + | <code>~/rk3399_veye_dimaging_bsp/ubuntu/platform/khadas_edge-v</code> | |
− | + | 将kernel-debs.tgz和rkisp-engine-2.0.1_arm64.tgz拷贝到Edge-V板上。 | |
− | + | *安装kernel和dtb | |
− | |||
− | |||
− | + | <code>tar -xzvf kernel-debs.tgz</code> | |
− | <code> | + | <code>cd kernel-debs</code> |
− | <code>. | + | <code>sudo dpkg -i linux-dtb-rockchip-4.4_0.8.2_arm64.deb</code> |
− | + | <code>sudo dpkg -i linux-headers-rockchip-4.4_0.8.2_arm64.deb</code> | |
− | + | <code>sudo dpkg -i linux-image-rockchip-4.4_0.8.2_arm64.deb</code> | |
− | + | *根据需要安装rkisp库(如系统中已有对应的库则不需要此步骤) | |
− | |||
− | |||
− | + | <code>tar -xzvf rkisp-engine-2.0.1_arm64.tgz</code> | |
− | * | + | <code>sudo cp -arf rkisp-engine-2.0.1_arm64/* /</code> |
− | + | ===使用源码更新Edge系统=== | |
− | + | 本章节为如何使用源码更新系统固件的说明。主要涉及两部分,kernel和dtb。 | |
− | + | ====开发环境准备==== | |
− | + | *安装Fenix并下载源码 | |
− | + | 根据Khadas的步骤:https://docs.khadas.com/zh-cn/edge/FenixScript.html<nowiki/>,会自动下载最新的代码。 | |
− | + | <nowiki/><nowiki/><code><nowiki/></code><code>make kernel</code> | |
− | |||
− | < | ||
− | |||
− | |||
− | |||
− | <code> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <code> | ||
====使用源码进行编译==== | ====使用源码进行编译==== | ||
*将我们的驱动文件放到对应kernel目录下 | *将我们的驱动文件放到对应kernel目录下 | ||
− | <code>cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/VEYE-MIPI-327/veye327.c ~/ | + | <code>cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/VEYE-MIPI-327/veye327.c ~/project/fenix/linux/drivers/media/i2c/</code> |
− | <code>cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/Makefile ~/ | + | <code>cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/Makefile ~/project/fenix/linux/drivers/media/i2c/</code> |
− | <code>cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/Kconfig ~/ | + | <code>cp rk3399_veye_dimaging_bsp/ubuntu/drivers_source/Kconfig ~/project/fenix/linux//drivers/media/i2c/</code> |
*增加编译选项 | *增加编译选项 | ||
− | + | <code>cd ~/project/fenix/linux/</code> | |
− | <code>make | + | <code>make ARCH=arm64 kedge_defconfig</code> |
− | <code>make | + | <code>make ARCH=arm64 menuconfig</code> |
增加CONFIG_VIDEO_VEYE327选项。 | 增加CONFIG_VIDEO_VEYE327选项。 | ||
− | + | 也可以直接修改.config配置文件增加CONFIG_VIDEO_VEYE327选项。 | |
− | + | *编译 | |
− | |||
− | |||
− | <code> | + | <code>make kernel && make kernel-deb</code> |
− | + | 编译完成的debs在./build/images/debs/0.8.2/目录下。 | |
===应用和测试=== | ===应用和测试=== | ||
====系统状态检测==== | ====系统状态检测==== | ||
− | + | 完成系统安装后,在板端执行以下命令来检测是否正确连接摄像头。 | |
<code>dmesg | grep veye327</code> | <code>dmesg | grep veye327</code> | ||
Line 135: | Line 100: | ||
<code>Detected VEYE06 sensor</code> | <code>Detected VEYE06 sensor</code> | ||
====视频流测试==== | ====视频流测试==== | ||
− | ===== | + | =====直接使用gst-launch-1.0===== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*视频预览1080p HD | *视频预览1080p HD | ||
− | |||
− | |||
*视频录像1080p HD | *视频录像1080p HD | ||
− | <code> | + | <code>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</code> |
*抓拍图片 | *抓拍图片 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
====视频控制软件包的使用==== | ====视频控制软件包的使用==== | ||
我们使用DRA(Directly Register Access)模式进行摄像头模组寄存器的配置。并且提供了一个shell脚本帮助使用。 | 我们使用DRA(Directly Register Access)模式进行摄像头模组寄存器的配置。并且提供了一个shell脚本帮助使用。 | ||
Line 174: | Line 117: | ||
*Ubuntu系统执行命令 | *Ubuntu系统执行命令 | ||
− | <code>i2cdetect | + | <code>i2cdetect 6</code> |
− | + | ||
− | + | 检测硬件连接是否正常,VEYE327摄像头模组的产品i2c地址为0x3b。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*确定硬件连接正常后,脚本命令如下,-b指明i2c bus: | *确定硬件连接正常后,脚本命令如下,-b指明i2c bus: | ||
− | <code>veye_mipi_i2c_rk.sh</code> | + | <code>veye_mipi_i2c_rk.sh -b 6</code> |
视频控制接口软件包选项具体使用操作详见:[[VEYE-MIPI-290/327 i2c/zh|I2C脚本使用说明]]。 | 视频控制接口软件包选项具体使用操作详见:[[VEYE-MIPI-290/327 i2c/zh|I2C脚本使用说明]]。 | ||
+ | ===现存问题=== | ||
+ | ====问题现象==== | ||
+ | |||
+ | *视频录像不满帧 | ||
+ | |||
+ | 使用上一节所用的gstreamer指令进行视频编码,无法达到满帧。只能达到大约17帧左右。有客户使用整颗Soc降频到600Mhz可以解决此问题。 | ||
+ | ====问题原因==== | ||
+ | rockchip的rk3399虽然支持yuv格式的camera模组输入,但是由于此类模组接入较少,他们提供的gstreamer插件存在严重的bug。 | ||
===参考资料=== | ===参考资料=== | ||
====RK3399介绍==== | ====RK3399介绍==== | ||
Line 203: | Line 146: | ||
[https://github.com/rockchip-linux/docs docs] | [https://github.com/rockchip-linux/docs docs] | ||
− | + | 采用RK3399的主板也非常丰富,可供选择。各家软件均为基于瑞芯微资料制作,所以本文的内容也具有一定的普适性。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 13:35, 10 March 2020
如何在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)。
注: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的资料详细,开放度高,备受欢迎。 重点资料列举如下:
采用RK3399的主板也非常丰富,可供选择。各家软件均为基于瑞芯微资料制作,所以本文的内容也具有一定的普适性。