Драйверы для аппаратной платформы 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};
В начало