1. 初识RK3588的RGA:你的图像处理“外挂”
如果你正在玩RK3588这块性能强悍的芯片,无论是做AI视觉盒子、工业平板还是高性能边缘计算设备,肯定会遇到一个头疼的问题:图像处理太耗CPU了。一张1080P的图片做个缩放、旋转或者格式转换,CPU吭哧吭哧算半天,帧率上不去,功耗还下不来。这时候,你就需要请出RK3588内置的“秘密武器”——RGA(Raster Graphic Acceleration Unit,光栅图形加速单元)。
简单来说,RGA就是一个独立的2D图形硬件加速器。你可以把它想象成你电脑里的独立显卡,专门负责处理那些重复性高、计算密集的2D图形操作。在RK3588上,它尤其强大,因为它集成了不止一个RGA核心。根据官方资料,RK3588通常搭载了两个RGA3核心和一个RGA2核心,这意味着它的并行处理能力非常可观。RGA能干的事情很多,比如图像的缩放、旋转、裁剪、格式转换(比如RGB转YUV)、颜色填充、图像叠加(Alpha混合)等等。最关键的是,这些操作都是硬件加速的,速度极快,几乎不占用CPU资源,能让你的应用跑得又流畅又省电。
我刚开始接触的时候,也觉得这玩意儿配置起来有点门槛,官方文档虽然全,但都是散点,新手容易迷路。网上找的demo,十有八九一编译就报错,不是交叉编译链不对,就是库路径找不到,非常劝退。所以,我打算用这篇实战笔记,把我从零开始搭建环境、编译第一个缩放demo、再到成功在板子上跑起来的全过程,以及中间踩过的所有坑,都详细记录下来。目标就一个:让你照着做,就能在自己的RK3588开发板上,成功调用RGA完成一次图像缩放,感受一下硬件加速的“飞一般”的感觉。无论你是嵌入式新手,还是有一定经验的开发者,这篇指南都会帮你把路铺平。
2. 环境搭建:工欲善其事,必先利其器
在开始写代码之前,我们得先把“战场”布置好。这里主要涉及两端的准备:你的开发主机(通常是x86的Ubuntu电脑)和目标设备(RK3588开发板)。整个过程的核心是交叉编译:在x86电脑上编译出能在ARM架构的RK3588上运行的程序。
2.1 开发主机环境准备
首先,确保你的Ubuntu开发机上已经安装了必要的工具。打开终端,运行以下命令来安装基础编译工具和CMake:
sudo apt-get update
sudo apt-get install build-essential cmake git
接下来是最关键的一步:获取正确的交叉编译工具链。RK3588是64位的ARMv8-A架构(aarch64)。你需要一个针对aarch64-linux-gnu的交叉编译器。通常,你可以从Linaro或Arm官方获取。这里我推荐使用Rockchip官方SDK里自带的,或者更通用的gcc-aarch64-linux-gnu。在Ubuntu上,可以直接安装:
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
安装完成后,验证一下工具链是否可用:
aarch64-linux-gnu-gcc --version
如果能看到类似“aarch64-linux-gnu-gcc (Ubuntu 9.x.x-xx) 9.x.x”的输出,说明安装成功。这个编译器会在你的/usr/bin/目录下。
2.2 获取librga源码
RGA的功能通过一个名为librga的用户态库来提供。我们需要从Rockchip的官方仓库获取源代码。我强烈建议使用Git克隆,这样可以方便地切换到稳定的版本。
git clone https://github.com/rockchip-linux/librga.git
cd librga
克隆下来后,先别急着编译。我建议先查看一下当前的标签(tag),选择一个稳定的版本进行开发,避免使用正在剧烈开发的主分支。可以先用git tag命令看看有哪些版本,然后用git checkout切换到某个稳定版本,比如我写这篇文章时,最新的稳定版本是v1.10.1。
git checkout v1.10.1
进入librga目录后,你会看到里面包含了库的源代码、头文件、编译好的库(在libs/目录下)、示例程序(samples/)以及工具链配置文件(toolchains/)。这个目录结构非常清晰,我们接下来的操作主要围绕samples/resize_demo这个图像缩放的例子展开。
2.3 理清关键目录与文件
在动手修改之前,我们先搞清楚几个关键路径,这能避免很多“文件找不到”的错误:
- 头文件路径:
include/目录。你的程序需要包含这里的RgaApi.h或im2d.h等


273

被折叠的 条评论
为什么被折叠?



