Техническая поддержка
FormFrameWork: импортонезависимая программная платформа для разработки встроенных систем управления
Ксения Лукина, руководитель проекта, ООО «ФОРМ»
Алексей Тушенцов, инженер-программист микроконтроллеров, ООО «ФОРМ»
Аннотация
Статья адресована разработчикам встраиваемых систем, инженерам-электронщикам и всем, кто интересуется отечественными решениями в области проектирования электронной техники.
Компания ФОРМ впервые представляет свой новый продукт — отечественную программную платформу FormFrameWork (FFW), разработанную для микроконтроллеров и ПЛИС в обеспечение импортонезависимости встроенного программного обеспечения на языке C/C++. Платформа ориентирована на использование в системах с распределённым управлением, например, в таких как модульное автоматизированное тестовое оборудование (ATE).
1 Глоссарий терминов в контексте статьи
Встроенное программное обеспечение (ВПО): код на C или C++, выполняющийся на микроконтроллере или ПЛИС из состава объекта разработки, и использующий ресурсы платформы FFW.
Платформа FFW: набор системных модулей и библиотек функций, который встраивается в проекты ВПО и представляет собой единый программный интерфейс к ресурсам устройства. Цель платформы FFW — уменьшить объём кода, зависимого от конкретной элементной базы, и облегчить перенос проектов.
Объект разработки: конкретное цифровое устройство или модуль (например, модуль из состава АТЕ по стандарту FormRXI®), в составе которого используется ВПО, и к которому применяются алгоритмы работы и алгоритмы испытаний.
Прикладной уровень ВПО: часть ВПО, которая реализует функции целевого приложения, исполняющие алгоритмы работы и алгоритмы испытаний объекта разработки на основе API платформы FFW.
Системный уровень ВПО: условно-постоянная часть ВПО, которая реализуется средствами платформы FFW на стороне устройства и предоставляет прикладному уровню единый программный интерфейс к ресурсам объекта разработки. Включает системные библиотеки функций и базовые сервисы платформы FFW, реализующие типовые алгоритмы работы с ресурсами объекта разработки и предоставляющие прикладному уровню единый программный интерфейс.
Аппаратно-зависимый уровень ВПО: часть ВПО, которая зависит от конкретной элементной базы. Включает адаптеры и низкоуровневые драйверы периферии микроконтроллеров и IP-ядер ПЛИС, использующих SDK и библиотеки производителей и обеспечивающих поддержку абстрактных интерфейсов платформы FFW.
Функция: именованный фрагмент программы на C или C++, который можно вызвать и который выполняет определённую операцию, при необходимости возвращая результат.
Библиотека функций платформы FFW: набор модулей платформы FFW, содержащих функции для работы с типовыми задачами. Например: таймеры, очереди, интерфейсы ввода-вывода, энергонезависимая память, обработка команд, логирование, отладка и т. д. Библиотеки функций платформы FFW — это набор системных модулей, функции которых реализуют типовые алгоритмы работы с ресурсами объекта разработки и предоставляют прикладному уровню стандартный API.
Базовые сервисы платформы FFW: системные модули, которые имеют своё состояние и выполняются регулярно в составе суперцикла. Используют библиотеки функций. Обеспечивают непрерывную работу типовых механизмов ВПО, таких как программные таймеры, обмен командами, управление настройками и диагностика.
Системный драйвер: модуль на системном уровне ВПО, функции которого реализуют абстрактный интерфейс платформы FFW к определённому типу ресурса (SPI, таймер, GPIO и т. д.) и используют адаптеры или низкоуровневые драйверы.
Низкоуровневый драйвер: модуль аппаратно-зависимого уровня, который напрямую работает с регистрами периферии конкретного микроконтроллера или IP-ядра ПЛИС и обычно опирается на SDK производителя.
Адаптер: программная «прослойка» между абстрактным интерфейсом платформы FFW и низкоуровневым драйвером. С одной стороны адаптер реализует интерфейс, ожидаемый библиотеками функций FFW, с другой стороны — использует SDK конкретного устройства.
Алгоритм: совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи. В контексте рассматриваемого здесь ВПО алгоритм всегда реализован в виде одной или нескольких функций прикладного или системного уровня.
Алгоритм работы: алгоритм, описывающий штатную функциональность модуля или устройства в составе системы, и реализуемый в виде функций прикладного уровня ВПО.
Алгоритм испытаний: алгоритм, описывающий порядок действий для проверки соответствия объекта разработки установленным требованиям. Включает подготовку, воздействие, измерение и оценку результата. В составе ВПО реализуется в виде функций прикладного уровня.
Управляющая ЭВМ: внешний по отношению к объекту разработки компьютер (ПК, индустриальный компьютер) с установленным специализированным системным программным обеспечением, который управляет объектом разработки и его испытаниями, включая документирование результатов.
Системное программное обеспечение управляющей ЭВМ (СПО): совокупность приложений и компонентов на управляющей ЭВМ, которая реализует пользовательский интерфейс, формирует команды и параметры управления и принимает результаты от ВПО по интерфейсам связи.
Тестовый сценарий на стороне управляющей ЭВМ: скрипт или программный модуль в составе СПО управляющей ЭВМ, который описывает последовательность шагов испытаний (тестирования), формирует команды и параметры для ВПО и обрабатывает полученные результаты. В составе ВПО вместо термина «сценарий» используется термин «алгоритм испытаний, реализованный в виде функций ВПО», и интерпретатор не применяется.
2 FormFrameWork: основы, преимущества, опыт применения и перспективы
2.1 FormFrameWork на фоне существующих решений
FormFrameWork — это новая среди уже существующих программных платформ, таких, как RTOS и сетевые стеки, Arduino-подобные фреймворки и др., предназначенных для ускорения разработки ВПО на микроконтроллерах и ПЛИС.
FFW является, по сути, заранее подготовленным программным «каркасом», а скорее даже системой, состоящей из библиотек, драйверов, шаблонов и правил, применение которой позволяет ограничить задачу программиста ВПО разработкой только прикладной логики устройства, вместо того, чтобы писать ее с нуля. Разработчик сильно экономит время, поскольку дописывает только специфический для изделия код.
В отличие от «просто набора библиотек» FFW навязывает определенный способ организации кода и инверсии управления: «каркас» вызывает код в предопределенные моменты (коллбэки, задачи), а не наоборот.
2.2 Основные представления о FFW
Раскрывая основные представления о FormFrameWork, отметим, что это:
- Единый кросс-платформенный API, заменяющий SDK и библиотеки от различных производителей.
- Архитектура с четким разделением аппаратно-зависимого, системного и прикладного уровней, позволяющая быстро адаптировать платформу для различных аппаратных решений без необходимости переписывать всю систему, вплоть до пользовательских функций. При изменении «железа» достаточно внести изменения только в аппаратно-зависимый уровень (драйверы), а основная часть логики и системный код остаются без изменений.
- Система поддержки кооперативной многозадачности и механизма подписок, обладающая тем отличием, что предоставляет упрощенный доступ к общим ресурсам при сохранении детерминированности кода.
- Расширяемый комплект готовых модулей для работы с таймерами, безопасными обновлениями, энергонезависимой памятью, унифицированными интерфейсами периферии (GPIO, SPI) и др. для взаимодействия с командным процессором.
- Интуитивно понятный инструментарий для диагностики и отладки (библиотека FDebug).
FFW дает следующие преимущества:
- Экономит время на разработку.
- Снижает вероятность ошибок при миграции с одной элементной базы на другую.
- Упрощает сопровождение систем.
- Позволяет переиспользовать системный код для разных аппаратных платформ.
- Структурирует управление изменениями в НИОКР, обеспечивает синхронизацию обновления и тестирования компонентов систем.
- Обеспечивает максимальную прослеживаемость обновлений ВПО в сложных системах с применением десятков и сотен ПЛИС и МК.
- Встраивается в систему унификации и стандартизации НИОКР как типовой программный компонент и платформа, вместо «зоопарка реализаций» в структуре стандартов разрозненных решений по каждому изделию и его составным частям.
2.3 Практические результаты
На уровне программ НИОКР компании ФОРМ платформа FFW фиксируется в структуре стандартов корпоративной технической политики. FFW на сегодня уже многократно успешно использован в разработке командных процессоров для системных и измерительных модулей ATE FORMULA®, выполненных по отечественному стандарту FormRXI®, и показал высокую надёжность, безопасность и возможность масштабирования.
В текущей конфигурации FFW поддерживает ВПО для следующих типов целевых аппаратных платформ (МК), входящих в спецификацию системных и измерительных модулей ATE FORMULA®:
- MicroBlaze/ARMCortex-A9;
- Nios II;
- STM32.
Перспективы развития:
Расширение поддержки аппаратных платформ, дальнейшая унификация библиотек, автоматизация конфигурации и сотрудничество с техническими комитетами для стандартизации практик импортонезависимой разработки.
3 Фундамент и предпосылки для создания отечественной программной платформы FFW
Тридцатилетний, без малого, опыт предприятия «ФОРМ» в области разработки АТЕ FORMULA® показал, что переходу на импортонезависимые решения в области САПР объективно препятствует разнообразие используемых средств (Integrated Development Environment IDE, Software Development Kit SDK и пр.) от различных производителей микроконтроллеров и ПЛИС, преимущественно иностранных. При этом последствия ограничений доступа к зарубежным сайтам производителей для скачивания необходимых приложений преодолеваются при использовании платформы FFW, которая предоставляет разработчикам свой единый импортонезависимый кросс-платформенный API (Application Programming Interface), интерфейс программирования приложений.
Кроме того, FFW обеспечивает разделение системного и аппаратно-зависимого уровней ВПО: системный код вызывает стандартные библиотечные функции, а аппаратно-зависимая специфика инкапсулирована в драйверах/адаптерах. Например, для интерфейсов типа SPI (Serial Peripheral Interface) можно отказаться от набора частных (принадлежащих производителям) драйверов в пользу универсального инструмента настройки и управления данным интерфейсом: задавать режимы Master/Slave, Duplex/Half‑Duplex, CPOL/CPHA, SINGLE/DUAL/QUAD, SDR/DDR и все другие, необходимые в проектах.
Платформа FFW позволяет обходиться без задействования возможностей и специфики RTOS (Real-Time Operating System, операционных систем реального времени ОСРВ), сохраняя при этом детерминированность и неизменность кода целевого приложения при замене аппаратных частей системы.
Следует отметить, что платформа FFW может поддерживать и ранее разработанные, т.н. legacy проекты, которые по различным причинам бывает целесообразно продолжать использовать, несмотря на их техническое устаревание и появление более современных решений.
4 Архитектурные принципы FFW
Проекты ВПО на основе платформы FFW реализованы в виде трёхуровневой архитектуры:
- аппаратно-зависимый уровень
- системный уровень
- прикладной уровень.
Поскольку особенности реализации более низкого уровня для более высокого уровня скрыты и «неинтересны», разработчик может абстрагироваться от аппаратной реализации решений.
В основе работы FFW лежат принципы кооперативной многозадачности и опциональной системы подписок, которая рассматривается как средство достижения слабой связанности программных модулей, таких как библиотеки и драйверы.
Ключевым элементом FFW является функция framework__cout, которая выполняет роль диспетчеризации задач. Все «заинтересованные» модули ВПО подписываются на её вызов и исполняются кооперативно, в основном цикле — т.н. суперцикле. Такой механизм устраняет жёсткую зависимость разработки ВПО от RTOS и, тем самым, повышает ее предсказуемость.
ПРИМЕЧАНИЕ: при необходимости FFW может работать и поверх проприетарной ОС устройства, например, в отдельном потоке RTOS.
Рассмотрим примеры, поясняющие ключевые опции FFW.
4.1 Синхронизация и таймеры: детерминизм без RTOS
Модуль таймеров платформы FFW обеспечивает обслуживание сотен программных таймеров (их количество ограничено лишь объемом доступного ОЗУ) на одном аппаратном счётчике, что значительно экономит аппаратные ресурсы.
По достижении «назначенного времени» соответствующие запросы (callbacks) от таймеров становятся в очередь и вызываются ближайшей итерацией «суперцикла».
Дискретность таймеров ограничена 1мс, что обеспечивает устойчивые временные характеристики работы ВПО.
4.2 Безопасные обновления и самовосстановление
Универсальный модуль загрузчика платформы FFW предназначен для безопасного дистанционного обновления ВПО без использования аппаратных программаторов, с обеспечением целостности конфигурационных данных (по контрольной сумме CRC32).
Поддерживаются:
- разделение на основную и резервную области хранения конфигурационных данных;
- автоматический откат при ошибках.
4.3 Конфигурации и энергонезависимая память
Модуль dev_setts системного уровня платформы FFW управляет группами параметров, хранимыми в энергонезависимой памяти FLASH, и обеспечивает следующие операции:
- инициализация групп (ID, адрес, объём),
- запись/чтение;
- очистка.
Такой унифицированный способ хранения конфигурации и прав доступа, например, паролей/режимов ATE RXI, позволяет не связывать прикладное ПО с конкретной микросхемой памяти.
Драйвер flash системного уровня предоставляет типовые операции, такие, как инициализация, erase, read, write, а также callback‑модель, интегрированную в подписки суперцикла.
4.4 Унифицированные интерфейсы периферии
4.4.1 Интерфейс GPIO
Функции интерфейса реализованы в файле gpio.c FFW.
Через единый заголовок API поддерживаются стандартные операции:
- инициализации/деинициализации;
- установки/чтения состояния;
- альтернативные функции и базовая обработка прерываний.
Рисунок 1 – Пример программы для микроконтроллера по управлению светодиодом через порт GPIO из прерывания
4.4.2 Интерфейс SPI
Функции интерфейса реализованы в файле spi.c FFW.
Через единый заголовок API поддерживаются следующие опции настройки и управления:
- Master/Slave;
- CPOL/CPHA;
- Duplex (дуплекс/полудуплекс);
- скорость;
- формат кадра (7/8/16 бит);
- SDR/DDR;
- порядок бит MSB/LSB;
- логика CS;
- режим тактирования;
- ширина шины данных SINGLE/DUAL/QUAD и др.
Указанные режимы для конкретного интерфейса хранятся в отдельном заголовочном файле .h, представляющем собой таблицу (шаблон), данные которой заполнены из Datasheet на конкретную микросхему. Для автоматизации разработки можно поручить заполнение таких шаблонов (на основе Datasheet) какому-нибудь «продвинутому» Искусственному Интеллекту.
Рисунок 2 – Пример таблицы конфигурации интерфейсов SPI для нескольких устройств
4.5 Наблюдаемость: диагностика и отладка
Библиотека FDebug системного уровня API fdebug.h платформы FFW обеспечивает структурированную отладку и диагностику ВПО.
Поддерживаются:
1) задание уровней вывода;
2) отображение:
- событий инициализации/загрузки;
- состояния подсистем;
- этапов обмена;
- журнал драйверов;
- вывод сообщений в отладочные интерфейсы (UART, Ethernet).
Инициализация требует явной настройки уровней и обработчика событий; допускается их отключение компиляционным флагом.
5 Практика применения
Для облегчения освоения программной платформы FFW в состав её эксплуатационной документации входят примеры с полным описанием. В частности, «Инструкция по применению модуля таймера», в которой приведен пример подключения FFW в САПР XILINX VITIS 2019.2 с применением микроконтроллера MicroBlaze.
Используются единый заголовочный файл конфигурации целевого приложения target.h и API таймеров, с помощью которых осуществляются:
- инициализация платформы;
- включение аппаратных прерываний таймера;
- запуск таймера;
- вывод в отладочный порт UART из callback‑функции.
Для обновления конфигурации ПЛИС применён описанный выше загрузчик с формированием образов утилитой parser.exe и механизмом MultiBoot.
6 Результаты интеграции FFW — безопасность, надежность и устойчивость
По результатам расширенных трехлетних испытаний тестовой платформы FormRXI® и модульного ATE FORMULA® в целом, была подтверждена корректность работы ВПО из состава системных и измерительных модулей, разработанных с применением FFW и приложений, созданных на его основе.
Количество разработанных целевых модулей, длительность портирования на FFW, показатели устойчивости — все эти метрики формировались по данным внутренних протоколов, а также журналов библиотеки FDebug. И на сегодня мы считаем их достаточной валидацией безопасности и надежности FFW.
Платформа FFW позволила нам быстро разработать процессорную часть ВПО для 11 типов системных и измерительных модулей АТЕ FORMULA® с реализацией их полного функционала согласно ТЗ и стандарту FormRXI®. Причем, одновременно удалось понизить влияние типовых проблем с нехваткой ресурсов.
Другие объекты, в ВПО которых успешно использован FFW:
- стенды автоматизированных испытаний АТЕ (и его составных частей);
- автоматические средства мониторинга параметров подсистем охлаждения и термостабилизации;
- автоматические средства управления авариями АТЕ, стенды для испытания подсистем питания, информационного обмена и синхронизации;
- специализированные Роботы для прецизионной настройки и калибровки динамических параметров высокочастотного АТЕ.
7 Дорожная карта и стандартизация
План дальнейшего развития платформы FFW включает:
- расширение набора поддерживаемых аппаратных платформ (МК/ПЛИС), в т.ч. MIK32 АМУР и других отечественных микроконтроллеров и процессоров;
- унификацию набора библиотек;
- регламентацию выпуска безопасных обновлений.
В настоящее время зарегистрирована программа для ЭВМ FormFrameWork рег. №2025686421 и поданы документы на регистрацию товарного знака.
Предусмотрена автоматизация конфигурации системы — создание приложения «Конфигуратор FFW» с графическим пользовательским интерфейсом.
Публикация результатов и взаимодействие с ТК 165 «САПР электроники» будут направлены на распространение практик импортонезависимой разработки изделий электронной техники.
Заключение
Платформа FFW предлагает практичный и уже хорошо проверенный путь к импортонезависимой разработке ВПО, обеспечивающий: переносимость прикладного кода, детерминизм исполнения без RTOS, безопасные обновления и единый программный интерфейс к периферии.
Поддержка ПЛИС, глубоко и всесторонне подтверждённая работоспособность решений FFW в проекте создания модульного АТЕ FORMULA® по стандарту FormRXI® дают все основания считать платформу FFW пригодной для масштабируемых проектов и серийных изделий.
Компания ФОРМ поддерживает актуальную редакцию технической документации FFW по скриптам и совместимости для корректного описания автоматизации команд и сценариев.
Для тех, кто будет использовать отечественный стандарт модульного тестеростроения FormRXI® для создания кастомизированных измерительных модулей для Тестеров, предлагаемая программная платформа FFW станет эффективным инженерным инструментом, предоставляющим готовые библиотеки командных процессоров, применение которых значительно сократит время разработки новых вариантов исполнения и конфигурирования отечественных модульных Тестеров на платформе FormRXI®.
Для разработчиков любых других систем с распределенным управлением, платформа FFW станет тем системообразующим ядром проектов ВПО на микроконтроллерах и ПЛИС, которое не имеет границ для расширения номенклатуры библиотек (приложений).
В конечном счете, FFW может стать инструментом коллективного пользования инженеров, каждый из которых сможет, применяя его на практике, вносить свой вклад в его развитие.
В перспективе нам представляется возможным создание сообщества типа Linux.
Мы продолжаем развивать платформу FFW так, чтобы она обладала высокой гибкостью и универсальностью. Эта особенность позволит применять её не только в продукции компании ФОРМ, но и в различных отраслях, где требуется разработка ВПО на микроконтроллерах и ПЛИС. Благодаря модульной структуре и возможности расширения набора библиотек, платформа может быть адаптирована под конкретные задачи и потребности пользователей, обеспечивая тем самым широкую функциональность, удобство внедрения, стабильность и импортонезависимость.