|
Вопросы по scmRTOS |
|
|
|
 |
Ответов
(105 - 119)
|
Apr 10 2010, 06:10
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
И получится виндоуз  А нужен - реалтайм. То есть, детерминированное время реакции на событие. Вместо того, чтоб с наскоку предлагать перекроить систему, подумайте лучше о том, как её правильно применить. Задействуйте прерывание от UART, и пропадёт надобность висеть в глухом опросе, ожидая прихода символа. Или, более обобщённо: в подавляющем большинстве случаев встраиваемая программа представляет собой обработку внешних событий и периодических событий. Произошло внешнее событие - выполнили действия. Досчитал таймер до заданного значения - выполнили действия. Время реакции на событие - приоритет задачи. Практически никогда нет нужды в непрерывном выполнении какого-то куска кода. Возникновение внешнего события обычно определяется по прерыванию. Ну или путём опроса по таймеру, если нужного прерывания нет.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Apr 10 2010, 07:07
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(a9d @ Apr 10 2010, 12:40)  А почему сразу виндовс а не линукс? Да без разницы. Ни то ни то не подходит для реалтайма. Цитата О том как писать или не писать код то уже совсем другая тема. Окей, не стану утомлять поучениями.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Apr 10 2010, 07:52
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(a9d @ Apr 10 2010, 08:40)  Плюс можно дать выбор пользователю какой он хочет использовать планировщик. Извините, но я с поучениями  . В Вашем случае, по крайней мере на данный момент, Вы, как пользователь, вообще не знаете, что хотите от системы. Хочу, чтобы работало все, чего-бы я не написал, даже если я не представляю, что я делаю, это не подход к делу  . Тем более в мире компактных систем. Прадигма которой руководствовался Автор при создании scmRTOS изложена четко и внятно, не сочтите за труд для начала ознакомиться, понять, ну и уж потом принять, или отвергнуть.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 10 2010, 11:02
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(a9d @ Apr 10 2010, 10:21)  Я знаю чего хочу. Почитав еще и этот опус, посмею повторить - НЕ знаете  . Некие мысли сделать "красиво", но не более  . Ну а так, вообще, где-то у Вас в голове возможно что-то несколько похожее на задачи одного уровня приоритета мелькает. Их в этой системе нет. Пали жертвой прадигмы  . Но обойтись в принципе можно. Возможно, наличие кооперативных задач помогло-бы более красиво решать определенный круг задач. Но их тоже нет в прадигме  , но можно ручками сделать в одной из задач. Цитата(a9d @ Apr 10 2010, 13:10)  В scmRTOS бесконечный цикл в менее приоритетном процессе не вешает систему. Вы будете, к сожалению, удивлены, но вешает, ибо есть процесс, который никогда не получит управления. Задание - узнать как его зовут.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 10 2010, 11:10
|
Местный
  
Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532

|
Код template<> OS_PROCESS void TProc1::Exec() { char d1,d2;
for(;;) { MyUart.sendByte('a'); Sleep(1); } } // TProc1::Exec()
template<> OS_PROCESS void TProc2::Exec() { char d1;
for(;;) { d1=MyUart.receiveByte(); //Бесконечный цикл MyUart.sendByte(d1);
} Но в таком случае все отлично работает. Менее приоритетный процесс не вешает систему. А зачем тогда в такой реализации заглушке передавать управление? Ведь первый процес будет стоять, стоять столько сколько ему положено. Заглушка актуальна когда оба процесса уснут и тогда на время спячки IdleProcess получит управление.
Сообщение отредактировал a9d - Apr 10 2010, 11:23
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|