
清空记录
历史记录
取消
清空记录
历史记录

第三方系统适配一直是瑞芯微RK系列平台开发者的难题—SoC内部集成的GPU、RGA、VPU、ISP、NPU等硬件加速单元,在Android中有HAL层统一管理,但在Debian这类Linux系统中全靠开发者手动打通。
本文以触觉智能RK3576开发板Purple Pi OH2及其SDK为基础演示,该方法同样适用于RK3568、RK3588、RK3562等主流芯片,只需更换对应预编译包即可复用。
目录-上篇
1.为什么第三方系统适配是"硬骨头"
2.RK平台需要适配的硬件全家桶
3.软件适配地图:external仓库→deb包
4.构建Debian根文件系统
1.为什么第三方系统适配是"硬骨头"
RK平台(RK3568/RK3576/RK3588/RK3562)和传统"纯CPU应用处理器"最大的不同,是SoC内部集成了一整套硬件加速器:
•GPU:Mali系列图形处理器,跑OpenGL ES显示加速
•RGA:2D图形加速器(旋转、裁剪、缩放)
•VPU:视频编解码器(H.264 / H.265 / VP9…)
•ISP:图像信号处理(Camera 拍照画质的关键)
•NPU:神经网络处理器(AI 推理,RK3576 有 6 TOPS 算力)
在Android系统中,这些硬件由HAL 层+系统服务(SurfaceFlinger、MediaCodec、CameraProvider)统一管理,App无感知。而在类Debian系统中,这些服务统统不存在——你需要把对应的用户态库(libmali、librga、librockchip-mpp、librknnrt 等)装进文件系统,再把udev规则、服务脚本、环境变量配好,应用(X11/GStreamer/V4L2/RKNN应用)才能按标准接口访问硬件。
而其中最大的坑在于:类Debian系统发行版众多,比如Ubuntu、库版本各不相同,官方预编译包不一定兼容你的系统版本,常常需要"重新部署源码到目标机器编译"。适配工作的本质,就是把"驱动+用户态库+框架补丁+配置文件"这套组合拳打对。
2、RK平台需要适配的硬件全家桶
硬件 | 作用 | RK3576参数 | 内核地址/节点 |
GPU | 3D图形加速(OpenGL ES) | Mali-G52 MC3(Bifrost 架构) | 0x27800000(arm,mali-bifrost) |
RGA | 2D旋转/裁剪/ 缩放加速 | RGA2 | 内核rockchip,rk3576-rga |
VPU | 视频编解码 | H.265/H.264 4K编解码 | MPP框架访问 |
ISP | 图像信号处理 | 16MP | camera_engine_rkaiq访问 |
NPU | 神经网络推理 | 6TOPS(双核) | 0x27700000(rockchip,rk3576-rknpu) |
Wi-Fi/BT | 短距通信 | 外挂模组 | 因板卡而异 |
这些硬件全部集成在SoC内部,意味着适配不涉及"装驱动"(驱动随内核走),重点全在用户态软件层。
3、软件适配地图:external仓库→deb包
官方SDK把每个硬件模块的用户态源码放在SDK/external/下,并把编译好的安装包集中放在SDK/debian/packages/
源码位置(SDK/external/) | 硬件 | 功能 | debian/packages/arm64/预编译包 |
libmali | GPU | OpenGL ES用户态接口 | libmali/libmali-*.deb(按GPU型号分多个包) |
xserver | GPU | Xserver硬件加速补丁 | xserver/*.deb |
linux-rga | RGA | 2D加速用户态接口 | rga2/librga*.deb |
mpp | VPU | 视频编解码中间层 | mpp/librockchip-mpp*.deb、rockchip-mpp-demos |
rknpu2 | NPU | NPU用户态接口 | rknpu2/rknpu2.tar |
camera_engine_rkaiq | ISP | ISP用户态接口 | rkaiq/camera_engine_rkaiq_rk3576_arm64.deb |
drm-cursor | GPU | 鼠标硬件光标层 | libdrm-cursor/*.deb |
每个模块的安装包都按芯片型号细分,这是适配的第一关键点——选错包,硬件加速直接不生效。例如libmali目录下同时存在bifrost-g31、bifrost-g52、valhall-g610、midgard-t86x、utgard-450等包,对应不同芯片的GPU:
芯片 | GPU 型号 | 适配的 libmali 包 |
RK3568 | Mali-G52(Bifrost) | libmali-bifrost-g52-*.deb |
RK3576 | Mali-G52(Bifrost) | libmali-bifrost-g52-g24p0-x11-wayland-gbm_1.9-1_arm64.deb |
RK3588 | Mali-G610(Valhall) | libmali-valhall-g610-*.deb |
同理,rkaiq目录下也有
camera_engine_rkaiq_rk3568/_rk3576/_rk3588/_rk3562四个包,RK3576要用camera_engine_rkaiq_rk3576_arm64.deb。
4、Debian根文件系统
适配的落地物就是一份"定制好的根文件系统"。SDK中debian/目录提供了完整的构建脚本链:
•第一步mk-base-debian.sh:基于live-build配置(debian/ubuntu-build-service/bookworm-*-arm64/),从Debian官方源生成基础根文件系统linaro-bookworm-alip-*.tar.gz。
•第二步mk-rootfs-bookworm.sh:这是适配的主战场—— 解压基础系统,安装全部RK预编译包、叠加overlay配置、进chroot做系统级定制(下文第五节详解)。
•第三步mk-image.sh:跑post-build.sh(修正fstab分区挂载、OS标识等),最后用mkfs.ext4-d binary打成linaro-rootfs.img,交给打包脚本生成烧录镜像。
overlay机制是适配的"配置注入点",脚本里有三层:
目录 | 内容 | 说明 |
debian/overlay/ | etc、usr、home | 核心配置:udev 权限规则、X11、Powermanager、profile.d 等 |
debian/overlay-firmware/ | 固件 | Wi-Fi/BT 等外设固件 |
debian/overlay-debug/ | adb、视频、camera 测试文件 | 仅VERSION=debug时打入, 同时多装 glmark2 |
掌握了上篇的全景框架后。下篇我们将深入适配系统实战,逐段拆解每个服务的适配细节,并提供完整的验证清单与排坑指南。
参考文档
•《Rockchip第三方系统适配开发指南》(docs/cn/Linux/System/)
•debian/mk-rootfs-bookworm.sh、debian/mk-base-debian.sh、debian/mk-image.sh
•《Rockchip_Developer_Guide_MPP_CN.pdf》(MPP接口)
•《Rockchip_Developer_Guide_Linux_WIFI_BT_CN.pdf》(Wi-Fi/BT)
