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,就会打印相关信息。

相关推荐
西安同步高经理1 小时前
国产音频频谱分析仪使用案例,多通道音频分析仪,音频频谱分析仪
大数据·人工智能·音视频
chenying9981791 小时前
掩码扩散语音克隆:参考音频为什么会被噪声“污染“?
人工智能·音视频·语音合成
古道青阳2 小时前
构建工业级短视频生成流水线:Playwright + FFmpeg 自动化指南
运维·自动化·音视频
夏夏夏果2 小时前
部署视频生成模型-美团LongCat-Video
ai·音视频
川冰ICE13 小时前
⑮ AI音乐与音频:工具详解与创作流程
人工智能·音视频
oort12314 小时前
VLStream:全开源决策式AI视频平台,赋能企业构建自主可控、降本增效的智能视觉应用介绍
大数据·开发语言·人工智能·开源·音视频·数据库架构
wangchensong15 小时前
[特殊字符] 用了一段时间 LockBox,说说我的真实感受
音视频·pdf加密·视频加密
Hommy8817 小时前
【剪映小助手】音频处理接口
前端·音视频·剪映小助手·视频剪辑自动化
若兰幽竹17 小时前
【HarmonyOS 6.1 全场景实战】《灵犀厨房》实战(二十二) | 多媒体 | AVPlayer嵌入教学视频——让智慧屏真正“活”起来
音视频·华为鸿蒙系统·harmonyos6.1.0·灵犀厨房·harmonyos6.1