В последнее время почти каждый день любой человек сталкивается со встраиваемыми системами: на работе многие используют факсаппараты, в больнице испытывают на себе системы компьютерной томографии и ультразвукового исследования, в магазине видят кассовые аппараты, на улице едва замечают системы наблюдения, в машине включают навигацию GPS, дома открывают умный холодильник,
а на руке носят умные часы. Данный список не раскрывает использования встроенных систем ещё во многих областях деятельности человека,
но показывает, что встроенные системы получили большое значение в
жизни современного человека. В связи с этим одной из главных задач
разработки встраиваемых систем является реализация интуитивно понятного интерфейса пользователя.
Так как встраиваемые системы решают задачи из огромного спектра задач человеческой деятельности, то каждое устройство или тип
устройства должен иметь специализированный интерфейс, который будет отвечать нуждам определенного круга людей. Например, все кассиры должны уметь пользоваться кассовыми аппаратами, которые показывают информацию о товарах, их цену и окончательную стоимость.
Вся функциональность ограничивается кнопками типа ”убрать товар
из корзины” или ”рассчитать стоимость”. Второй пример – умные часы
– обычно требуют всего одну кнопку – кнопку переключения между
режимами показа времени, калорий, пройденных шагов и других параметров. Итого, имеем экран с множественной информацией и несколькими действиями над ней и маленький экран с содержанием малого
количества информации и всего один действием. Отсюда видно, что
необходимы разные подходы к созданию интерфейсов.
Для создания таких интерфейсов нужны универсальные средства
разработки, которые, в свою очередь, влекут за собой увеличение потребления других ресурсов, таких как память или энергопотребление.
Например, для создания тонких и маленьких умных часов дополнительная память в размере карты памяти увеличит желаемые размеры.
4Существует другой путь создания графического интерфейса для
встраиваемых систем – создавать их с нуля. Этот путь значительно
увеличит время и стоимость продукта, а также потребует занятость
людей с определенными навыками.
Таким образом, постоянно возникает проблема: для каждого устройства необходимо создавать графическую подсистему, подходящую под
специфичные характеристики и функциональность, выбирая один из
двух путей, который потребует меньших затрат.
Одним из возможных решений является создание конфигурируемой
графической подсистемы для каждого класса устройств, где конфигурируемость обозначает возможность описания устройства и указания
параметров подсистемы для него с целью запуска одного и того же графического приложения на различных устройствах выбранного класса.
В данной работе были выполнены следующие задачи:
• Произведен обзор существующих архитектур (X Window System,
Wayland, Nano-X, DirectFB), спецификации API (OpenGL, Vulkan,
Glide) и графических библиотек (Nuklear, STML, NanoVG, ImGui,
TIGR).
• Разработана архитектура конфигурируемой графической подсистемы.
• Выполнена реализация архитектуры на языке С, произведена интеграция со встраиваемой ОС Embox.
• Произведена апробация на виртуальной машине QEMU и на отладочной плате STM32F746G Discovery.