VisionFive 2 开发实践 | 应用集合贴(ROS & OpenWrt & 网络摄像头 & 视频直播)

源贴:https://mp.weixin.qq.com/s/6hy8b4Mk1XKdE-KPbpFKlQ

VisionFive 2是全球首款集成3D GPU的高性能量产RISC-V 单板计算机 。与上一代相比,VisionFive 2全面升级,在处理器工作频率、多媒体处理能力、可扩展性等方面都有显着提升。优越的性能和合理的价格使VisionFive 2成为有史以来性价比最高的RISC-V开发板。

1.简单开箱和Debian新手指南

感谢电子发烧友平台组织本次试用活动,感谢赛昉科技提供的VisionFive2开发板。

本文首先放两张开箱图,然后分别介绍Debian系统系统安装和调整、软件源更新、常用软件安装,添加用户以及SSH登录。其中,系统安装和调整部分,包括串口登录、查看硬件和系统信息、扩展分区和文件系统、联网查看IP地址、设置时区和时间。软件源更新部分,包括apt update报错ESPKEYSIG的解决、更换国内软件源、找到最快的软件源。常用软件包安装部分,包括温度监控、图形化性能监控、常用开发工具 软件的安装。添加用户和SSH登录部分,包括添加用户、添加sudo权限、允许root用户通过SSH登录。

一、简单开箱

1.1 包装和外观

包装盒外观挺好看:

打开包装盒,里面看起来也很精致:

1.2 硬件简介

开发板核心元器件:

  • CPU:惊鸿7110 RISC-V 四核64位RV64GC,2 MB二级缓存,最高频率1.5 GHz
  • GPU:Imagination IMG BXE-4-32 MC1,最高频率 600MHz
  • RAM:4GB,另外还有2GB和8GB版本
  • 存储:16MB SPI Flash,用于存储固件;另外还有Micro SD卡槽和eMMC插座;

>>>点此查看全文

2.使用nginx、ffmpeg和VLC搭建简单视频直播系统

本文将介绍——如何在VisonFive2开发板上使用nginx和http-flv模块实现视频流转发、如何使用ffmpeg推流,以及如何在PC上使用VLC播放器查看视频流的画面。本文首先介绍如何通过源码编译并安装nginx和http-flv模块,然后介绍如何使用ffmpeg推流,最后介绍如何在PC上使用VLC播放器查看视频流中的画面。在本文介绍的实验中,nginx及http-flv模块作为视频流服务器,ffmpeg作为视频流推送端,VLC作为视频流播放端,三者形成了一个简单的视频直播系统。

一、准备工作

1.1 硬件准备

开始本文的实验之前,需要准备的硬件有:

  • VisionFive2开发板
  • USB摄像头
  • 路由器
  • PC
  • 网线

1.2 软件准备

PC上准备好VLC播放器,用于播放视频流,可以从VLC官网下载:官方下载:VLC media player,最棒的开源播放器 - VideoLAN

另外,需要在VisionFive2开发板上准备一些软件:

  • 编译工具链,安装命令:sudo apt install build-essential g++ git make
  • ffmpeg命令行工具,安装命令:sudo apt install ffmpeg
  • nginx依赖openssl库,安装命令:sudo apt install libssl-dev

开放板上的其他软件,可以用命令行安装。

结果演示:

>>>点此查看全文

3.在 VisionFive2 上安装ROS2 humble(1)

ROS(Robot Operating System)是一种用于编写机器人软件的灵活框架。它是一个工具(tools)、库(libraries)和约定(conventions)的集合,旨在简化在各种机器人平台上创建复杂而健壮的机器人行为的任务。

ROS2 humble 是最新的 LTS 版本,官方发布在 Ubuntu 22.04 上,目前 openEuler ROS sig 已经将 ROS2 humble 带到 openEuler 22.03 LTS 上,并进一步尝试了对于 RISC-V 架构的支持,目前在 RISC-V 可以安装的包有 900+ 个,详细列表请查看附件中的 packages.list.

现在在 openEuler RISC-V 2203 上已经可以使用 dnf 来安装 ros 相关软件包。

一、系统准备

目前 openEuler RISC-V 仅在 2203 版本提供了 ROS2 humble 的支持,可以参考以下文章在 VisonFive2 上安装 openEuler RISC-V 2203:

  • 在 VisionFive2上安装 openEuler RISC-V 2203 操作系统
  • 在 VisionFive2 上如何更快的向 nvme 硬盘安装操作系统
  • 从 nvme 磁盘启动 VisionFive2 并对磁盘分区扩容

二、安装

修改软件源,复制 ROS.repo (见附件))到 /etc/yum.repos.d/ROS.repo,或者 执行以下命令:

bash -c 'cat << EOF > /etc/yum.repos.d/ROS.repo
[openEulerROS-humble]
name=openEulerROS-humble
baseurl=http://123.60.74.95:3389/home:/Z572:/ros/openEuler_22.03_22.03/
enabled=1
gpgcheck=0
EOF'

(左右移动查看全部内容)

手动安装尚未推送到源里的依赖:

dnf install -y \
http://123.60.74.95:3389/openEuler:/22.03:/Epol/22.03/riscv64/glog-0.3.5-1.oe2203.riscv64.rpm \
http://123.60.74.95:3389/openEuler:/22.03:/Epol/22.03/riscv64/glog-devel-0.3.5-1.oe2203.riscv64.rpm \
http://123.60.74.95:3389/openEuler:/22.03/22.03/riscv64/suitesparse-5.10.1-2.oe2203.riscv64.rpm \
http://123.60.74.95:3389/openEuler:/22.03/22.03/riscv64/suitesparse-devel-5.10.1-2.oe2203.riscv64.rpm

(左右移动查看全部内容)

在 VisionFive2 上体验 ROS2 humble(2)

>>>点此查看全文

4.利用VF2部署一个网络摄像头

本来今天想下载编译openWRT,后来发现tf卡空间分配问题,明天再调整吧,看了看桌上的USB摄像头,今天晚上就你出场了。

一开始我是犹豫的,因为RISC-V的生态,不一定能部署的上相关软件,但是JH7110,加上Imagination的GPU,再加上Debian OS,想不出会有什么不兼容的场景,最大风险可能来自CPU,有的话应该都能解决掉,那就上吧。

软件环境、源码下载、编译和安装、服务启动(本部分小编略写,请点击阅读全文查看)

网络摄像头测试

(一)在线视频查看

(二)取一张图,取一张图的URL为`IP:8080?action=snapshot,直接给自己照相:

一些体会

全程下来无错误,整个软件安装非常顺利,本以为会出现的各种小问题一个都没。

JH7110 CPU功能强大,之前在H616上也编译过mjpg-streamer,耗时跟VF2完全不同,在VF2上简直飞一般编译安装。

GPU(Imagination BXE-4-32 GPU)还没有测试,按理来说Imagination的应该兼容性和性能不会有什么大问题,下次有时间可以测试下。

>>>点此查看全文


5.基于昉·星光2的openWRT

烧写、配置和测试

自从上一篇玩多媒体的文章后,一直想在VF2的Imagination BXE-4-32 GPU上搞点小事情来,在最新的Debian OS上编译好openCV后,正兴致勃勃的计划搞点猫猫狗狗识别demo,连haarcascade数据都准备好了,突然听到前方探路说图像不能显示,再三确认后答复依旧,遂放弃这一打算。这几天正打算去社区官网下个源码,基于visionFive的BSP编个IMG来试试是否可行,毕竟VF2的BSP貌似还没有,如此周密的计划,想到这里,我不由得笑了~

刚好收到了Chloe小姐姐的mail,小姐姐在信中介绍了RV社区和openWRT社区的情报,说有大佬已经发布了openWRT的固件,哪涅?既然大佬有img,先上手操练起来。

一、固件烧写

RV社区IMG下载地址(适用visionfive2-v1.3B的openwrt固件—集成了10余种我日常使用的插件。- 昉·星光 2(中文论坛) - RVspace Forum)。

将IMG从weiyun上下载下来,利用U盘烧写工具,我比较喜欢和习惯Rufus,将openwrt-visionfive2-generic-visionfive2-ext4-sdcard.img烧进TF卡,然后上电启动。

U-Boot SPL 2021.10 (Feb 28 2023 - 21:44:53 +0800)
DDR version: dc2e84f0.
Trying to boot from SPI


OpenSBI v1.2
   ____                    _____ ____ _____
  / __ \\                  / ____|  _ \\_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \\ / _ \\ '_ \\ \\___ \\|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \\____/| .__/ \\___|_| |_|_____/|____/_____|
        | |
        |_|


Platform Name             : StarFive VisionFive V2
Platform Features         : medeleg
Platform HART Count       : 5
Platform IPI Device       : aclint-mswi
Platform Timer Device     : aclint-mtimer @ 4000000Hz
Platform Console Device   : uart8250
Platform HSM Device       : jh7110-hsm
Platform PMU Device       : ---
Platform Reboot Device    : pm-reset
Platform Shutdown Device  : pm-reset
Firmware Base             : 0x40000000
Firmware Size             : 292 KB
Runtime SBI Version       : 1.0


Domain0 Name              : root
Domain0 Boot HART         : 1
Domain0 HARTs             : 0*,1*,2*,3*,4*
Domain0 Region00          : 0x0000000002000000-0x000000000200ffff (I)
Domain0 Region01          : 0x0000000040000000-0x000000004007ffff ()
Domain0 Region02          : 0x0000000000000000-0xffffffffffffffff (R,W,X)
Domain0 Next Address      : 0x0000000040200000
Domain0 Next Arg1         : 0x0000000042200000
Domain0 Next Mode         : S-mode
Domain0 SysReset          : yes


Boot HART ID              : 1
Boot HART Domain          : root
Boot HART Priv Version    : v1.11
Boot HART Base ISA        : rv64imafdcbx
Boot HART ISA Extensions  : none
Boot HART PMP Count       : 8
Boot HART PMP Granularity : 4096
Boot HART PMP Address Bits: 34
Boot HART MHPM Count      : 2
Boot HART MIDELEG         : 0x0000000000000222
Boot HART MEDELEG         : 0x000000000000b109




U-Boot 2021.10 (Feb 28 2023 - 21:44:53 +0800), Build: jenkins-VF2_515_Branch_SDK_Release-31


CPU:   rv64imacu
Model: StarFive VisionFive V2
DRAM:  4 GiB
MMC:   sdio0@16010000: 0, sdio1@16020000: 1
Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment


StarFive EEPROM format v2

(左右移动查看全部内容)

图片

看看系统信息:

root@OpenWrt:/# uname -a
Linux OpenWrt 6.1.35 #0 SMP Fri Jun 30 12:46:49 2023 riscv64 GNU/Linux
root@OpenWrt:/#

(左右移动查看全部内容)

二、网络配置

主要思路是先把VF2网络配通,其他小功能可以直接在openWRT的网页管理侧去配置。

>>>点此查看全文