保姆级教程:在Rockchip RK板子上搞定RGA、DRM、MPP三大件(附完整验证流程)

张开发
2026/4/19 17:36:20 15 分钟阅读

分享文章

保姆级教程:在Rockchip RK板子上搞定RGA、DRM、MPP三大件(附完整验证流程)
Rockchip RK平台三大件实战从零构建RGADRMMPP全栈开发环境刚拿到Rockchip开发板时面对硬件加速、显示输出和视频编解码三大核心功能很多开发者会感到无从下手。本文将带你用一台Ubuntu主机和RK3399开发板完成从工具链配置到最终Demo验证的全流程实战。不同于网上零散的教程我们会深入每个环节的底层逻辑并分享我在实际部署中遇到的典型问题及解决方案。1. 环境准备与工具链搭建1.1 基础开发环境配置在开始之前确保你的Ubuntu主机建议18.04或20.04 LTS版本已连接RK开发板。首先安装最基础的编译工具链sudo apt update sudo apt install -y build-essential git cmake \ autoconf automake libtool pkg-config \ libdrm-dev libgbm-dev libegl1-mesa-dev这些包的作用分别是build-essentialGCC/G编译器和基础开发库git/cmake版本管理和构建工具autoconf/automake自动配置脚本生成器libdrm-devDRM核心开发头文件提示如果遇到依赖冲突可以尝试apt --fix-broken install自动修复1.2 构建系统工具升级Rockchip的部分库使用meson构建系统需要手动安装最新版git clone --depth 1 https://github.com/mesonbuild/meson.git sudo cp meson/meson.py /usr/local/bin/meson sudo chmod x /usr/local/bin/meson git clone --depth 1 git://github.com/ninja-build/ninja.git cd ninja ./configure.py --bootstrap sudo cp ninja /usr/local/bin/验证安装是否成功meson --version # 应输出≥0.56.0 ninja --version # 应输出≥1.10.02. DRM显示子系统部署2.1 定制化libdrm安装Rockchip对标准libdrm进行了扩展需要从官方仓库获取git clone --branch rk33-mid-9.0-develop \ https://github.com/rockchip-linux/libdrm-rockchip.git cd libdrm-rockchip-rk33-mid-9.0-develop配置时需特别注意参数./autogen.sh --prefix/usr \ --enable-rockchip-experimental-api \ --disable-intel \ --disable-radeon \ --disable-amdgpu make -j$(nproc) sudo make install关键参数说明--enable-rockchip-experimental-api启用RK专属扩展--disable-*关闭其他GPU厂商驱动以减少依赖2.2 验证DRM功能安装完成后使用modetest工具测试sudo modetest -M rockchip正常输出应包含显示Connector信息如HDMI-A-1支持的显示模式如1920x108060支持的DRM FourCC格式列表常见问题排查找不到rockchip模块检查/lib/modules/$(uname -r)/kernel/drivers/gpu/drm/rockchip是否存在权限不足将当前用户加入video组sudo usermod -aG video $USER3. RGA硬件加速库部署3.1 源码编译与安装RGARaster Graphic Acceleration是Rockchip的2D加速引擎git clone --depth 1 https://github.com/rockchip-linux/linux-rga.git cd linux-rga meson build --prefix/usr cd build ninja sudo ninja install安装后需要配置动态链接库sudo ldconfig ls /usr/lib/librga.so* # 应显示.so .so.2 .so.2.0.03.2 功能验证使用官方Demo测试RGA转换功能unzip demo.zip cd demo make ./rga_demo --help典型测试命令./rga_demo -i input.jpg -o output.png \ --rotate 90 --format RGB888检查输出图片是否完成旋转和格式转换。性能优化技巧使用RGA_BLIT_SYNC模式避免内存拷贝对于YUV格式优先使用RK_FORMAT_YCbCr_420_SP4. MPP视频编解码框架4.1 完整编译安装MPPMedia Process Platform是Rockchip的硬件编解码框架git clone --depth 1 https://github.com/rockchip-linux/mpp.git cd mpp mkdir build cd build cmake -DRKPLATFORMON \ -DHAVE_DRMON \ -DCMAKE_INSTALL_PREFIX/usr \ .. make -j$(nproc) sudo make install关键CMake选项RKPLATFORMON启用Rockchip平台专用优化HAVE_DRMON启用DRM显示输出支持4.2 编解码测试使用官方测试工具验证H.264解码cd mpp/build/linux/arm/test ./mpi_dec_test -i test.h264 -t 7 -n 100参数说明-t 7指定H.264格式-n 100解码100帧编码测试示例./mpi_enc_test -i test.yuv -o out.h264 \ -w 1920 -h 1080 -f 0 -t 75. 三库联合验证实战5.1 准备测试项目使用mpp_linux_cpp项目进行集成测试git clone https://github.com/WainDing/mpp_linux_cpp.git cd mpp_linux_cpp修改CMakeLists.txt关键部分include_directories( /usr/include/rockchip /usr/local/include/libdrm ) target_link_libraries(mpp_linux_demo rockchip_mpp pthread drm rga )5.2 头文件适配由于DRM头文件路径差异需要修改包含方式- #include drm/drm_fourcc.h #include drm_fourcc.h5.3 构建与运行完整构建流程mkdir build cd build cmake -DCMAKE_BUILD_TYPERelease .. make -j$(nproc) ./mpp_linux_demo预期输出应包含MPP初始化成功信息DRM设备打开状态RGA硬件加速调用日志6. 深度优化与问题排查6.1 性能调优参数在/etc/environment中添加export MPP_LOG_LEVELWARN export RGA_ASYNC1 export LIBDRM_ATOMIC16.2 常见错误解决方案问题1找不到librga.sosudo ln -s /usr/lib/librga.so.2 /usr/lib/librga.so问题2MPP解码花屏在CMake中增加add_definitions(-DHAVE_AVSD1)问题3DRM模式设置失败检查内核启动参数是否包含videoHDMI-A-1:1920x108060e6.3 硬件加速状态监控实时查看RGA使用率cat /sys/kernel/debug/rga/status监控MPP解码帧率watch -n 1 cat /proc/vcodec/enc/venc_info在实际项目中这三个库的协同工作可以显著提升多媒体处理性能。以1080p视频处理为例纯软件方案CPU占用率可能高达80%而启用硬件加速后可降至20%以下。

更多文章