INMYS WIKI

Инженерами для инженеров

Инструменты пользователя

Инструменты сайта


boards:nms-sm-rk3568:firmware_opensource:start

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
boards:nms-sm-rk3568:firmware_opensource:start [2024/10/29 07:56] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1boards:nms-sm-rk3568:firmware_opensource:start [2024/10/29 07:56] (текущий) – ↷ Страница перемещена и переименована из boards:nms-sm-rk3568:firmware_opensource в boards:nms-sm-rk3568:firmware_opensource:start Семёнов Алексей
Строка 1: Строка 1:
 +{{indexmenu_n>610}}
 +===== Подготовка программной части для модуля NMS-SM-RK3568 без блобов (opensource), Kernel 6.1 =====
 +Собирать можно либо в ubuntu(20.04/22.04) либо в docker.
 +
 +===== Сборка в Ubuntu 20.04/22.04 =====
 +==== Подготовка ====
 +<code>
 +wget https://buildroot.org/downloads/buildroot-2023.11.1.tar.gz
 +git clone -b nms-sm-rk3568 https://github.com/inmys/buildroot-external-inmys
 +tar -xf buildroot-2023.11.1.tar.gz
 +make BR2_EXTERNAL=$PWD/buildroot-external-inmys -C buildroot-2023.11.1 O=$PWD/output br_defconfig
 +</code>
 +==== Сборка ====
 +<code>
 +cd output
 +make
 +# ждём несколько часов
 +</code>
 +Если в процессе сборки, лог завис на этапе скачивания qemu, то нужно самостоятельно скачать [[https://download.qemu.org/qemu-7.2.0.tar.xz |QEMU]] и положить в папку buildroot-2023.02.1/dl
 +
 +Результат:
 +<code>
 +output/images/Image
 +output/images/rk3568-inmys-smarc-evm.dtb
 +rootfs.cpio.gz
 +rootfs.ext2.gz
 +</code>
 +==== Изменение и пересборка rootfs ====
 +<code>
 +make menuconfig
 +make
 +</code>
 +==== Пересборка kernel (Image/dtb) ====
 +<code>
 +make linux-rebuild
 +</code>
 +==== Подготовить toolchain c помощью которого можно кросскомпилировать программы (например Qt) ====
 +<code>
 +make sdk
 +</code>
 +Результат:
 +<code>
 +output/images/aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz
 +</code>
 +
 +===== Сборка в Docker =====
 +Для выполнения следующей инструкции, на компьютере должно быть установлено [[https://docs.docker.com/engine/install/|Docker окружение]]
 +==== Подготовка ====
 +
 +<code>
 +wget https://buildroot.org/downloads/buildroot-2023.11.1.tar.gz
 +git clone -b nms-sm-rk3568 https://github.com/inmys/buildroot-external-inmys
 +tar -xf buildroot-2023.11.1.tar.gz
 +# build docker image with name "buildroot-2023.11.1"
 +docker build -t buildroot-2023.11.1 buildroot-2023.11.1/support/docker
 +# initial config rootfs
 +docker run --mount type=bind,source="$(pwd)",target=/workdir --user "$(id -u):$(id -g)" -it buildroot-2023.11.1 make BR2_EXTERNAL=/workdir/buildroot-external-inmys -C /workdir/buildroot-2023.11.1 O=/workdir/output br_defconfig
 +</code>
 +==== Сборка ====
 +<code>
 +cd output
 +docker run --mount type=bind,source="$(pwd)",target=/workdir --user "$(id -u):$(id -g)" -it buildroot-2023.02.1 make -C /workdir/output
 +# ждём несколько часов
 +</code>
 +Результат:
 +<code>
 +output/images/Image
 +output/images/rk3568-inmys-smarc-evm.dtb
 +rootfs.cpio.gz
 +rootfs.ext2.gz
 +</code>
 +==== Изменение и пересборка rootfs ====
 +<code>
 +docker run --mount type=bind,source="$(pwd)",target=/workdir --user "$(id -u):$(id -g)" -it buildroot-2023.02.1 make -C /workdir/output menuconfig
 +docker run --mount type=bind,source="$(pwd)",target=/workdir --user "$(id -u):$(id -g)" -it buildroot-2023.02.1 make -C /workdir/output
 +</code>
 +==== Пересборка kernel (Image/dtb) ====
 +<code>
 +docker run --mount type=bind,source="$(pwd)",target=/workdir --user "$(id -u):$(id -g)" -it buildroot-2023.02.1 make -C /workdir/output linux-rebuild
 +</code>
 +==== Подготовить toolchain c помощью которого можно кросскомпилировать программы (например Qt) ====
 +<code>
 +docker run --mount type=bind,source="$(pwd)",target=/workdir --user "$(id -u):$(id -g)" -it buildroot-2023.02.1 make -C /workdir/output sdk
 +</code>
 +Результат:
 +<code>
 +output/images/aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz
 +</code>
 +
 +===== Дополнительно =====
 +==== Создание загрузочной SD карты ====
 +Скачать {{ :boards:nms-sm-rk3568:burn.tar.xz | burn.tar.xz}}
 +<code>
 +tar -xf burn.tar.gz
 +</code>
 +скопировать в burn файлы: Image rk3568-inmys-smarc-evm.dtb rootfs.cpio.gz
 +<code>
 +sudo ./burn_sd.sh /dev/sdX
 +</code>
 +ГДЕ ВМЕСТО X БУКВА КАРТЫ ПАМЯТИ
 +
 +==== Консольный uart ====
 +Консольный uart конфигугрируется на скорости 1500000.
 +
 +==== Использование toolchain для кросс-компиляции ====
 +Для кросс-компиляции нужен компьютер x86_64(amd64) с установленным linux, подойдут: ubuntu,debian.
 +<code>
 +tar -xf aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz 
 +cd aarch64-buildroot-linux-gnu_sdk-buildroot/
 +./relocate-sdk.sh
 +</code>
 +Теперь: 
 +  * aarch64-buildroot-linux-gnu_sdk-buildroot/bin/qmake можно использовать для сборки qt проектов.
 +  * aarch64-buildroot-linux-gnu_sdk-buildroot/share/buildroot/toolchainfile.cmake для сборки cmake проектов.
 +о том как настроить qt creator для кросс-компиляции написано здесь (host.tar.gz == aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz) https://wiki.inmys.ru/doku.php?id=boards:nms-hh-px30:bsp
 +
 +Уже собранный aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz : https://disk.yandex.ru/d/P4YAk8zqebVlNg
 +