Добавление Toybox в решение на базе KasperskyOS
Для работы компонента Toybox необходим компонент ExecutionManager. Как работать с компонентом ExecutionManager в решении на базе KasperskyOS см. подробнее в разделе "Запуск процессов с помощью системной программы ExecutionManager".
Чтобы добавить компонент Toybox в решение на базе KasperskyOS, необходимо:
- Добавить следующие команды в корневой файл CMakeLists.txt:
# Подключение пакета uart с драйвером UART.
find_package (uart REQUIRED)
# Подключение пакета Terminal, который обеспечивает взаимодействие
# между последовательным портом UART и виртуальной файловой системой
# для реализации стандартных потоков ввода-вывода и дисциплины линии.
find_package (Terminal REQUIRED COMPONENTS UART_ENTITY)
# Подключение пакета toybox.
find_package (toybox REQUIRED)
add_subdirectory (toybox)
# Создание CMake-цели для генерации .edl.h-файла для EDL-описания класса процессов,
# запускаемых при выполнении команды exec компонента Toybox.
nk_build_edl_files (exec_app_edl_files
NK_MODULE "exec_app"
EDL "${NK_RESOURCES}/exec_app/ExecApp.edl")
- При сборке решения (файл CMakeLists.txt для программы Einit) используя CMake-команду
set_target_properties()определить значения свойствIMPORTED_LOCATION,DEPENDS_ON_ENTITYиEXTRA_ENVдля исполняемого файлаterminal_uart_entity. Например:# Добавление CMake-цели для импортируемого исполняемого файла terminal_uart_entity.
add_executable (terminal_uart IMPORTED)
# Установка свойств CMake-цели terminal_uart:
# IMPORTED_LOCATION – путь к исполняемому файлу terminal_uart_entity.
# DEPENDS_ON_ENTITY – указание, что запуск исполняемого файла terminal_uart_entity
# требует предварительной готовности драйвера UART.
# EXTRA_ENV – переменные окружения, передаваемые исполняемому файлу terminal_uart_entity
# при запуске. Где: ${UART_PORT_NAME} и ${UART_BAUDRATE} – переменные,
# задающие имя порта и скорость передачи данных для UART.
set_target_properties (terminal_uart PROPERTIES
IMPORTED_LOCATION ${TERMINAL_UART_ENTITY}
DEPENDS_ON_ENTITY uart::entity
EXTRA_ENV " TERMINAL_UART_PARAM: ${UART_PORT_NAME},${UART_BAUDRATE}")
- В шаблон security.psl.in описания политики безопасности решения включить EDL-файлы:
use EDL toybox.Toybox
use EDL kl.Terminal
use EDL exec_app.ExecApp
Подробнее см. пример uart_toybox, который расположен в директории examples из состава KasperskyOS Community Edition.