Подготовка программной части для модуля NMS-SM-RK3568, Kernel 5.10 с использованием PCI камер

Сборка Linux при помощи Buildroot и Docker

Репозиторий с актуальными DTS: https://github.com/inmys/buildroot-external-inmys/tree/nms-sm-rk3568-5.10

Для выполнение следующей инструкции, на компьютере должно быть установлено Docker окружение

Подготовка окружения

Необходимо скачать папки buildroot, external и kernel, перенести их в одну папку, перейти в папку container и собрать образ контейнера следующей командой:

cd container
sudo docker build -t rk3568 .

На выходе будет образ rk3568, которым можно собирать все компоненты системы. Далее неоходимо перейти в родительский каталог

cd ..

Сборка rootfs

Команды сборки

sudo docker run -it -e USER=$USER -e USERID=$UID -v $(pwd):/BR -t rk3568 make rockchip_rk356x_inmys_defconfig -C buildroot

sudo docker run -it -e USER=$USER -e USERID=$UID -v $(pwd):/BR -t rk3568 make -C buildroot

Сборка может длится до часа, в зависимости от конфигурации компьютера, если возникла ошибка, связанная с host-gcc-final-ХХХ, то повторить команду сборки. Результаты будут лежать в папке buildroot/output/rockchip_rk356x_inmys/images.

Сборка kernel

Команды сборки:

Использование конфигурации

sudo docker run -it -e USER=$USER -e USERID=$UID -v $(pwd):/BR -t rk3568 make ARCH=arm64 CROSS_COMPILE=/BR/buildroot/output/rockchip_rk356x_inmys/host/bin/aarch64-buildroot-linux-gnu- rk3568_inmys_defconfig -C kernel

Сборка образа

sudo docker run -it -e USER=$USER -e USERID=$UID -v $(pwd):/BR -t rk3568 make ARCH=arm64 CROSS_COMPILE=/BR/buildroot/output/rockchip_rk356x_inmys/host/bin/aarch64-buildroot-linux-gnu- Image -C kernel

Результаты будут лежать в папке kernel/arch/arm64/boot/Image.

Сборка dtb

Команда сборки

sudo docker run -it -e USER=$USER -e USERID=$UID -v $(pwd):/BR -t rk3568 make ARCH=arm64 CROSS_COMPILE=/BR/buildroot/output/rockchip_rk356x_inmys/host/bin/aarch64-buildroot-linux-gnu- rockchip/rk3568-inmys-smarc-evm.dtb -C kernel

Результат будет лежать в папке kernel/arch/arm64/boot/dts/rockchip/rk3568-inmys-smarc-evm.dtb.

Прошивка SD карты

Скачайте архив со скриптами для прошивки burn.tar.gz

Перейти в каталог burn

cd burn

Создать временный каталог для монтирования карты памяти

mkdir /mnt/d4

Скопируйте файл buildroot/output/rockchip_rk356x_inmys/images/rootfs.ext2 в каталог burn/rootfs.ext2

Скопируйте файл kernel/arch/arm64/boot/Image burn/pboot/Image

kernel/arch/aarch64/boot/dts/rockchip/rk3568-inmys-smarc-evm.dtb burn/pboot/rk3568-inmys-smarc-evm.dtb

Выполните команду:

cp burn/pboot/rk3568-inmys-smarc-evm.dtb burn/pboot/rk-kernel.dtb

Выполните команду

sudo ./burn_sd.sh /dev/sdX

ГДЕ ВМЕСТО X БУКВА КАРТЫ ПАМЯТИ

Проверка

Для проверки установки видео-драйверов, выполните следующие команды:

uname -a
gst-inspect-1.0 | grep mpph

Корректный результат:

# uname -a
Linux rk3568 5.10.160 #7 SMP Tue Jan 30 14:22:12 UTC 2024 aarch64 GNU/Linux
# gst-inspect-1.0 | grep mpph
rockchipmpp: mpph264enc: Rockchip Mpp H264 Encoder
rockchipmpp: mpph265enc: Rockchip Mpp H265 Encoder

Для записи видео, рекомендуется увеличить чувствительность камеры (для проверки используется imx219):

v4l2-ctl -c gain=2000

Запись в файл output.mp4:

gst-launch-1.0 -e v4l2src device=/dev/video1 ! videoconvert ! mpph264enc ! h264parse ! qtmux ! filesink location=output.mp4