На ваш взгляд, MSM (Boost Meta State Machine) подходит для встраиваемых приложений? В моем случае приложение должно работать на микроконтроллере Cortex-M4F с 1 МБ флэш-памяти и 192 КБ ОЗУ. Мне нравится тот факт, что MSM дает вам более структурированный подход для определения иерархического конечного автомата с ортогональными областями, но он также вносит некоторые накладные расходы. Мне было интересно, возможен ли такой подход для встраиваемых приложений с ограничением памяти или я должен вернуться к более традиционным конечным автоматам «случая переключения».
Это действительно зависит от того, как часто вам нужно будет использовать его, и насколько это полезно для вашего проекта с точки зрения времени, простоты разработки, удобочитаемости, переносимости. & и т.п.
Если у вас есть все время в мире, вы могли бы потенциально сделать что-то, что было бы более специализированным и предназначенным для ваших приложений.
ОЗУ ценна в вашем сценарии (конечно, в зависимости от вашего приложения). Я предлагаю написать несколько нетривиальный конечный автомат с использованием Boost (или использовать пример Boot), изучить использование ОЗУ, а затем определить, есть ли у вашего проекта бюджет [RAM].
Заметка, boost заставляет компромисс использовать больше места для кода (посредством шаблонов), чем во время выполнения. Кроме того, этот компромисс оптимизирует производительность во время выполнения, поскольку процессор гораздо более эффективен при извлечении инструкций из флэш-памяти, чем при извлечении данных из ОЗУ (в большинстве случаев при использовании Cortex-M4F).
Помните, C ++ 11 & 14 компиляторов намного умнее, чем раньше для метапрограммирования / шаблонов, так что раздувание кода не должен действительно вызывает беспокойство, потому что компромисс / стоимость использования Boost MSM может стоить этого для сложных, нетривиальных конечных автоматов.
Проверьте Boost MSM-lite (экспериментальный), который пытается решить многие из проблем, сводя МСМ к конечному набору возможностей ванильного МСМ.