Rockchip · AI & Linux Hub

Linux и загрузка

Rockchip: адаптация сторонних систем

Rockchip: адаптация сторонних систем — V1.0.2

· ArmSoM Editorial · Rockchip source documentation · 5 мин чтения

Платформенная справка ArmSoM: RK-KF-YF-917 V1.0.2, 9/10 страниц CN/EN. Область оригинала — RK3568/Linux 4.19 и RK3588/Linux 5.10, главным образом пользовательские библиотеки и службы Debian-подобных систем. Установка на всех платах ArmSoM не гарантируется. Сверяйте SoC, SDK/BSP, ядро, архитектуру, ABI пакетов, GPU, камеру и беспроводной модуль. Команды — исходные примеры, на оборудовании ArmSoM не выполнялись.

Оба оригинала V1.0.2; сохранены восемь глав, обе таблицы и все примеры. Рисунков нет. §4.1 говорит opengl, таблица и §4.6 — opengles: противоречие сохранено, это не современная матрица поддержки. Команда §5.5 с uri/file/кавычками и видеовыходом — неполный исходный пример. В §6.2 английский путь /tmp /0.yuv содержит пробел, китайский — /tmp/0.yuv. Написания сохранены с предупреждением; проверяйте реальный синтаксис и узлы.

1. Аппаратные блоки RK, требующие адаптации

GPU (Graphics Processing Unit), также называемый графическим ядром или визуальным процессором, ускоряет геометрические преобразования, освещение, кубические карты окружения, смешивание вершин, сжатие текстур, рельефное отображение и упомянутый в оригинале 256-битный движок с двойной текстурой и четырьмя пикселями. GPU интегрирован в SoC RK.

RGA — 2D-ускоритель вращения, обрезки, масштабирования и других операций; интегрирован в SoC.

VPU — ускоритель видеокодирования и декодирования нескольких форматов; интегрирован в SoC.

ISP обрабатывает сигнал переднего датчика изображения; интегрирован в SoC.

NPU — встроенный нейросетевой процессор с архитектурой параллельных вычислений, управляемых данными. Особенно подходит для больших массивов видео и изображений. Разработан для ИИ Интернета вещей, ускоряет нейросети, преодолевая низкую эффективность традиционных чипов; интегрирован в SoC.

Wi-Fi/BT — модуль связи ближнего действия, адаптированный к плате.

2. Программная адаптация RK

Путь исходников Описание
SDK/external/libmali Пользовательские интерфейсы GPU, главным образом общие OpenGL ES. Для Debian-подобных xserver/wayland приложений интерфейсы необходимо адаптировать.
SDK/external/xserver Патчи аппаратного ускорения xserver. Для xserver используйте патчи этого репозитория.
SDK/external/linux-rga Пользовательский интерфейс RGA.
SDK/external/mpp Пользовательский интерфейс VPU.
SDK/external/rknpu2 Пользовательский интерфейс NPU.
SDK/external/camera_engine_rkaiq Пользовательский интерфейс ISP.
SDK/external/drm-cursor Пользовательский интерфейс аппаратного слоя курсора.

3. Особенности программной адаптации

В Debian-подобных системах возможны многочисленные зависимости версий. Если указанные ниже пакеты не устанавливаются, перенесите исходники на целевую машину и соберите заново:

cd 'Source code directory'
sudo apt build-dep .
sudo DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -rfakeroot -b -d  -us

4. Служба отображения

4.1 Обзор

Состав отображения в Debian-подобной системе: приложение отображения + графический фреймворк + графический интерфейс + аппаратный графический блок. Примеры приложений: x11, gnome, kde, xfce4, sdl2. Фреймворки: wayland, xserver, gbm. Оригинал здесь говорит о поддержке только opengl для Rockchip; аппаратный блок — GPU. Далее приведены сочетания. Учитывайте дату оригинала и сверяйте поддержку на официальных сайтах проектов.

Приложение Поддерживаемый фреймворк Поддерживаемый интерфейс
x11 xserver opengles/gbm
gnome xserver/wayland opengles/gbm
kde xserver/wayland opengles/gbm
xfce4 xserver opengles/gbm
sdl2 xserver/wayland opengles/gbm

Сначала определите приложение отображения, затем его графический фреймворк — xserver или wayland — и выполняйте соответствующую адаптацию.

4.2 GPU

Определите xserver или wayland — два поддерживаемых в оригинале фреймворка — и установите SDK/debian/packages/”ARCH”/libmali/libmali-***.deb. Например, для x11 на RK3588 с GPU valhall-g610-g6p0 нужен пакет:

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

4.3 RGA

Установочный пакет:

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

4.4 drm-cursor

Установочный пакет:

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

4.5 xserver

Версий xserver много. Определите версию своей системы, перенесите патчи исходников RK на неё и соберите заново. Создание патчей:

cd 'source directory'

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.6 Проверка адаптации

Ускорение отображения использует стандартный интерфейс opengles. Если система использует opengl, оригинал требует перенос на opengles. При успешной адаптации во время рендеринга или перемещения окон загрузка GPU в соответствующем узле меняется. Пример RK3588:

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

Примечание: GPU-узлы различаются между платформами.

5. Видеокодирование и декодирование

5.1 Обзор

Служба состоит из верхнего мультимедийного фреймворка, промежуточной библиотеки mpp и аппаратного кодека. В открытом ПО распространён GStreamer; ниже он используется как пример. mpp связывает универсальное стороннее ПО, например GStreamer, с аппаратными кодеками.

5.2 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.3 Мультимедийное ПО

Мультимедийных фреймворков много. Оригинал рекомендует вызывать интерфейсы mpp непосредственно из проигрывателя для адаптации видеокодека. См. Rockchip_Developer_Guide_MPP_CN.pdf.

5.4 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.5 Проверка адаптации

sudo GST_DEBUG=2 gst-launch-1.0 playbin uri=file 'absolute video path' video-sink=“show sink” audio-sink=fakesink

Сообщения о вызове mpp, согласно оригиналу, показывают успешное подключение аппаратного декодирования.

6. Камера

6.1 camera_engine_rkaiq

Установочный пакет:

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

6.2 Проверка адаптации

Командой v4l2 проверьте успешный захват и корректность изображения. Узлы, форматы и разрешения различаются между камерами и платформами; измените команду под фактическое оборудование:

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 обеспечивает связь с платой при работе rknntool2 на PC. Если модель обучена на PC, преобразована в rknn и затем перенесена на плату, эта служба не нужна.

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

7.3 Демонстрации rknn

См.:

SDK/external/rknpu2/examples

8. Wi-Fi/BT

Подробности в Rockchip_Developer_Guide_Linux_WIFI_BT_CN.pdf. SDK содержит готовые пакеты:

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

ArmSoM Docs

Другие статьи по теме → · Учебные маршруты →