RV1126——音视频开发环境搭建、固件烧录、网络调试、demo运行

自学完linux基础,开始学习RV1126 38板子的开发,以下是对开发环境和固件烧录,还有demo运行的全流程

一、安装环境

1.1 选型思路:独立虚拟机做 RV1126 开发的必要性

我前期花费 1 个月从零自学 Linux 基础操作,原本已有一套日常练手的 Ubuntu 虚拟机。考虑到 RV1126 原厂 SDK 依赖繁杂,包含交叉编译工具链、32 位兼容库、NFS/TFTP/ADB、音视频编译依赖等大量环境包 ,如果和日常 Linux 学习环境混用,极易出现库版本冲突、系统环境被污染,一旦环境崩掉会同时影响学习和项目调试。 因此决定单独新建一台专用虚拟机,专门用于 RV1126 音视频项目编译调试。为省去从零安装系统、逐条配置依赖的繁琐步骤,我直接选用大佬预置好 RV1126 开发依赖的成品 Ubuntu20.04 镜像,大幅节约环境部署时间。

本次我采用的是的rv1126 38板

1.2 虚拟机硬件参数配置

基于 RV1126 全量 SDK 编译吃内存、占用磁盘空间大的特性,在 VMware 中提前配置硬件规格:

  1. CPU:分配 4 核处理器,满足源码并行编译算力需求;
  2. 内存:8GB,编译 Buildroot 固件、FFmpeg、MPP 音视频库时避免内存不足编译中断;
  3. 硬盘:60GB,预留 SDK 源码、编译镜像、交叉工具链、工程文件存储空间;
  4. 网卡:默认桥接模式,后续实现 Windows、虚拟机、RV1126 开发板三者局域网互通。

1.3 成品开发镜像导入虚拟机

1.3.1 下载预置开发镜像

资源来源:RV1126 配套 Ubuntu20.04 成品虚拟机镜像,镜像内部已经预装好全套开发依赖:gcc/g++ 编译套件、32 位系统兼容库、git/repo、adb、nfs/tftp 服务、python 编译环境等,开箱即可用于交叉编译,无需手动逐条apt安装依赖。

1.3.2 VMware 导入镜像

  1. 打开 VMware 软件,选择「打开虚拟机」,选中下载后的.vmx镜像文件;
  2. 首次开机选择「我已复制该虚拟机」,避免虚拟机 UUID 冲突;
  3. 启动系统,登录预设用户账号,完成虚拟机开机初始化。

1.4 SDK相关

进入终端切换root用户,root是全权限用户模式,su进入,sudo是单次临时提权,如果第一次我们su之后,输完密码不能直接进入,那我们就要手动给root设置个密码,

复制代码
sudo passwd root

再次su,尽可以进入root模式,进入opt目录可以看到多版本SDK,我使用rv1126_rv1109_v2.2.0_20210825版本源码。

复制代码
su
cd /opt
ls

二、整体编译SDK环境

2.1 镜像编译

在root用户下,进入opt中的rv1126_rv1109_linux_sdk_v1.8.0_20210224文件夹

复制代码
cd /opt
cd rv1126_rv1109_linux_sdk_v1.8.0_20210224

进入之后调用source envsetup.sh指令选择开发板类型,选择85,它是适配38板子的选项

复制代码
source envsetup.sh

使用./build.sh lunch去选择Board类型,选择2

复制代码
./build.sh lunch

使用./build.sh去整体编译SDK

复制代码
./build.sh

整体编译这个时间很长,需要等一个多小时,

编译出对应的镜像会放在rockdev中,

上面这里是编译出来的整个img,那我们在开发中需要用到的是update.img,update.img可以烧录整个板子。

2.2 创建共享文件夹

在开发时经常遇到将Ubuntu编译好的文件要放到windows上进行烧录,此时创建一个VMware共享文件夹

  1. 虚拟机关机 / 挂起,编辑虚拟机设置

VMware 选中当前 Ubuntu 虚拟机 → 右键【设置】→【选项】→【共享文件夹】

  • 勾选:总是启用
  • 点击【添加】,向导下一步,选择 Windows 本地文件夹(比如桌面)
  • 勾选「只读」不要选,确定保存。
  1. 开启 Ubuntu 系统

共享目录默认挂载路径:/mnt/hgfs

复制代码
ls /mnt/hgfs

能看到 Windows 桌面文件即挂载成功。

  1. 文件使用
  • Ubuntu 拷文件到 Windows: cp 可执行文件 /mnt/hgfs/ 复制完立刻出现在 Windows 对应文件夹。

我们就要把刚才编译出来的update.img放到共享文件夹里。

三、烧录固件(给板子装系统)

类似给新组装的电脑装 Windows,RV1126 是裸硬件,没有操作系统无法运行程序;你通过 RK 工具把编译好的 Linux 固件(内核 + 根文件系统 + 驱动)写入板载 Flash。

  • 芯片上电后从 Flash 启动 Linux 系统,网卡、USB、摄像头、MPP 编解码等硬件驱动才会加载生效;
  • 没有固件就是一块空白电路板,不能执行任何 Linux 命令、跑音视频程序。

根据板子手册将线接好,

把USB线插入电脑并同时打开瑞芯微开发工具,此时工具就会提示发现一个ADB设备,这说明设备已经连上了,注意:此时可以将虚拟机关机,烧录暂时用不到,插上板子后总是弹窗还会影响连接

但是此时设备还不能进行固件烧写,因为RV1126的板子固件烧写需要进入MASKROM模式才行。要进入MASKROM模式首先要在此模式下点击切换,此时模式变成了 LOADER 模式如下图所示:

变成LOADER模式后再点击右上角的高级功能,此时再点击进入Maskrom模式。进入Maskrom模式后就可以烧录固件了。

点击上面的**升级固件,**然后选择我们编译好的update.img固件,最后点击升级按钮就可以成功烧录固件。

烧录成功以后,等一会板子会重新进入ADB模式,显示发现一个ADB设备

四、SSH登录

4.1 ADB 调试(USB 调试通道)

通过 OTG USB 线,Windows / 电脑和板子建立 USB 虚拟通道,不用网线就能进板子 root 终端(就是敲adb shell进系统)。

  1. 刚烧完固件、网口没调试通前唯一调试手段 :网口没 IP 连不上时,靠 ADB 查看ifconfig、调试系统、修改配置;
  2. 短距离快速调试:临时传文件、查看日志、启停程序,不用插网线,烧录后开机首选调试方式。近距连接,大批量开发、远端调试不方便,所以需要网口方案。

配置ADB步骤:

将ADB放在一个英文路径里,

win+r打开运行界面输入sysdm.cpl回车进入系统属性页面

高级→环境变量→系统变量→双击Path→新建→输入路径→确定→保存

安装瑞芯微驱动

win+r输入cmd,命令行输入adb shell

输入ifconfig,查看板子的ip地址

如果没有显示板子的IP地址,可以输入ifconfig eth0 192.168.100.75,即可配置板子的IP地址,然后再ifconfig查看板子的IP地址

3、网线直连 + ping 通(以太网链路打通)

配置电脑和板子同网段 IP,物理网线建立局域网,ping用来验证网线、网卡驱动、IP 配置全部正常。

  1. ping通=底层网络没问题,是 SSH、NFS、网络流媒体的前置校验;
  2. 以太网传输速率远高于 ADB USB,后续传大体积音视频程序、码流数据效率更高。

右击电脑网络标志,打开"网络和internet设置",更改适配器选项

选择板子的以太网→属性→ipv4协议→输入192.168.100.80→确认

同频段网络才可以通信,所以前三位必须和板子一致,最后一位不一致

cmd进行通信测试输入ping 192.168.100.75,看看能否通信正常

4、SSH 远程登录(以太网远程终端)

依托 ping 通的网线网络,在电脑 CMD / 终端通过ssh root@IP远程登录板子 Linux 终端,和 adb shell 功能一致,但走网线。

  1. 核心开发刚需:NFS 开发依赖 SSH + 网口 后续你在 Ubuntu 虚拟机交叉编译音视频程序,通过 NFS 把编译目录挂载到板子,板子直接跑虚拟机里的程序,不用每次把固件 / 程序拷进 Flash,改代码秒生效;
  2. 脱离 USB 束缚:板子放远端工位,电脑局域网远程操作,量产调试、长时间抓音视频日志更方便。

使用MobaXterm配置ssh

打开MobaXterm,点击Session,打开ssh,输入板子的ip地址192.168.100.75,用户名root,点击确认

输入板子密码:rockship

点击yes

设置MobaXterm的主密码

出现此界面板子的ssh就配置成功了

烧固件(硬件跑Linux) → ADB(初期无网调试系统) → ping通(验证网口可用) → SSH(正式网络开发环境) 最终目的:搭建完整开发环境,用来做摄像头采集、H.264/H.265 编码、RKMedia/MPP 音视频业务开发。

五、交叉编译工具链&运行demo

5.1 什么是交叉编译?

在电脑(Ubuntu/x86)上,编译出能在开发板(RV1126/ARM)上运行的程序,这个过程就叫交叉编译。

一句话总结: 电脑编译 → 板子运行

5.2 为什么要交叉编译?

因为:

  1. 电脑和开发板的芯片架构不一样

    • 电脑:x86 架构
    • RV1126:ARM 架构 两者不兼容,电脑编译出来的程序,板子跑不了;板子也没法自己编译(性能太弱)。
  2. 开发板性能差,不能自己编译代码 RV1126 是小芯片,内存小、CPU 弱,根本跑不动庞大的编译程序。

  3. 效率高 电脑几十秒编译完,板子可能要几十分钟。

5.3 交叉编译过程

在编写程序之前先找到编译链的位置,我这个环境下他的位置如下图

常用的的交叉编译工具链:arm-linux-gnueabihf-g++和arm-linux-gnueabihf-gcc

1.arm-linux-gnueabihf-g++:C++文件编译器

2.arm-linux-gnueabihf-gcc:C文件编译器

建一个放demo的目录,擦黄健一个.c文件,如何创建文件和目录,这都是基础的linux命令,不会的可以去我之前的博客里面先学习一下

我这边创建的是rv1126_helloworld.c

复制代码
#include <stdio.h>

int main()
{
    printf("hello rv1126 \n");
    return 0;
}

再创建一个Makefile文件,里面写脚本

复制代码
CC=/opt/rv1126_rv1109_linux_sdk_v1.8.0_20210224/prebuilts/gcc/linux-x
86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnu
eabihf-gcc           //gcc编译器的路径

all:
        $(CC) rv1126_helloworld.c -o rv1126_helloworld

保存退出,命令行输入make,就能编译成功了,可以试一下,在本地上本能不能运行

复制代码
./rv1126_helloworld

肯定是运行不了的,因为我们编译成的arm环境的程序了

接下来把这个编译好的程序复制到共享文件夹

复制代码
cp rv1126_helloworld /mnt/hgfs/UbuntuShared/

上传文件到rv1126板子上

点击左上角绿色的上传按钮,找到当时创建共享文件夹时windows上的位置,将rv1126_helloworld上传,注意路径是tmp,如果不是,可以在对话框里输入/tmp/回车即可

在这里面编译这个程序./rv1126_helloworld,就会打印相关信息。

相关推荐
辰辰观影39 分钟前
Windows网盘视频播放器推荐:无广告4K HDR怎么选
音视频
2601_966827452 小时前
电视端云盘在线播放怎么选?支持4K HDR的应用推荐
音视频
开开心心就好3 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
AI视频工具指南7 小时前
AI视频的声音和画面怎么配合?先分清谁在传递信息
人工智能·aigc·音视频
辰辰观影9 小时前
无广告播放器推荐来啦
音视频
TrueDei9 小时前
GStreamer 使用 valve 分别控制音视频流的暂停与恢复
音视频
一条破秋裤10 小时前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频
2601_9668274511 小时前
视频里的特效字幕怎么翻译?外挂字幕与AI字幕一键处理教程
音视频
八月的雨季 最後的冰吻12 小时前
音视频面试--延迟优化
面试·职场和发展·音视频
智能直播13 小时前
MEDAI-W2_Tinyalsa音频_HDMI输出_CSDN文章
音视频·实时音视频·视频编解码