реклама на сайте
подробности

 
 
> Чудо-юдо QuantumLeaps или просто QP., Фреймворк для автоматного программирования. Кто что скажет?
JeDay
сообщение May 2 2018, 23:07
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 276
Регистрация: 22-09-05
Из: Kiev
Пользователь №: 8 818



Всех приветствую.
Где-то лет 10 назад я первый раз услышал про QP. Почитав интернет и не найдя ни весомых аргументов для использования ни обсуждений на форумах забил...
Ссылка на QP: https://www.state-machine.com
Недавно довелось занырнуть в проэкт написанный на QP. Данный фреймворк работает поверх известной RTOS. Используется около 15ти состояний в которых есть свои под-состояния. Больше 30ти ивентов и 8ми актив-обьектов(QActive) их обрабатывающих. Каждый QActive работает в отдельном потоке. Пока состояние не закончит работу, другое не стартует(даже в другом потоке). В QP переключатель контекста свой. Приоритетное вытеснение, как я понял, самой RTOS полезной нагрузки не несет ибо не знает о QP работающего поверх нее. В общем парадигма программирования совсем другая.
Мне интерестно, кто нибуть вообще эту штуку применял? Интересует впечатления, удобство написания прошивок под Cortex-M.
Лично я не вижу смысла, имея ОС с приоритетным вытеснением, накатывать непонятный фреймворк и делить код на пару десятков состояний которых априори не планировалось бред. Из плюсов в QP есть возможность подписываться на событие нескольким QActive. Но тоже самое в uc/OS существует в виде "Event Flag Group" да и многими другими объектами синхронизации можно обойтись. smile3009.gif
Думаю данный подход может понравиться тем кто еще не освоил RTOS и многопоточное программирование, продолжает по накатанной пилить прошивки на базе while-loop со стейтами.
Вот еще пара ссылок:
http://we.easyelectronics.ru/kovz/ispolzov...vstuplenie.html
https://habr.com/post/114239/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
JeDay
сообщение May 3 2018, 10:04
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 276
Регистрация: 22-09-05
Из: Kiev
Пользователь №: 8 818



Цитата
Нет, он работает без ОС, но заложена возможность запускать этот фреймворк как сервис в ОС.

Да я знаю. Ему нужна переключалка контекста. Причем QP содержит cooperative и pre-emptive планировщика. Можно использовать любой. В мной упомянутом проекте юзается FreeRTOS+QP/C. Переключения контекста QActive происходит в конце отработки QState. Ну и в итоге мы получили на pre-emptive планировщике cooperative переключение контекста.
Интересует мнение людей которые на деле попробовали QP. Лично я фишку не уловил. Мне лучше нативная многозадачность с приоритетным вытеснением. А стейт-машины где потребуется я на switch-case реализую.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 3 2018, 10:17
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(JeDay @ May 3 2018, 13:04) *
Интересует мнение людей которые на деле попробовали QP.

Обсуждалось здесь десятки раз. Никто здесь реально эту вещь не юзал под нормальный embedded.
Но подход этот широко используется в C#, VB, Java и прочих в виде Async и Await
Вот там их наверняка юзали все. Там и спрашивайте.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 00:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016