В проекте показана возможность создания кибериммунной системы управления путем портирования среды исполнения IEC 61499, в частности Eclipse 4diac forte, на операционную систему KasperskyOS. Использование 4diac forte позволяет в значительной мере скрыть от разработчика прикладного ПО сложность работы с KasperskyOS. При этом есть возможность разрабатывать защищенные приложения, использовать разбиение задач на независимые компоненты и конфигурировать правила их взаимодействия.
Для портирования forte на KasperskyOS необходимо определить 4diac FORTE в качестве отдельной сущности. Для этого следует модифицировать исходную систему сборки 4diac forte для ее сборки в составе образа решения KasperskyOS теми средствами компиляции, что поставляются в составе SDK KasperskyOS Community Edition. Помимо сущности Forte в нашем решении также присутствует служебная сущность Einit и модуль безопасности KSM-module. За основу решения был взят образец embedded_vfs из SDK KasperskyOS. Архитектура решения представлена на рисунке 1.
Здесь сущность Forte слинкована с библиотеками для работы с файловой системой, сетевым стеком и драйвером GPIO.
Для демонстрации работы с вводом-выводом в KasperskyOS был разработан функциональный блок для управления моторами AlphaBot через GPIO. Контакты GPIO конфигурируются и могут выступать как в роли входа, так и в роли выхода. Фото робота AlphaBot представлено на рисунке 2.
Интерфейс функционального блока для управления двигателями представлен на рисунке 3.
Функциональность, которую содержит наш новый функциональный блок, позволяет выполнять следующие команды (значение на вход CMD):
Команды выполняются в течение заданного в миллисекундах времени (значение на вход DURATION). Реализация команд осуществляется путем выдачи команд на GPIO-порт
Инициализируем нужные нам пины и включаем моторы. После этого в зависимости от поданной команды робот либо стоит на месте, либо движется вперед/назад либо поворачивает направо/налево в течении определенного количества миллисекунд, которое тоже задается. В самом конце, после выполнения всех действий, выключаем моторы и закрываем GPIO-порт.
4diac позволяет передавать команды в среду исполнения по различным сетевым протоколам. Например, может быть использован протокол MQTT, для которого есть библиотеки в SDK KasperskyOS CE. Минимальное приложение для получения команд управления (вперед, стоп, налево, направо, назад) AlphaBot в 4diac имеет вид:
В минимальном приложении используются разработанные нами функциональные блоки для управления моторами (AB_FORWARD, AB_LEFT, AB_RIGTH, AB_STOP для управления моторами), функциональный блок для разбора JSON-сообщения и выделения команды AB_CMDPARSER и стандартный функциональный блок SUBSCRIBER, который позволяет работать с различными протоколами. В минимальном приложении используется протокол MQTT, который есть в составе FORTE.
Кибериммунная методология разработки под KasperskyOS рекомендует разделять функциональность приложения на модули для повышения устойчивости приложения к взлому. Мы выделили сетевое взаимодействие по MQTT в отдельное приложение, которое взаимодействует с forte только по IPC. Это позволяет уменьшить вероятность взлом программы forte. Архитектура приложения 4diac в этом случае будет аналогична представленной в предыдущем случае.
Чтобы проект 4diac заработал, для среды выполнения forte были добавлены новые блоки:
При этом сам проект разделен на две сущности:
Для тестирования решения на практике возможно запрограммировать AlphaBot двигаться по определенной траектории при помощи нового функционального блока. В качестве траектории выберем прямоугольник. Описание траектории представлено на рисунке 8.
Соответствующая программа для задания траектории движения альфабота при помощи нового функционального блока в среде разработки Eclipse 4diac IDE показана на на рисунке 9.
Исходный код решения доступен по ссылке https://gitflic.ru/project/slavikmai/deep-forte-on-kos-with-fboot. В этом же репозитории можно найти изображения с эталонным выводом решения на базе KasperskyOS.
Для сборки решение с управлением AlphaBot с помощью MQTT в кибериммунной архитектуре воспользуйтесь проектом https://github.com/ElPallasCat/kos_abot_mqtt. Для сборки примера и запуска полученного образа используйте скрипт cross-build.sh.
Основная идея проекта и результат работ были опубликованы на Habr.com в статье «Опыт портирования Eclipse 4diac на KasperskyOS CE».