Я сталкиваюсь с проблемой переноса приложения C, состоящего из разных параллельных конечных автоматов (FSM), на новую платформу (на основе YOCTO / Linux).
Приложение C было разработано для работы на микроконтроллере на базе Cortex M3 с использованием Keil RTOS.
Реализация FSM была сделана наивным способом, где каждый FSM написан в собственной RTOS-задаче (в основном просто метод C). Внутри этих методов есть просто большой оператор switch, который определяет поведение на основе текущего состояния (переменная int). FSM взаимодействуют друг с другом, используя глобальные переменные, защищенные мьютексом или событиями.
Так как мы столкнулись с некоторыми аппаратными ограничениями, а также отсутствием требований в реальном времени, я планирую перенести программное обеспечение в систему на основе Yocto, используя C ++ и Qt, с поддержкой параллельных и подсостоящих машин. Кроме того, графический интерфейс должен быть частью системы, использующей QT QML.
Мой вопрос: существует ли какая-то лучшая практика для достижения желаемой функциональности? Может быть, существует какая-то генерация кода для FSM из диаграммы UML с использованием какого-либо инструмента (Enterprise Architect и т. Д.)?
Я читал о QT StateMachine Framework и поддержке SCXML, это будет лучший путь?
Я рад за любую помощь.
Задача ещё не решена.
Других решений пока нет …