RK3568J 深度学习推理:通过 udev 规则免 sudo 使用 RGA 硬件加速 1. 问题背景在 RK3568J 平台上进行深度学习推理时RGARaster Graphic Acceleration光栅图形加速单元是常用的硬件加速模块用于图像缩放、格式转换、旋转等操作。很多推理框架如 RKNN-Toolkit2、OpenCV 等在底层会调用 RGA 来加速图像预处理。然而默认情况下 RGA 设备节点的权限受限普通用户无法直接访问。这就导致了一个常见问题不使用 sudo 运行时RGA 调用会报错程序自动回退到 CPU 处理推理性能大打折扣。2. 问题现象在未做任何权限配置的情况下直接以普通用户运行推理程序通常会出现类似以下现象程序日志中提示 RGA 初始化失败或打开设备失败图像预处理耗时明显增加推理整体延迟上升使用sudo运行时一切正常性能符合预期。这是因为 RGA 设备节点如/dev/rga的默认权限不允许普通用户读写。3. 解决方案通过 udev 规则设置设备权限Linux 的 udev 机制允许我们为设备节点自定义权限规则。我们可以创建一个规则文件为 RGA 设备设置0666权限使所有用户都能直接访问。3.1 创建 udev 规则文件首先创建一个新的规则文件/etc/udev/rules.d/99-rga.rulessudovim/etc/udev/rules.d/99-rga.rules3.2 写入规则内容在文件中添加以下内容KERNELrga, MODE0666这条规则的含义是对于内核名为rga的设备节点将其权限模式设置为0666即所有用户均可读写。说明系统中其他硬件设备如某些 USB 设备、GPU 设备等也常通过类似的 udev 规则来设置0666权限从而允许普通用户直接访问。我们参考这种做法为 RGA 设备进行设置。3.3 重新加载并触发 udev 规则保存文件后需要重新加载 udev 规则并触发使其生效sudoudevadm control --reload-rulessudoudevadm trigger执行完上述命令后RGA 设备节点的权限即已更新。4. 验证效果完成上述配置后无需使用sudo直接以普通用户运行推理程序即可正常调用 RGA 硬件加速# 普通用户直接运行不再需要 sudopython3 your_inference_script.py此时程序应能正常使用 RGA 进行图像预处理推理性能与使用sudo运行时一致。5. 注意事项安全性0666权限意味着所有系统用户都能访问 RGA 设备。在单用户开发板或专用推理设备上通常可以接受但在多用户共享的服务器上请评估安全风险。设备节点名称不同内核版本或驱动配置下RGA 设备节点名称可能不同如/dev/rga、/dev/rga0等。如果规则未生效请先确认实际设备节点名称ls/dev/rga*然后根据实际名称调整规则中的KERNEL匹配值。重启后是否生效udev 规则在系统启动时会自动加载因此重启后配置依然有效无需重复设置。6. 总结通过创建 udev 规则并为 RGA 设备设置0666权限我们成功解决了 RK3568J 平台上普通用户无法使用 RGA 硬件加速的问题。现在无需sudo即可正常运行深度学习推理程序充分发挥 RGA 的图像处理加速能力提升整体推理性能。