|
|
  |
Вопросы по scmRTOS |
|
|
|
Apr 10 2010, 23:14
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(a9d @ Apr 10 2010, 22:18)  И так, как реализовать свой планировщик процессов я уже понял. Итак(слитно). А смысл? Вы пока еще не поняли основных принципов вытесняющей многозадачности, но уже пишете свой планировщик. В вашем случае достаточно организовать в прерывании UART запись в канал, а в функции receiveByte() читать из этого канала. Передачу управления сделает сама ОС внутри функций канала. Вы же, образно говоря, пытаетесь запрячь лошадь в автомобиль и возмущаетесь, что и лошади тяжело и автомобиль движется медленно. Цитата(a9d @ Apr 10 2010, 22:18)  IdleProcess что точно он делает и зачем он нужен? Он работает, когда все остальные процессы спят. Часто используется для перевода ядра в спящий режим для снижения энергопотребления. А что в обычной программе делает процессор когда ему нечего делать полезного? Цитата(a9d @ Apr 10 2010, 22:18)  В документации так и ненашол, понятного обьяснения, по поводу использования прерывания компоратора. не<пробел>нашел, компаратора, перебор с запятыми. Объяснение в документации есть - для переключения контекста нужно генерить какое-либо прерывание программно. Один из способов получения такого прерывания - дергать ногой, к которой внутри подключен вход компаратора. Второй возможный вариант - прерывание SPM, тоже есть в примерах. Цитата(a9d @ Apr 10 2010, 22:18)  Как это использовать? Что использовать? Что вы не нашли объяснения? Цитата(a9d @ Apr 10 2010, 22:18)  Существует ли более подробная документация? В операционке заметил функции и параметры которые нигде не описаны. Нет. Более подробной нет. Все функции, которые предназначены для использования пользователем - описаны. Неописанные функции используются внутри реализации ОС. Они нужны разработчикам самой ОС для реализации ее внутренностей, снабжены комментариями или самодокументированы своим кодом. Не предназначены для использования "снаружи" ОС. Цитата(a9d @ Apr 11 2010, 00:24)  Возникла проблемка. А как из одного усыпить другой процесс? Никак.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 11 2010, 08:31
|

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

|
Цитата(a9d @ Apr 11 2010, 09:50)  Основная идея это чтоб бесконечный цикл в приоритетном процессе не вешал менее приоритетные процессы и менее приоритетный мог получить управление. Да, полный мрак  . Действительно 100%  совпадение с ситуацией из анекдота: Цитата Привезли в колхоз первый трактор. Долго объясняли условия эксплуатации, принцип действия, схему управления а потом спросили: - Вопросы есть? Встает мужик: - Да, понятно все! Только я одно не понял - куда лошадь запрягать?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 11 2010, 10:29
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(a9d @ Apr 11 2010, 09:50)  В случае с UART использовать канал удобно. Но это частный случай. 1)Большая программа складывается из частных случаев. 2)В программе не должно быть циклических опросов - ожиданий. Цитата(a9d @ Apr 11 2010, 09:50)  А вот документация устарела. НапИшите более новую? Цитата(a9d @ Apr 11 2010, 09:50)  t.UnlockISR(); -- Это что за анлок? А попробуйте немного подумать. Если TEventFlag::SendISR() взводит флаг из прерывания, message::sendISR() посылает сообщение из прерывания, то что, исходя из своего названия, должен делать TMutex::UnlockISR()?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 11 2010, 11:20
|

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

|
Цитата(a9d @ Apr 11 2010, 12:37)  scmRTOS простая операционка. В ней можно быстро разобраться. Беда в том, что Вы совсем совсем не разобрались, причем не scmRTOS, а вообще, как системами-то пользуются. И похоже не собираетесь, поскольку, опять цитирую: Цитата Основная идея это чтоб бесконечный цикл в приоритетном процессе не вешал менее приоритетные процессы и менее приоритетный мог получить управление. Это отвал башки какой-то. Если в системе есть приоритеты, то они ДОЛЖНЫ РАБОТАТЬ и никакой процесс с высоким приоритетом не может быть прерван процессом с низким приоритетом (только равным, или в результате инверсии приоритетов при разруливании доступа к ресурсам, но этого в scmRTOS нет ), ибо обратное ПЕРЕЧЕРКИВАЕТ ВСЮ систему. Как только, Вам в голову пришла вышеотцитированная "концепция", следует СРАЗУ забыть о вытесняющей многозадачности, слове приоритеты и взяв "чистый лист бумаги" ваять что в голову придет абы работало. Что собственно Вы и делаете, только зачем-то всуе поминая scmRTOS. Цитата(a9d @ Apr 11 2010, 13:28)  ЗЫ: Тема топика "Вопросы по scmRTOS". Только Ваши "идеи" к теме топика отношения не имеют  , как и лошадь к трактору. To: Сергей Борщ - Вынести этот разговор куда-нибудь подальше?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|