Современное электронное оборудование невозможно представить в отрыве от программного обеспечения. В зависимости от решаемой задачи, наши компетенции позволяют осуществлять разработку следующих видов ПО:
Программное обеспечение микроконтроллеров (MCU)
В реализуемых проектах мы традиционно используем следующие типы микроконтроллеров, для большинства из которых создали собственные библиотеки высокого уровня, позволяющие быстро и качественно обеспечивать требуемый функционал.
Архитектура Cortex-M:
- STMicroelectronics: STM32F1, STM32F3, STM32F4 (не используем в новых проектах);
 - Миландр: MDR32F9Q2I, К1986ВЕ92У (не используем в новых проектах);
 - GigaDevice: GD32F1, GD32F4
 
Архитектура RISK-V:
- GigaDevice: GD32VF103;
 - Микрон: MIK32 АМУР;
 

Программное обеспечение для системы на кристалле ESP32
Для построения систем, в которых предполагается использование технологий беспроводной связи Wi-Fi и Bluetooth, мы используем SOC от компании Espressif: ESP32, ESP32-S3.
Опыт разработки устройств на базе ESP32 демонстрирует широчайшие возможности применения:
- воспроизведение или передача в сеть аудио-данных с потоковым кодированием;
 - визуализация на дисплеях среднего разрешения;
 - передача видео-кадров в сеть;
 - управление электродвигателями;
 - получение данных с цифровых датчиков и оборудования с частотным выходом;
 - организация сетевого доступа для управления различным оборудованием, ранее не имевшим такого функционала и многое другое.
 
Для удобства организации web-интерфейса для MCU и SOC нами была разработана свободно распространяемая программа IonMakeFs.

Сервисное программное обеспечение
Сервисное ПО обычно создается параллельно со встраиваемым ПО и в ходе разработки используется для отладки и тестирования. После постановки изделия на производства сервисное ПО может быть использовано для:
- первичной (заводской) настройки изделия;
 - сбора сервисных (скрытых от конечного пользователя) данных в процессе испытаний;
 - визуализации сигналов и сервисных параметров при поиске неисправностей.
 
Наша практика предполагает разработку сервисного ПО под ОС MS Windows на языке C# с использованием .NET Framework.

Системное и прикладное ПО одноплатных компьютеров
В ходе нашей работы мы получили опыт создания одноплатных компьютеров на базе процессоров:
- NXP: iMX 6 Series;
 - STMicroelectronics: STM32MP1;
 - Allwinner: A64.
 
Каждый из проектов требовал корректировки системного ПО под конкретную аппаратную архитектуру:
- U-boot: калибровка DDR, инициализация экрана, параметры запуска Kernel;
 - Kernel: DeviceTree, модули ядра;
 - RootFs: компоненты, необходимые для работы прикладного ПО.
 
В своей практике мы используем Yocto и Debian сборки, адаптированные под конкретную аппаратную архитектуру.
Для разработки прикладного ПО мы используем:
языки программирования: С/С++ (CMake, QT), C# (.Net Core);

Графические терминалы и пульты управления
Существует множество задач, когда разрабатываемое изделие необходимо:
- оснастить цветным экраном или touch-панелью диагональю 7-10 дюймов;
 - организовать развитый пользовательский интерфейс;
 - осуществлять обработку и хранение значительных объемов данных;
 - взаимодействовать с другими устройствами по интерфейсам RS-232, RS-422/485, USB, Ethernet;
 - опционально иметь возможность подключения к ЛВС по Wi-Fi.
 
Мы обладаем значительным опытом и наработками в области создания данного вида ПО, а в качестве аппаратной платформы для решения подобных задач в 2019 году нами было разработано типовое решение — модуль «Модуль управления и индикации РГЦС.433811.002» на базе процессора iMX6.

Системы сбора и обработки данных, серверы IoT устройств
Современный уровень развития информационных технологий все в большей степени позволяет автоматизировать рабочие процессы, возложив на оператора лишь задачи контроля и ручного управления в экстренных ситуациях. Данный подход позволяет повысить эффективность и качество труда за счет снижения влияния «человеческого фактора».
Наша команда обладает опытом создания подобных систем, в том числе нагруженных, за счет ресурсоэффективного подхода к созданию программного обеспечения.
Имеющиеся наработки позволяют эффективно разрабатывать ПО для центральных устройств систем сбора и обработки данных, характеризующихся: высокими требованиями надежности и наличием резервирования, непрерывной работой с множеством оконечных устройств, сложными алгоритмами статистической обработки и подготовки информации перед ее отображением и выдачей в системы более высокого уровня интеграции.

