{{indexmenu_n>510}}
===== Подготовка программной части для модуля NMS-SM-RK3568, Kernel 5.10 с использованием PCI камер =====
==== Сборка Linux при помощи Buildroot и Docker ====
Репозиторий с актуальными DTS: https://github.com/inmys/buildroot-external-inmys/tree/nms-sm-rk3568-5.10
Для выполнение следующей инструкции, на компьютере должно быть установлено [[https://docs.docker.com/engine/install/|Docker окружение]]
==== Подготовка окружения ====
1. Указать параметры для git, если не дает скачать
export GIT_SSL_NO_VERIFY=1
git config --global http.postBuffer 157286400
2. Необходимо скачать папки:
* [[https://gitlab.inmys.online/rk3568-kernel-5.10/buildroot|buildroot]]
git clone https://gitlab.inmys.online/rk3568-kernel-5.10/buildroot.git
* [[https://gitlab.inmys.online/rk3568-kernel-5.10/external|external]]
git clone https://gitlab.inmys.online/rk3568-kernel-5.10/external.git
* [[https://gitlab.inmys.online/rk3568-kernel-5.10/kernel|kernel]]
git clone https://gitlab.inmys.online/rk3568-kernel-5.10/kernel.git
3. Перенести все в одну папку, перейти в папку container и собрать образ контейнера следующей командой:
mv external/ external_all
mv external_all/* .
rm -rf external_all/
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 карты =====
Скачайте архив со скриптами для прошивки [[https://doc.inmys.ru/hash/52afccc1b00b1d39c8f8d11879aa3b30/rk3568_burn_pci_cams.tar.gz|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