Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Когда нужна встроенная операционная система
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Aiva
Здравствуйте уважаемые гуру!

Я, как в большей степени теоретик от программирования, неоднократно слышал и читал общие фразы в стиле: ".. ОС позволяет упростить работу программиста и существенно сократить время создания ПО...". В то же время на форумах при обсуждении вопроса нужна или не нужна ОС в данном конкретном случае, всегда приходят к выводу: "не нужна, т.к. это избыточная заморочка".

Объясните, пожалуйста, чайнику: когда конкретно использование ОС выгодно во встроенных приложениях? Какие признаки это выгодности ?
Заранее Вам благодарен.
Сергей Борщ
Цитата(Aiva @ Nov 24 2009, 14:10) *
всегда приходят к выводу: "не нужна, т.к. это избыточная заморочка".
Как правило к такому выводу приходят те, кто никогда ее не использовал. Мое мнение - использовать всегда, если позволяют ресурсы. Попробуйте, и делайте выводы сами.
Dima_G
Когда процессор занимается более чем одной задачей smile.gif
К примеру - просто генерить меандр ножкой - ось не нужна.
если генерить меандр и выводить даные в UART - ось желательна
А если генерить менадр, выводить данные в UART и рисовать что-то на дисплее - без оси будет довольно тяжело жить smile.gif
sigmaN
А если принемать/передавать по УАРТ, сжимать/разжимать вокодером голос, гонять данные от кодека/к кодеку через McBSP и ещё несколько периодических процессов по прерыванию от таймера.... Без оси всё это работает и не так уж и сложно это всё....с осью на данном проце с данным объемом памяти и при данном энергопотреблении - дело бы не пошло.


Примеры эти привел не в качестве осуждения. Мне тоже интересен вопрос, заданный автором.
sergeeff
Ответ прост - встроенные ОС были разработаны для облегчения программирования в случае наличия многих задач. И такие ОС содержат набор отлаженных и проверенных функций для реализации этой многозадачности. Можно ли это решить без ОС? Можно. Как можно все писать на ассеблере, но по тем же соображениям (удобства программирования, в конечном счете) появились языки более высокого уровня.
Aiva
Правильно ли я понял из всего вышесказанного:

1. ОС нужна ТОЛЬКО для параллельного выполнения нескольких задач.
2. Ось имеет средства так организовать выполнение задач, что они автоматически определяют время бездействия проца и без участия программиста втюхивают нужный в данный момент код для выполнения;
3. Без оси необходимо вручную выщитывать времена для таймера и т.п., что трудно если задач 10-ки и чревато неоптимальным выполнением кода.

Правильно ли это и все ли это ? Может еще есть преимущества ОС?
mempfis_
ОС упоминаемые на этом форуме не пользовался но пользовался менеджером задач с возможностью вызова до 64х задач с приоритетом от 1 до 64. Как оказалось вещь очень удобная в случае когда нужно исполнять до нескольких десятков задач паралельно. Заметно облегчает написание программы т.к. позволяет описать каждуюу задачу в пределах одного task с использованием текущего состояния и независимого вызова каждого из них. Сейчас разрабатываюустройство gps-трекера с использованием такого менеджера задач (читай ОС) - результат очень хороший - каждая задача вызывается независимо от остальных, имеет своё текущее состояние, выполняется и в принципе может быть использована в других проектах без существенной переделки.

P.S. IMXO применять ОС там где нужено обслуживать uart/индикатор/клавиатуру/пару датчиков и .... всё это излишество....
Большинство проектов были именно такими и всё работает без freeRTOS/Linux/WinCE и т.п. подобных на борту.
Многое можно сделать просто описав текущими состояниями программы плюс независимый опрос датчиков.
SM
ОС нужна лишь в том случае, если лениво сделать тоже самое без нее. Т.е. фактически со своей ОС, написанной в процессе решения задачи строго под задачу. Просто готовая ОС в ряде случаев экономит время и силы за счет ресурсов, и больше толку от нее никакого.
GetSmart
Цитата(SM @ Nov 25 2009, 03:31) *
ОС нужна лишь в том случае, если лениво сделать тоже самое без нее. Т.е. фактически со своей ОС, написанной в процессе решения задачи строго под задачу. Просто готовая ОС в ряде случаев экономит время и силы за счет ресурсов, и больше толку от нее никакого.

Я бы поправил - в ущерб ресурсам, то бишь требует их больше для того же алгоритма. А так, полностью согласен.
Правда некоторые многотредовые алгоритмы реализовывать в один тред - полная ж..а. То есть без оси реализация подобных алгоритмов иногда может быть даже ресурсоёмче, а не просто сложнее в реализации. Так что всё зависит от алгоритма. Говорить же, что ось нужна в любом проекте - такой же бред, как и то, что она не нужна нигде.
SM
Можно и свою тредопереключалку наваять, не беря готовую ось. Специфическую для задачи. Не велика сложность. Если время позволяет, а ресурсы - нет.
GetSmart
Я как раз примерно 3 года назад свою "тредопереключалку" ваял. Вообще ничего от оси, кроме регистрации и переключения тредов там не было. Но решился я на этот "велосипед" только когда запарился реализовывать очень сложный алгоритм, причём он делился на два подалгоритма. Одна часть должна была реализовывать жёстко заданные действия по обслуживанию девайса (с десяток периферийных устройств), а вторая часть должна была содержать пользовательские алгоритмы, которые пользователь должен был (мог) делать не обращая внимания на первую часть. В такой ситуации сам бох велел делать мультитредовость smile.gif
SM
Цитата(GetSmart @ Nov 25 2009, 01:31) *
Я как раз примерно 3 года назад свою "тредопереключалку" ваял.

А я где-то в 90-х, на Atmega103, когда других атмег еще не было вообще. Зачем - сам сейчас не понимаю, молодой наверное был, хотелось "крутоты". Просто чтобы сделать. Однако работала она даже в серийном приборе, 2-х канальная прослушивалка телефонных линий.
XVR
Есть очень простой признак - если в вашем проекте у вас возник вопрос 'А какие выгоды дает применение ОС, и не надо ли мне ее тут применить' - то ОС вам (в этом проекте) не нужна smile.gif
_Pasha
Если есть достаточно стабильная и довольно сложная железяка, то рано или поздно все равно появится здоровое желание юзать ось.
По поводу тредопереключалки - в последнее время ограничился protothread-ами или даже выжимками оттуда.
zltigo
Цитата(XVR @ Nov 26 2009, 11:26) *
Если в вашем проекте у вас возник вопрос 'А какие выгоды дает применение ОС, и не надо ли мне ее тут применить' - то ОС вам (в этом проекте) не нужна smile.gif

А, если у Вас возник вопрос "А какой вкус имеет суп их черепахи, не попробовать-ли" - то Вам этот суп не нужен - кушайте солянку.
mrKirill
Цитата(XVR @ Nov 26 2009, 13:26) *
Есть очень простой признак - если в вашем проекте у вас возник вопрос 'А какие выгоды дает применение ОС, и не надо ли мне ее тут применить' - то ОС вам (в этом проекте) не нужна smile.gif

Этот "признак" может появиться и от недостаточности информации по данному вопросу, потому он явно не решающий.
XVR
Цитата(mrKirill @ Nov 27 2009, 08:07) *
Этот "признак" может появиться и от недостаточности информации по данному вопросу, потому он явно не решающий.
Отнюдь. Если ваш проект замечательно живет без ОС, логичный, простой и понятный, то искать себе дополнительных приключений на свою задницу явно не стоит.
Если же проект перерос свою степень сложности и уже трудно управляем, либо с самого начала было понятно, что просто и ясно его (без ОС) не сделать, тогда вопрос будет стоять по другому - не 'что мне даст применение ОС', а 'караул! Нужна ОС или я уже не знаю что' - вот тогда она действительно нужна.

Любая ОС требует некоторого порога вхождения, и для проекта типа 'моргание LEDом' он будет больше, чем сам проект.

Конечно, для общего развития стоит знать, что такое ОС. Хотя бы для того, что бы вопрос 'караул! Нужна ОС или я уже не знаю что' не появился слишком поздно rolleyes.gif
XVR
Цитата(zltigo @ Nov 26 2009, 11:59) *
А, если у Вас возник вопрос "А какой вкус имеет суп их черепахи, не попробовать-ли" - то Вам этот суп не нужен - кушайте солянку.
Угу, я тут забежал домой на 5 минут в обеденный перерыв - солянки похлебать, а мне говорят - топай в ресторан, черепаховый суп есть! А то так и помрешь, не отведав черепаховый суп!

Вот в отпуск пойду, поселюсь в ресторане, и не уйду, пока все их меню не перепробую rolleyes.gif
zltigo
Цитата(XVR @ Nov 27 2009, 12:01) *
Вот в отпуск пойду, поселюсь в ресторане, и не уйду, пока все их меню не перепробую rolleyes.gif

Тогда жду Ваших "советов" по использованию Операционных Систем , после возвращения из "отпуска" smile.gif
Serhiy_UA
Цитата(XVR @ Nov 27 2009, 09:37) *
Конечно, для общего развития стоит знать, что такое ОС....

Хорошо бы ссылку, где все было бы ясно и понятно про ОС.

Писал многозадачные программы к MCS196, MegaAVR, Silabs, NiosII, но все без ОС. До десятка независимых процессов + UART, Ethernet, LCD.
Покупать ОС дорого, а осваивать хлопотно. Может, удастся создать простую ОС, лучше своего переключателя задач....
MrYuran
Цитата(Serhiy_UA @ Nov 27 2009, 13:04) *
Может, удастся создать простую ОС, лучше своего переключателя задач....

Да их и так насоздовано до икса...
осталось только выбрать.
Можно начинать с простых, типа jacOs или широко известной в узких кругах scmRTOS
Главное преимущество - унифицированный подход. Можно таскать задачи из проекта в проект, не заботясь о "нюансах"
sergeeff
Думается, что документация на scmRTOS, написанная автором просто, понятно и с большим юмором, прояснит любому, что такое RTOS и с чем ее "едят"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.