|
|
  |
Подскажите пожалуйста, про многозадачность. |
|
|
|
Oct 20 2006, 06:09
|

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

|
Цитата(_Алекс @ Oct 20 2006, 08:52)  Посмотрел ОС scmRTOS, jacOS, Salvo. многозадачность нужна в AVR а все операционки со своей поддержкой много МК самых разных, поддержка разных компиляторов, условная компиляция, комментарии в исходнике не поймешь, да и исходник сам не найти, компоновка в среде, закрытые подключаемые библиотеки… scmRTOS: есть поддержка AVR, один компилятор IAR, условная компиляция - и это правильно, комментарии отличные, русская документация с фрагментами исходников OS для понимания, исходники открыты для любого использования, в т.ч. коммерческого, пример использования в комплекте - собирается командной строкой (что не мешает использовать IDE), библиотек нет - только исходники. Автор оперативно отвечает. Вот пример отладки в среде Proteus программы с использованием scmRTOS на AVR. Видно, как можно шагать по исходному коду системы. Цитата Понравилась Salvo но где исходник! jacos - оптимизированная Salvo, послужившая его дальним прообразом. А исходники jacos автор в свое время предлагал за умеренные деньги. Сейчас, как мне сообщили, он вообще не ответил на вопросы. Система не обновлялась уже очень давно, и есть сомнения, что автору еще интересно заниматься ее поддержкой. Потому мои знакомые от ее использования отказались - мало ли что, а поправить не выйдет. А исходники Salvo, как я понимаю, коммерческие - но доступные (у меня нет). Цитата В моем проекте задач 6. Причем некоторые требуют жесткой временной привязки и активно используют таймеры, порты ввода вывода, ШИМ, SPI, USART. Такие вещи надо стараться делать по прерываниям. Цитата Остальные задачи, включить выключить, считать дискретный вход. Мне кажется, нужен хороший кооперативный приоритетный планировщик как, например в Salvo (вот бы его исходник) ни какой глобализации объять не объятное, только то что нужно. Осталось написать кооперативный планировщик, скажем задач 10 максимум. Может есть у кого исходник. Jacos более чем подходит этому описанию, а условная компиляция позволяет отсеять то, что не используется. Один минус: отсутствие исходников и поддержки на данный момент (по известной мне информации, может, она ошибочна).
|
|
|
|
|
Oct 20 2006, 09:47
|
Участник

Группа: Новичок
Сообщений: 44
Регистрация: 2-05-06
Пользователь №: 16 710

|
Цитата(_Алекс @ Oct 20 2006, 09:52)  Посмотрел ОС scmRTOS, jacOS, Salvo. многозадачность нужна в AVR а все операционки со своей поддержкой много МК самых разных, поддержка разных компиляторов, условная компиляция, комментарии в исходнике не поймешь, да и исходник сам не найти, компоновка в среде, закрытые подключаемые библиотеки… Врядли исходники или коментарии в них реально нужны. Встретил где-то фразу, имхо так и есть, что для того чтобы поправить что-нибудь в ядре нужно быть экспертом в RTOS. Цитата(_Алекс @ Oct 20 2006, 09:52)  Мне кажется, нужен хороший кооперативный приоритетный планировщик как, например в Salvo (вот бы его исходник) ни какой глобализации объять не объятное, только то что нужно. Осталось написать кооперативный планировщик, скажем задач 10 максимум. Может есть у кого исходник. Исходники можно взять для jacos, и повторю, нужны они лишь при обновлении версий компиляторов. Раньше можно было немножко заплатить за поддержку, сейчас ее нет, но есть исходники. Salvo только за деньги, за довольно приличные. Можно слямзить исходники, но лямженный порт для AVR не встечал. Может есть у кого?
|
|
|
|
|
Oct 20 2006, 11:19
|
Участник

Группа: Новичок
Сообщений: 44
Регистрация: 2-05-06
Пользователь №: 16 710

|
Цитата(_Алекс @ Oct 20 2006, 14:50)  А у вас нет исходника jacos. Есть. Обращайтесь к автору и у вас будет текущая версия.
|
|
|
|
|
Oct 20 2006, 16:57
|

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

|
Цитата(Alex B._ @ Oct 20 2006, 15:39)  >> Один минус: отсутствие исходников Это не минус. Если система активно развивается автором - не нужно ему мешать. Ну поправите вы что-то, добавите дополнительные сервисы, а автор выпустит новую версию. И все же это минус. Наличие исходников позволяет лучше понять то, как реализована та или иная функциональность, особенно в случае неких проблем. То, что для этого придется разобраться в коде - да, и не все на это готовы. Но кто готов - ему это пригодится. Если исходники хорошо прокомментированы, то все "подводные камни" там должны быть описаны, а не оставаться в голове автора (который их обязательно забудет через пару лет сам). Что касается правки, то есть и другая модель внесения изменений: пишется письмо автору, где предлагается некая функциональность и патчи примера ее внесения. Если автор считает, что это заслуживает внесения в официальный порт - он это сделает в очередном релизе. Если нет - то нет. Я такую модель обкатал на AVR-USB драйвере - она очень хорошо работает. Все, что мне было нужно, автор дописал в оригинале, сохранив совместимость с исходной версией. В итоге я просто перешел на новую версию, выкинув свои патчи, а драйвер стал более функциональным. При этом диалог был конструктивным: не "а нельзя ли добавить вот это?", а "хочется вот такое, я сделал так - прошу посмотреть и реализовать, если одобрямс".
|
|
|
|
|
Oct 21 2006, 03:26
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(_Алекс @ Oct 18 2006, 16:29)  Есть несколько задач (программ) которые должны выполнятся с минимальным временем, можно организовать как линейный список функций, которые последовательно вызываются из главной функции main() при условии что время выполнения каждой функции ограничено т.е. внутри функции нет кода который задерживает выполнения (ожидает чего либо). Например одна функция обрабатывает принятый массив с USARTа. другая расшифровывает принятую команду и выполняет ее, подготавливает ответ к отправке (квитирование). Еще пару функций, которые что-то делают (обслуживают клавиатуру, исполнительные устройства). Получается все запутанно, если делать все функции в виде конечных автоматов с минимальным временем работы каждой. Хорошо было бы, если каждая функция выполнялась в виде задачи, ожидает, данные с параллельного потока пускай ждет, получила что хотела, выполняет. Есть задержка в функции скажем, на 20 секунд, пускай ждет, в это время выполняются другие функции. С операционными системами как-то все сложно, может планировщик задач да и все. Какие есть решение не сложные? Механизм взаимодействия функций друг с другом. Недавно запустил scmRTOS на микроконтроллере ATmega16. Версия ОС 1.10, компилятор GCC. Никаких сложностей не встретил. Пример, приложенный к ОС, собрался сразу и без проблем. Потом написал свою, с нуля, тестовую программу. Сборка также прошла отлично. Рекомендую обратить внимание на эту ОС: есть исходники, есть хорошо написанный мануал.т Есть отзывы о ее надежной работе.
--------------------
Выбор.
|
|
|
|
|
Oct 24 2006, 10:18
|
Участник

Группа: Новичок
Сообщений: 24
Регистрация: 20-10-06
Пользователь №: 21 500

|
У многих "универсальных" ОС основная проблема - неоптимизированное ядро. Там бы все ручками... А так их реакция не радует. Монопольный режим ядра, да и долгое время переключения задач. Прикрепляю архив с "в последний лохматый раз" переделаной "переключалкой контекстов". Описывать неохота  если кому интересны подробности - спрашивайте. Сие работает на давайсах с мега48, другой на 16. Написано на асме и для асма (но очень хочется сами задачи на С писать, сейчас "вопрос прорабатывается"). Если кто-нибудь что-нибудь предложит по оптимизации ядра, будет хорошо. интересны: Функция проверки истечения таймаута; Функция проверки говых по событию задач; время переключения задач: с одной на ту же около 150 тактов (примерно) с одной на другую от 200 тактов (примерно). прерывания рабоают в монопольном режиме. планировщик в общем режиме. //-------------------------------- щаз там уарт на 115200 зашит и прием зациклен на передачу через буферную систему. При старте выдает тестовую строчку. Работоспособность проверял только что. С уважением, yod
|
|
|
|
|
Oct 25 2006, 11:59
|
Группа: Новичок
Сообщений: 9
Регистрация: 28-11-05
Пользователь №: 11 498

|
А ничего, что на сайте scmRTOS висит версия 2.04a-beta от 28.04.2006. Как у нее со стабильностью,как никак бета-версия. Можно ее применить в серьезном проекте.
|
|
|
|
|
Oct 25 2006, 12:47
|
Участник

Группа: Новичок
Сообщений: 44
Регистрация: 2-05-06
Пользователь №: 16 710

|
Цитата(yod @ Oct 24 2006, 14:18)  Функция проверки истечения таймаута; Функция проверки говых по событию задач; время переключения задач: с одной на ту же около 150 тактов (примерно) с одной на другую от 200 тактов (примерно). прерывания рабоают в монопольном режиме. планировщик в общем режиме. Ну jacOS, например: Функция проверки истечения таймаута - ok; Функция проверки говых по событию задач - ok; время переключения задач: с одной на ту же - 55 тактов (mega16, IAR 420A, prim2) с одной на другую - от 55 тактов (OS_Cooperate(), скажем, OS_Delay() - 146 тактов). прерывания рабоают в монопольном режиме - ? Не понял что имеется в виду. планировщик в общем режиме - ok.
|
|
|
|
|
Oct 25 2006, 12:57
|
Участник

Группа: Новичок
Сообщений: 24
Регистрация: 20-10-06
Пользователь №: 21 500

|
jacOS - это круто, потому что FSM (Finite State Machine) и соотвественно в расчет не идет - не сравнима.
|
|
|
|
|
Oct 25 2006, 13:14
|
Участник

Группа: Новичок
Сообщений: 44
Регистрация: 2-05-06
Пользователь №: 16 710

|
Цитата(yod @ Oct 25 2006, 16:57)  потому что FSM (Finite State Machine) В каком месте FSM? Да где там хоть намек на FSM, ничего не путаете? Вообще, если не трудно, поясните свою мысль. Цитата(yod @ Oct 25 2006, 16:57)  и соотвественно в расчет не идет - не сравнима. Обычная невытесняющая ось. С чем не сравнима? На мой взгляд, невытесняющие оси, по природе своей, на порядок (двоичный, троичный) более подходят для AVR , чем вытесняющие. Но, до пьедестала несравнимых (несравненных) сама концепция их не вытягивает.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|