Сборка драйверов для аппаратной платформы Radxa ROCK 3A

Драйверы для аппаратной платформы Raspberry Pi 4 B поставляются в бинарном виде и не требуют сборки. Этот шаг можно пропустить и сразу перейти к сборке примеров.

Для изучения принципов разработки драйверов под KasperskyOS в состав SDK (только в deb-пакет для работы с аппаратной платформой Radxa Rock 3A) включен исходный код некоторых драйверов. Исходный код драйверов для аппаратной платформы Radxa Rock 3A находится в директории /opt/KasperskyOS-Community-Edition-<platform>-<version>/drivers.

При сборке примера для аппаратной платформы в решение автоматически включаются платформенно-зависимые драйверы. Перед сборкой и запуском примеров, в которых используются драйверы, необходимо выполнить сборку драйверов из исходного кода.

Для удобства работы с SDK рекомендуется выполнить сборку всех драйверов, входящих в состав SDK в бинарном виде перед началом работы с примерами. Чтобы собрать все драйверы, входящие в состав SDK, выполните следующие команды:

# Перед сборкой драйверов необходимо установить значения переменных окружения, необходимых для использования SDK.

$ cd /opt/KasperskyOS-Community-Edition-<platform>-<version>

$ source ./common/set_env.sh

# Сборку драйверов нужно выполнять в директории, к которой у вас есть доступ на запись. Для этого скопируйте директорию с драйверами, например, в домашнюю директорию.

$ cp -r ./drivers/ ~/drivers

$ cd ~/drivers

$ cmake -B build -D CMAKE_TOOLCHAIN_FILE="$KOSCEDIR/toolchain/share/toolchain-aarch64-kos.cmake" -DCMAKE_INSTALL_PREFIX="$KOSCEDIR/sysroot-aarch64-kos"

$ sudo env "PATH=$PATH" cmake --build build --target all

Подробные инструкции по сборке каждого драйвера можно найти в файлах README.md в директории каждого драйвера.

Особенности драйверов для аппаратной платформы Radxa ROCK 3A

Драйвер PinCtrl для KasperskyOS автоматически выбирает режим "по умолчанию" в описании аппаратной конфигурации (Device Tree). После сборки примеров, вы можете настроить некоторые режимы PinCtrl, используя Device Tree Overlay – бинарные файлы формата DTBO, поставляемые в составе KasperskyOS Community Edition и предназначенные для изменения исходной конфигурации. Необходимость применения оверлеев указана в описании каждого примера.

Обратите внимание, что нельзя применять конфликтующие оверлеи. Также нельзя применять несколько mX-оверлеев для одного контроллера (например, оверлеи pwm1-m0 и pwm1-m1 являются взаимоисключающими).

Таблица совместимости оверлеев приведена в файле /opt/KasperskyOS-Community-Edition-<platform>-<version>/drivers/rk3568/pinctrl/README.md.

Подробности о поставляемых оверлеях для каждого из поставляемых драйверов приведены в файлах README.md для каждого драйвера.

Применение оверлеев

Чтобы применить DTBO-оверлеи к бинарному файлу описания аппаратной конфигурации (.dtb), выполните следующие команды:

# Создайте резервную копию аппаратной конфигурации

$ cp rk3568-rock-3a.dtb rk3568-rock-3a.dtb.orig

# Объедините исходную конфигурацию с изменениями и сохраните результат

$ fdtoverlay -i rk3568-rock-3a.dtb.orig -o rk3568-rock-3a.dtb <overlay1>.dtbo <overlay2>.dtbo

# Выполните проверку и оптимизацию получившейся аппаратной конфигурации

$ dtc -R 4 -p 0x1000 -I dtb -O dtb -o rk3568-rock-3a.dtb rk3568-rock-3a.dtb

Это изменит аппаратную конфигурации для всех последующих загрузок системы.

Также можно применить оверлеи вручную в командной строке U-Boot перед загрузкой образа системы:

# Загрузите исходную аппаратную конфигурацию в оперативную память

$ load mmc 1:1 ${fdt_addr_r} rk3568-rock-3a.dtb;

# Укажите U-Boot использовать конфигурацию из памяти

$ fdt addr ${fdt_addr_r};

# Загрузите изменения

$ load mmc 1:1 ${fdtoverlay_addr_r} overlay/<name>.dtbo;

# Примените изменения конфигурации

$ fdt apply ${fdtoverlay_addr_r};

# Загрузите kos-image – образ решения на базе KasperskyOS

$ load mmc 1:1 ${loadaddr} kos-image;

# Запустите ядро KasperskyOS с измененной аппаратной конфигурацией.

# После выполнения команды booti система продолжит стандартную загрузку.

$ booti ${loadaddr} - ${fdt_addr_r};

В начало