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

 
 
> State machine, Приведите примеры реализации
sat
сообщение Feb 2 2005, 12:29
Сообщение #1





Группа: Новичок
Сообщений: 10
Регистрация: 6-07-04
Пользователь №: 265



Где можно почитать по теме/посмотреть примеры на С, асме
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Diz
сообщение Mar 14 2009, 09:13
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 1-08-06
Пользователь №: 19 250



Интересно, а как сделать с набором параллельно работающих конечных автоматов (без RTOS) долго работающую задачу, требующую активного участия процессора ? Например, работу с FAT (сектор может читаться значительное время) или рендеринг экрана для UI (тоже небыстро). Разбивать на отдельные этапы некрасиво и неудобно, а иначе задача будет блокировать другие на долгое время.

С подобными вещами не сталкивался, так как у меня обычно много мелких задач и отрабатываются они мгновенно, либо без участия
процессора - большую часть времени процессор спит.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 22 2009, 04:53
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Diz @ Mar 14 2009, 11:13) *
Интересно, а как сделать с набором параллельно работающих конечных автоматов (без RTOS) долго работающую задачу, требующую активного участия процессора ? Например, работу с FAT (сектор может читаться значительное время) или рендеринг экрана для UI (тоже небыстро). Разбивать на отдельные этапы некрасиво и неудобно, а иначе задача будет блокировать другие на долгое время.

.....
С FAT пример неудачен. Сектор то читается драйверком SPI, и пока он читается задача отдыхает (не требует активного участия CPU).

Рендеринг экрана - подходящий пример. Посмотрим по аналогии. Есть Borland'овский VCL, где вся графика обслуживается исключительно в основном потоке приложения, и при запуске какой-то длительной задачки в том же основном потоке прорисовка приложения намертво тормозится. Чтобы пользователь не подумал, что программа зависла, можно и нужно было либо стартовать доп поток, либо, что значительно проще - иногда вызвать функцию:

Application->ProcessMessages();

Вот так же можно поступить и тут. Что мешает реализовать некую функцию yield / idle - которую любой затяжной процесс сможет вызвать сам, чтобы дать поработать всем остальным процессам? Для того чтобы такую функцию можно было реализовать, необходимо чтобы был список задач(автоматов) с возможностью модификации в Run-Time (чтобы процесс вызывающий эту функцию мог быть удален из списка процессов на время своего испонения). Сосбно вот:

CODE
typedef void (* p_cb)(void);

#define COUNT(arr) (sizeof(arr) / sizeof((arr)[0]))

p_cb list[4];

void add_task( p_cb Callback)
{
for(int i = 0; i < COUNT(list); i++)
if (!list[ i ])
{
list[ i ] = Callback;
break;
}
}

void idle(void)
{
for(int i = 0; i < COUNT(list); i++)
if (list[ i ])
{
p_cb cb = list[ i ];
list[ i ] = NULL;
cb();
list[ i ] = cb;
}
}

void foo_1(void)
{
}

void foo_2(void)
{
}

// это долгий процесс делающий рендеринг
void foo_long(void)
{
volatile unsigned long x = -1UL;
while( x--)
{
// ... do complex stuff

if ( (x & 0xFF) == 0 ) // 255 iterations passed
{
// дадим поработать другим задачам
idle();
}
}
}

void main(void)
{
add_task( foo_1 );
add_task( foo_2 );
add_task( foo_long );

for(;;)
idle();
}



Цитата
Да, большие готовые библиотеки лишают автоматы всяческих преимуществ...
Однако тупик с автоматами...

Раскидать idle()'ов по ключевым точкам и автоматы получают вторую жизнь.
Причина редактирования: Уменьшение видимого размера цитаты исходника.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Mar 23 2009, 09:57
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(defunct @ Mar 22 2009, 07:53) *
Раскидать idle()'ов по ключевым точкам и автоматы получают вторую жизнь.

Конкретный пример. Готовая библиотека efsl. Вставка готового порта заняла час.
Как по быстрому применить автомат для разделения процессов?
Потратить несколько дней на разбиение на куски?
Запихнуть процессы в прерывания? Да у меня под отладкой вообще прерывания глючат, все разобраться некогда.

Тупик может не с автоматами, а в голове. Завтра выставка smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 23 2009, 11:23
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Dog Pawlowa @ Mar 23 2009, 13:57) *
Готовая библиотека efsl.  
Как по быстрому применить автомат для разделения процессов?

Покромсать те части, которые выходят на уровень железа, Yield() вызывать оттуда . Остальное трогать не надо имхо. 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sat   State machine   Feb 2 2005, 12:29
- - bialix   Сайты: http://is.ifmo.ru http://softcraft.ru - раз...   Feb 2 2005, 12:41
- - -Tумблер-   Цитата(sat @ Feb 2 2005, 15:29)...посмотреть ...   Feb 3 2005, 12:02
- - ALys   1. IAR VisualSTATE - в пакете примеры (под разные ...   Feb 3 2005, 15:52
|- - ig_z   Цитата(ALys @ Feb 3 2005, 18:52)2. TS Control...   Feb 4 2005, 12:44
|- - sat   Что то не ставится на ХР. Или это аддон к чему - ...   Feb 7 2005, 11:50
||- - maegg   Может коротенько объясните, зачем это нужно и в ка...   Feb 7 2005, 13:17
||- - vet   Цитата(maegg @ Feb 7 2005, 16:17)Может короте...   Feb 7 2005, 19:54
|- - ALys   Что то не ставится на ХР. Или это аддон к чему - ...   Feb 8 2005, 13:07
- - basileus   SWITCH MACRO local MYP CLR ZH ADZ (MYP>>1)...   Feb 17 2005, 12:50
- - Tran   Уважаемые, подскажите, пожалуйста, среды разработк...   Sep 9 2005, 09:30
- - BVU   Можно почитать теорию графов, там заложен базовый ...   Sep 9 2005, 11:20
- - Sergu   Вот хорошие объяснения с примерами есть: State-O...   Sep 12 2005, 03:27
|- - TMX   Код/**********************************************...   Sep 12 2005, 10:29
|- - Tran   Этот код Вы наверняка писали руками. А есть ли про...   Sep 12 2005, 11:14
|- - TMX   Цитата(Tran @ Sep 12 2005, 14:14)Этот код Вы ...   Sep 15 2005, 16:34
- - lolikandr   Если интересует интересный инструмент, то посмотри...   Sep 13 2005, 09:35
- - Владимир_2010   Применение теории конечных автоматов к программиро...   Mar 4 2009, 12:54
|- - TMX   Цитата(Владимир_2010 @ Mar 4 2009, 16:54)...   Mar 4 2009, 17:31
- - Diz   Рекомендую ознакомиться с реализацией иерархически...   Mar 4 2009, 17:33
|- - _Pasha   Цитата(Diz @ Mar 4 2009, 20:33) Рекоменду...   Mar 4 2009, 18:20
|- - Alex B._   Цитата(_Pasha @ Mar 4 2009, 21:20) УПС. Т...   Mar 4 2009, 21:41
- - Владимир_2010   Diz спасибо за ссылку на книги. В сети также есть ...   Mar 5 2009, 06:54
|- - TMX   Цитата(Владимир_2010 @ Mar 5 2009, 10:54)...   Mar 5 2009, 14:29
|- - TMX   Цитата(Владимир_2010 @ Mar 5 2009, 10:54)...   Mar 5 2009, 15:17
|- - _Pasha   Цитата(TMX @ Mar 5 2009, 18:17) недостатк...   Mar 5 2009, 15:38
|- - TMX   Цитата(_Pasha @ Mar 5 2009, 18:38) Позвол...   Mar 5 2009, 17:09
|- - Diz   Цитата(TMX @ Mar 5 2009, 20:09) не слышал...   Mar 5 2009, 17:31
|- - _Pasha   Цитата(TMX @ Mar 5 2009, 20:09) там Marti...   Mar 5 2009, 17:50
|- - TMX   Цитата(_Pasha @ Mar 5 2009, 20:50) no com...   Mar 6 2009, 07:35
|- - _Pasha   Цитата(TMX @ Mar 6 2009, 10:35) если еще ...   Mar 6 2009, 13:42
|- - TMX   Недостатки прямого присваивания значения переменно...   Mar 10 2009, 13:42
- - _Pasha   А что-нибудь есть в ту же тему, но с текстовым вво...   Mar 5 2009, 14:35
- - Diz   Что касается визуализации, то я имел в виду следую...   Mar 5 2009, 16:55
- - Diz   Наверное, jumptable может быть полезен для сохране...   Mar 6 2009, 13:20
|- - TMX   Цитата(Diz @ Mar 6 2009, 16:20) Наверное,...   Mar 6 2009, 14:35
|- - Dog Pawlowa   Цитата(TMX @ Mar 6 2009, 18:35) сомнитель...   Mar 10 2009, 16:14
||- - TMX   Цитата(Dog Pawlowa @ Mar 10 2009, 19:14) ...   Mar 10 2009, 16:57
||- - Dog Pawlowa   Цитата(TMX @ Mar 10 2009, 20:57) с первым...   Mar 10 2009, 17:36
|- - Diz   Цитата(TMX @ Mar 6 2009, 17:35) сомнитель...   Mar 11 2009, 08:24
|- - TMX   Цитата(Diz @ Mar 11 2009, 11:24) Пример в...   Mar 11 2009, 09:06
|- - Dog Pawlowa   Цитата(TMX @ Mar 11 2009, 12:06) то есть,...   Mar 11 2009, 10:12
|- - TMX   Цитата(Dog Pawlowa @ Mar 11 2009, 13:12) ...   Mar 11 2009, 13:22
|- - _Pasha   Цитата(TMX @ Mar 11 2009, 17:22) Тестиров...   Mar 11 2009, 13:45
|- - Dog Pawlowa   Цитата(TMX @ Mar 11 2009, 17:22) А вот на...   Mar 11 2009, 13:46
|- - TMX   Цитата(Dog Pawlowa @ Mar 11 2009, 16:46) ...   Mar 12 2009, 12:14
|- - Dog Pawlowa   Цитата(TMX @ Mar 12 2009, 15:14) К пример...   Mar 13 2009, 09:21
|- - TMX   Цитата(Dog Pawlowa @ Mar 13 2009, 12:21) ...   Mar 13 2009, 10:07
|- - Dog Pawlowa   Цитата(TMX @ Mar 13 2009, 14:07) Просто м...   Mar 13 2009, 14:59
|- - _Pasha   Цитата(Dog Pawlowa @ Mar 13 2009, 17:59) ...   Mar 13 2009, 15:21
|- - TMX   Цитата(Dog Pawlowa @ Mar 13 2009, 17:59) ...   Mar 13 2009, 16:08
|- - _Pasha   Цитата(TMX @ Mar 13 2009, 19:08) Если авт...   Mar 13 2009, 16:23
|- - TMX   это я показал round-robin с постоянным приоритетом...   Mar 13 2009, 16:55
|- - _Pasha   Цитата(TMX @ Mar 13 2009, 20:55) Вопрос в...   Mar 13 2009, 17:14
- - -=TRO=-   Внутри программируемой логики собирают микропроцес...   Mar 10 2009, 16:47
- - _Pasha   Весь смех в том, что сишная или иная ЯВУ-программа...   Mar 10 2009, 18:17
- - Rst7   Цитатапри помощи переменной state эмулирует счетчи...   Mar 10 2009, 19:15
|- - ReAl   Цитата(Rst7 @ Mar 10 2009, 21:15) Я давно...   Mar 10 2009, 19:51
|- - Dog Pawlowa   Цитата(ReAl @ Mar 10 2009, 22:51) Тада, и...   Mar 11 2009, 07:18
|- - ReAl   Цитата(Dog Pawlowa @ Mar 11 2009, 09:18) ...   Mar 13 2009, 21:30
- - _Pasha   Цитата(Diz @ Mar 11 2009, 11:24) Индекс -...   Mar 11 2009, 11:40
|- - Dog Pawlowa   Цитата(Diz @ Mar 14 2009, 13:13) Интересн...   Mar 14 2009, 13:07
|- - singlskv   Цитата(Diz @ Mar 14 2009, 12:13) Интересн...   Mar 14 2009, 22:23
||- - Diz   Цитата(singlskv @ Mar 15 2009, 01:23) Раз...   Mar 15 2009, 09:26
||- - _Pasha   Цитата(Diz @ Mar 15 2009, 13:26) Вообщем,...   Mar 16 2009, 06:17
||- - singlskv   Цитата(Diz @ Mar 15 2009, 12:26) Вообщем,...   Mar 19 2009, 20:12
|- - Dog Pawlowa   Не нашел, чтобы эта ссылка была упомянута в теме. ...   Mar 24 2009, 11:52
- - Diz   Еще один интересный вариант реализации машины сост...   Mar 17 2009, 20:14
- - Diz   Цитата(singlskv @ Mar 19 2009, 23:12) Как...   Mar 19 2009, 21:32
- - Dog Pawlowa   Цитата(Diz @ Mar 20 2009, 00:32) Ну, это ...   Mar 20 2009, 09:05
- - singlskv   Цитата(Dog Pawlowa @ Mar 20 2009, 12:05) ...   Mar 20 2009, 20:10


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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 10:15
Рейтинг@Mail.ru


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