|
Автоматный подход (SWITCH), Поделитесь опытом использования |
|
|
|
Jul 2 2006, 17:17
|
Участник

Группа: Участник
Сообщений: 37
Регистрация: 20-03-05
Пользователь №: 3 533

|
Решил в последнее время освоить более строгие-формальные методы проектирования программ для МК (да и для ПК). Делаю уже третий проект с помощью КА. правда, я использую некую смесь из того, что где-то прочитал и того, что сам придумываю по ходу. При этом всё выполняется на бумаге (проектирование КА), а далее ложится на код, по моим личным предпочтениям.
Результаты положительные, но тут хотелось бы спросить совета профессионалов, каким путём дальше идти, стоит ли использовать кодогенераторы и прочее ПО и т. д.
Интересно было бы узнать, насколько часто микроконтроллерщики используют автоматный подход к проектированию программ. Какое ПО при этом используется (Visual State etc.), каковы результаты (увеличение скорости разработки, надёжности, улучшение взаимопонимания в коллективе разарботчиков).
|
|
|
|
|
 |
Ответов
|
Jul 3 2006, 09:44
|

Частый гость
 
Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664

|
Цитата(_artem_ @ Jul 3 2006, 12:33)  имхо автомат конечных состояний и ртос это две различные веши и их сравнение не является корректным. Это действительно две совершенно разные вещи. Под близостью кооперативной RTOS и обычной реализации автомата я имел в виду то, что и там, и там исполнение кода реализовано достаточно предсказуемо. В автомате мы прыгаем в отработку какого-то состояния, выполняем (достаточно быстро) определенные действия (возможно, приводящие к смене состояния на очередном шаге) и выходим. В кооперативной RTOS мы попадаем в задачу, выполняем (также быстро) определенные действия и возвращаем управление диспетчеру задач. В этом плане реализации похожи по ресурсам как памяти, так и времени. В отличие от этого в преемптивной RTOS мы можем позволить себе писать сколь угодно долго работающие задачи, не беспокоясь о том, чтобы дать поработать другим. За переключением следит сама RTOS. Но это влечет за собой существенно бОльшие накладные расходы как по памяти (на сохранение контекста), так и по времени (на его переключение). Я имел в виду только этот момент, а никак не сходство идеологий.
|
|
|
|
|
Jul 3 2006, 09:53
|

учащийся
    
Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249

|
Цитата(osnwt @ Jul 3 2006, 12:44)  Цитата(_artem_ @ Jul 3 2006, 12:33)  имхо автомат конечных состояний и ртос это две различные веши и их сравнение не является корректным.
В кооперативной RTOS мы попадаем в задачу, выполняем (также быстро) определенные действия и возвращаем управление диспетчеру задач. а как для случая роунд робин в котором переключение задачи не обьязательно управляется ею самой ?
--------------------
Зачем лаять на караван , когда на него можно плюнуть?
|
|
|
|
|
Jul 3 2006, 10:51
|

Частый гость
 
Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664

|
Цитата(_artem_ @ Jul 3 2006, 12:53)  Цитата В кооперативной RTOS мы попадаем в задачу, выполняем (также быстро) определенные действия и возвращаем управление диспетчеру задач.
а как для случая роунд робин в котором переключение задачи не обьязательно управляется ею самой ? Не совсем понял вопроса. В кооперативной RTOS мы обязаны в каждой задаче отдать управление диспетчеру тогда, когда мы ничего не делаем (ждем наступления момента времени или какого-либо события, например, освобождения ресурса или получения сообщения от другой задачи). Это не означает, что задачи будут переключаться строго по кругу (в противном случае бы мы имели простой бесконечный цикл с последовательными вызовами последовательно исполняемых функций). Каждая задача виртуально живет собственной жизнью. RTOS определяет, когда нужно выполнить ту или иную задачу и дает ей управление, которое та обязана вернуть так быстро, как это возможно. То есть, в кооперативной RTOS вызов задачи не управляется ей самой, но выход из нее - да. А в преемптивной (вытесняющей) RTOS переключение управления от конкретной задачи, как и получение его ей не выполняется ей самой, а полностью зависит от диспетчера задач. При всей кажущейся ограниченности кооперативного подхода на самом деле в очень большом числе случаев его более, чем достаточно. Достаточно гарантировать, что при наличии нескольких задач, чья очередь поработать подошла в данном кванте времени, их выполнение в сумме займет не более, чем длительность этого кванта времени. Тогда с точностью до него мы получим real-time OS. Если строгого real-time для каких-то задач не надо, то тогда можно слегка нарушить это правило, и тогда в среднем период исполнения все равно будет оставаться заданным. Если же нужен строгий real-time, то тогда нужно вытесняющую OS, и при этом время переключения контекста должно быть меньше ожидаемого времени реакции на событие.
|
|
|
|
Сообщений в этой теме
Lem Автоматный подход (SWITCH) Jul 2 2006, 17:17 Laptop Я использую следующий подход. main выполняется в в... Jul 2 2006, 19:09 vet Да, собственно, выбор-то невелик - или КА, или зад... Jul 2 2006, 19:22 pitt Цитата(vet @ Jul 2 2006, 15:22) ..задачи ... Jul 2 2006, 21:28  krdmitry Цитата(pitt @ Jul 3 2006, 01:28) Цитата(v... Jul 3 2006, 08:22 tag Цитата(vet @ Jul 2 2006, 23:22) Да, собст... Sep 17 2007, 06:17 krdmitry А есть ли еще программы-кодогенераторы, кроме Visu... Jul 2 2006, 20:34 Lem Цитата(krdmitry @ Jul 3 2006, 00:34) А ес... Jul 2 2006, 20:53 tag Цитата(krdmitry @ Jul 3 2006, 00:34) Врод... Jul 10 2006, 15:17 Lem Выбор - понятно.
но интересно узнать именно соотн... Jul 2 2006, 20:41 osnwt Цитата(Lem @ Jul 2 2006, 23:41) возможнос... Jul 3 2006, 09:14 µµC Цитата(Lem @ Jul 3 2006, 00:41) Причём, р... Jul 14 2006, 12:34  osnwt Цитата(µµC @ Jul 14 2006, 15:34) Для mega... Jul 14 2006, 12:43   µµC Цитата(osnwt @ Jul 14 2006, 16:43) Особен... Jul 14 2006, 13:30 sensor_ua Посмотрите NesOS - Finite State Machine Operating ... Jul 3 2006, 11:03 osnwt Цитата(sensor_ua @ Jul 3 2006, 14:03) Пос... Jul 3 2006, 11:16  =GM= Еще один пример ОСРВ для МК и ДСП можно посмотреть... Jul 3 2006, 12:37 _artem_ 2 osnwt, в слючае роунд робин можно сделать так чт... Jul 3 2006, 11:26 osnwt Цитата(_artem_ @ Jul 3 2006, 14:26) 2 osn... Jul 3 2006, 11:36  _artem_ ЦитатаЕсли разговор конкретно про jacos, то там пр... Jul 3 2006, 13:10   osnwt Цитата(_artem_ @ Jul 3 2006, 16:10) Цитат... Jul 3 2006, 14:09 bialix вот еще один какбы генератор WhatOS: http://www.st... Jul 3 2006, 12:20 pitt RTOS большая и многогранная тема. Нет и не может б... Jul 3 2006, 15:00 vesago Вперве применил КА когда надо было сделать контрол... Jul 4 2006, 08:13 _artem_ Цитата(vesago @ Jul 4 2006, 11:13) Вперве... Jul 4 2006, 08:43  ig_z Цитата(_artem_ @ Jul 4 2006, 11:43) Вызов... Jul 4 2006, 10:30   _artem_ Цитата(ig_z @ Jul 4 2006, 13:30) Цитата(_... Jul 4 2006, 11:22    bialix Цитата(_artem_ @ Jul 4 2006, 14:22) Visua... Jul 4 2006, 14:34     _artem_ Цитата(bialix @ Jul 4 2006, 17:34) Цитата... Jul 4 2006, 15:16      bialix Цитата(_artem_ @ Jul 4 2006, 18:16) Цитат... Jul 4 2006, 17:10  _Bill Цитата(_artem_ @ Jul 4 2006, 11:43) Вызов... Jul 4 2006, 11:21  Kirill Frolov Цитата(_artem_ @ Jul 4 2006, 12:43) Вызов... Sep 16 2007, 14:22   Dog Pawlowa Цитата(Kirill Frolov @ Sep 16 2007, 17:22... Sep 16 2007, 19:32   singlskv Цитата(Kirill Frolov @ Sep 16 2007, 18:22... Sep 16 2007, 20:16 white.wind Возможно полезным будет ресурс на тему http://soft... Jul 4 2006, 08:24 bialix Хотел бы пару слов сказать в ответ исходному посту... Jul 4 2006, 14:54 Crystaly Цитата(krdmitry @ Jul 3 2006, 00:34) ...Е... Jul 7 2006, 06:45  bialix Цитата(Crystaly @ Jul 7 2006, 09:45) Цита... Jul 7 2006, 13:04   krdmitry Цитата(bialix @ Jul 7 2006, 17:04) Неправ... Jul 7 2006, 19:34    Lem Цитата(krdmitry @ Jul 7 2006, 23:34) Цита... Jul 7 2006, 19:56    bialix Цитата(krdmitry @ Jul 7 2006, 22:34) Цита... Jul 10 2006, 09:45   Crystaly Цитата(bialix @ Jul 7 2006, 17:04) У вас ... Jul 10 2006, 06:13    bialix [quote name='Crystaly' date='Jul 10 20... Jul 10 2006, 09:58 _artem_ Ну думаю, что скорее всего осязание подвело Вас иб... Jul 4 2006, 17:26 CD_Eater Цитата(bialix @ Jul 4 2006, 18:54) Сам по... Jul 6 2006, 21:54 osnwt Цитата(CD_Eater @ Jul 7 2006, 00:54) Имхо... Jul 6 2006, 22:14  bialix Цитата(osnwt @ Jul 7 2006, 01:14) Цитата(... Jul 7 2006, 05:57 Evgeny_CD Может кому пригодится
****************************... Jul 10 2006, 07:25 bialix Перепишем алгоритм светофора в терминах классическ... Jul 10 2006, 10:16 Tran Раньше уже была тема о КА - http://electronix.ru/f... Jul 10 2006, 11:27 bialix По поводу диаграмм конечных автоматов в нотации UM... Jul 11 2006, 05:36 sensor_ua Cегодня такая вот прелесть попалась - 4 макроса дл... Jul 11 2006, 18:22 sensor_ua ЦитатаВо-первых оптимизирующий компилятор заменяет... Sep 16 2007, 17:20 sansnotfor Вот перевод упомянутой здесь статьи о конечных авт... Mar 24 2011, 00:24 kovz могу посоветовать вот это http://www.state-machine... Mar 28 2011, 13:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|