Skip to main content

Rockchip第三方系统适配开发指南

:::info 文档信息

文档标识:RK-KF-YF-917 · 发布版本:V1.0.1 · 发布日期:2022-02-17 · 页数:8 · 语言:中文

原始文档:Rockchip_Developer_Guide_Third_Party_System_Adaptation_CN.pdf

:::

章节大纲​

  • Rockchip第三方系统适配开发指南(P1)
    • RK平台主要需要适配的硬件(P4)
    • RK平台主要适配软件介绍(P4)
    • 软件开发适配特别说明(P4)
    • 显示服务的适配(P5)
      • GPU适配(P5)
      • RGA适配(P5)
      • drm-cursor适配(P5)
      • xserver适配(P5)
      • 如何验证是否适配成功(P6)
    • 编解码服务的适配(P6)
      • mpp适配(P6)
      • 多媒体软件适配(P6)
      • gstreamer适配(P7)
      • 如何验证是否适配成功(P7)
    • camera服务适配(P7)
      • camera_engine_rkaiq适配(P7)
      • 如何验证是否适配成功(P7)
    • NPU服务适配(P7)
      • rknn_runtime适配(P8)
      • rknn_server适配(P8)
      • rknn demo(P8)
    • Wi-Fi/BT 服务适配(P8)

在线预览​

若预览无法显示,请直接下载 PDF 后用本地阅读器打开。


1. RK平台主要需要适配的硬件​

GPU:图形处理器(英语:graphics processing unit,缩写:GPU),又称显示核心、视觉处理器,主要用于加速几何转换和光照处理、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,目前RK平台GPU硬件已经集成到SOC中。

RGA:2D图形加速器,用于加速2D图形的旋转,裁剪,缩放等操作。目前RK平台RGA硬件已经集成到SOC中。

VPU:视频编解码模块,用于加速视频编解码,支持多种格式。目前RK平台VPU硬件已经集成到SOC中。

ISP:ISP主要作用是对前端图像传感器输出的信号做后期处理等。目前RK平台ISP硬件已经集成到SOC中。

NPU:嵌入式神经网络处理器(NPU)采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。NPU处理器专门为物联网人工智能而设计,用于加速神经网络的运算,解决传统芯片在神经网络运算时效率低下的问题。目前RK平台NPU硬件已经集成到SOC中。

Wi-Fi/BT:开发板上适配的短距通信模块。

2. RK平台主要适配软件介绍​

源码位置说明
SDK/external/libmaliRK平台目前提供的针对硬件gpu的用户态函数接口,主要是 opengles通用接口,目前主流的类Debian的显示框架有xserver 和wayland,对于适配系统的APP使用的软件接口也要做相应的 修改。
SDK/external/xserverRK平台目前对xserver硬件加速的补丁,如果您的第三方系统 显示框架走的是xserver,请参考这个仓库的补丁适配。
SDK/external/linux-rgaRK平台目前提供的针对硬件RGA的用户态函数接口。
SDK/external/mppRK平台目前提供的针对硬件VPU用户态函数接口。
SDK/external/rknpu2RK平台目前提供的针对硬件NPU用户态函数接口。
SDK/external/camera engine rkaiq _ _RK平台目前提供的针对硬件ISP用户态函数接口。
SDK/external/drm-cursorRK平台目前提供的针对硬件鼠标层用户态函数接口。

3. 软件开发适配特别说明​

因为软件适配的时候,类debian系统可能存在许多版本依赖,如果下述的包安装失败,需要您重新部署源码到您的目标机器去编译。编译命令:

cd 源码目录

sudo apt build-dep .
sudo DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -rfakeroot -b -d -us

4. 显示服务的适配​

4.1 GPU适配​

先确定您系统上使用的显示框架,是xserver还是wayland,(目前只支持这两种框架) 然后安装SDK/debian/packages/"ARCH"/libmali/libmali-***.deb

比如,系统在rk3588平台上使用x11,rk3588平台使用的gpu型号是valhall-g610-g6p0,那么,需要安装

SDK/debian/packages/arm64/libmali/libmali-valhall-g610-g6p0-x11_1.9-1_arm64.deb

4.2 RGA适配​

SDK/debian/packages/'ARCH'/rga/*.deb

4.3 drm-cursor适配​

SDK/debian/packages/arm64/libdrm-cursor/*.deb

4.4 xserver适配​

因为xserver版本众多,您先确定您系统版本使用的xserver版本,然后基于我们的源码补丁,移植到您版本的xserver,然后再重新编译。

生成补丁:

cd 源码目录

git format-patch e4f4521ca

下面是编译好的1.20.11版本的安装包:

SDK/debian/packages/'ARCH'/xserver/xserver-common_1.20.11-1_all.deb
SDK/debian/packages/'ARCH'/xserver/xserver-xorg-core_1.20.11-1_'ARCH'.deb
SDK/debian/packages/'ARCH'/xserver/xserver-xorg-legacy_1.20.11-1_'ARCH'.deb

xserver还需要一个启动脚本做一些初始化操作,如果是类debian系统,可以尝试复制启动脚本进系统,如果不是, 请参考脚本自行配置:

SDK/debian/overlay/etc/X11

4.5 如何验证是否适配成功​

显示服务加速使用opengles的标准接口,如果你的系统使用opengl,请移植成opengles,如果适配成功,当渲染画面或者拖动窗口的时候,去查看平台相关的gpu节点,会有gpu利用的变化,比如RK3588平台:

cat /sys/devices/platform/fb000000.gpu/utilisation

注意:不同平台的gpu节点是不一样的。

5. 编解码服务的适配​

5.1 mpp适配​

SDK/debian/packages/'ARCH'/mpp/*.deb

注意:一些节点的权限设置,需要参考

SDK/debian/overlay/etc/udev/rules.d/99-rockchip-permissions.rules

验证mpp是否配置成功:

# mpi_enc_test -w 1920 -h 1080 -t 7 -o /tmp/test.h264
# mpi_dec_test -w 1920 -h 1080 -t 7 -i /tmp/test.h264

5.2 多媒体软件适配​

用户的多媒体框架有许多,这里比较推荐的是用户的播放器直接调用mpp的接口去进行视频编解码的适配,具体请查看mpp的接口文档《Rockchip_Developer_Guide_MPP_CN.pdf》

5.3 gstreamer适配​

RK平台目前有适配一个gst-base的预编译包:

SDK/debian/packages/'ARCH'/gst-plugins-base1.0/*.deb
SDK/debian/packages/'ARCH'/gst-plugins-bad1.0/*.deb
SDK/debian/packages/'ARCH'/gst-plugins-good1.0/*.deb

RK平台还支持gstreamer通用多媒体框架,需要您提前安装官方gstreamer组件(也可以安装上述的gst-base的预编译包,如果您的系统版本相兼容),然后再安装gst-rockchip插件:

SDK/debian/packages/'ARCH'/gst-rkmpp/*.deb

5.4 如何验证是否适配成功​

sudo GST_DEBUG=2 gst-launch-1.0 playbin uri=file视频绝对路径 video-sink=“显示sink”
audio-sink=fakesink

如果有mpp调用的字样,说明硬件解码成功适配。

6. camera服务适配​

6.1 camera_engine_rkaiq适配​

SDK/debian/packages/'ARCH'/rkaiq/camera_engine_rkaiq_'ARCH'.deb

6.2 如何验证是否适配成功​

可以使用v4l2命令查看是否抓图成功,并且查看抓出来的图是否正确:(注意:不同平台不同camera的节点,格式,分辨率等可能有所不同,请根据具体情况更换命令)

v4l2-ctl -d /dev/video0  --set-fmt-video=width=1920,height=1080,pixelformat=NV12
--stream-mmap=4 --stream-skip=3 --stream-to=/tmp/0.yuv  --stream-count=1 --
stream-poll

7. NPU服务适配​

7.1 rknn_runtime适配​

rknn_runtime主要是用户态的库,只要拷贝它到客户的文件系统中即可。

SDK/external/rknpu2/Linux/librknn_api/'ARCH'/librknn_api.so
SDK/external/rknpu2/Linux/librknn_api/'ARCH'/librknnrt.so

7.2 rknn_server适配​

rknn_server主要是pc上使用rknntool2工具时候,要求板上通信所用的服务,如果在pc上训练好模型,转化为rknn后在导入板子上,是不需要这个服务的。

SDK/external/rknpu2/Linux/rknn_server/'ARCH'/usr/bin/*

7.3 rknn demo​

请参考

SDK/external/rknpu2/examples

8. Wi-Fi/BT 服务适配​

详情请参考 《Rockchip_Developer_Guide_Linux_WIFI_BT_CN.pdf》

在SDK中有预编译包:

SDK\debian\packages\'ARCH'\rkwifibt\*.deb