保姆级教程:在香橙派5Plus(RK3588)上手动更新RGA驱动到1.3.3版本
RK3588作为瑞芯微旗舰级芯片,其内置的RGA(Raster Graphic Acceleration)硬件加速模块在图像处理、格式转换等场景中表现优异。但官方驱动迭代速度较快,许多开发者发现1.3.1版本存在YUV420SP-NV21转换异常的问题,而1.3.3版本不仅修复了该缺陷,还新增了对10bit色深的支持。本文将手把手带你完成从源码获取到固件烧录的全流程。
1. 环境准备与驱动源码获取
在开始前,请确保你的香橙派5Plus已连接至开发主机,并准备好以下环境:
- 交叉编译工具链:建议使用官方推荐的gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu
- 内核源码树:需与当前板载系统版本严格一致(可通过
uname -r查看) - 存储空间:至少预留20GB空闲空间用于内核编译
获取驱动源码有两种推荐方式:
GitHub官方仓库(适合网络通畅环境):
git clone https://github.com/airockchip/librga.git cd librga/drivers国内镜像加速(推荐):
wget https://mirror.rock-chips.com/librga/rga_driver_1.3.3.tar.gz tar -xzvf rga_driver_1.3.3.tar.gz
注意:若使用RK3588S等衍生型号,需确认驱动包中包含
rga3目录(对应RGA3.1核心)
2. 驱动文件替换与路径验证
解压后的驱动文件需要精确替换到内核源码的特定位置:
# 进入内核源码目录 cd ~/linux_sdk/kernel # 备份原驱动(重要!) cp -r drivers/video/rockchip/rga3 drivers/video/rockchip/rga3_backup # 替换新驱动 cp -r /path/to/new_rga/drivers/video/rockchip/rga3 drivers/video/rockchip/关键文件校验清单:
| 文件路径 | 作用 | 1.3.3版本新增特性 |
|---|---|---|
| rga3/rga3.h | 硬件寄存器定义 | 新增RGA3_CTRL_10BIT标志位 |
| rga3/rga3_drv.c | 核心驱动逻辑 | 修复NV21转换的DMA映射错误 |
| rga3/rga3_mmu.c | 内存管理单元 | 优化大尺寸图像处理性能 |
验证替换是否成功:
grep "RGA_DRIVER_VERSION" drivers/video/rockchip/rga3/rga3_drv.c # 应显示"#define RGA_DRIVER_VERSION "1.3.3""3. 内核编译与配置调整
RK3588的内核编译需要特别注意以下几点:
配置菜单调整:
make ARCH=arm64 menuconfig确保以下选项被启用:
- Device Drivers → Graphics support → Rockchip RGA3 support
- 取消勾选"Build RGA as module"(建议直接编译进内核)
编译指令优化:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)为提高编译速度,可添加:
export KBUILD_BUILD_TIMESTAMP='$(date)' export KBUILD_BUILD_USER=orangepi常见编译问题处理:
- 若出现
undefined reference to rk_drm_get_lcdc_size错误:# 修改drivers/video/rockchip/rga3/rga3_drv.c - #include <drm/drm_fourcc.h> + #include <uapi/drm/drm_fourcc.h>
- 若出现
编译完成后,在arch/arm64/boot/下生成的Image文件即为新内核镜像。
4. 固件烧录与功能验证
推荐使用RKDevTool进行烧录,具体步骤:
准备升级包:
mkdir upgrade_pkg cp arch/arm64/boot/Image upgrade_pkg/ cp arch/arm64/boot/dts/rockchip/rk3588-orangepi-5plus.dtb upgrade_pkg/进入Loader模式:
- 按住香橙派5Plus的Maskrom键(位于USB-C口旁边)
- 连接Type-C到PC,松开按键
- RKDevTool应显示"Found One LOADER Device"
分区烧录配置: 在RKDevTool界面:
- 勾选
kernel和resource分区 - 分别选择刚才准备的Image和dtb文件
- 点击"执行"按钮开始烧录
- 勾选
烧录完成后,通过以下命令验证驱动版本:
dmesg | grep RGA # 预期输出:[ 3.141592] RGA3: Driver version: 1.3.35. 新特性实测与性能对比
10bit色深支持测试:
# 安装测试工具 sudo apt install librga-dev rga_test --format=NV15 --width=1920 --height=1080对比1.3.1版本,10bit处理速度提升约17%:
版本 1080p NV15转RGB888耗时(ms) 1.3.1 不支持 1.3.3 8.2 NV21转换稳定性测试: 连续执行100次YUV420SP-NV21到RGB转换,1.3.3版本零失败,而1.3.1版本会出现约5%的概率性花屏。
多核利用率优化: 使用
sudo cat /proc/interrupts | grep rga观察中断分布,1.3.3版本能更好地利用RGA3的双核架构。
遇到任何异常时,可快速回退到旧版驱动:
cp -r drivers/video/rockchip/rga3_backup drivers/video/rockchip/rga3 # 重新编译烧录即可