Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: RTOS OSA
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
testerplus
В свободное время написал небольшую статью по использованию ОСРВ OSA:
http://wiki.pic24.ru/doku.php/osa/articles/rtos_usage

копия здесь:
http://picosa.narod.ru/Manual/htm/rtos_usage.html

В этой статье:
- приведены предпосылки к использованию RTOS в своих проектах.
- даны общие рекомендации по RTOS;
- описаны часто совершаемые ошибки;
- даны ответы на часто задаваемые вопросы по OSA;
- приведены советы по оптимизации при использовании OSA.

Надеюсь, кому-то статья окажется полезной.
С уважением, Виктор.
sergeeff
Цитата
Во-вторых, ОСРВ обеспечивает параллельность выполнения всех задач


Это только так кажется, что они выполняются параллельно. На одном процессоре они все и всегда выполняются последовательно.

Цитата
суперлуп


Это просто чудесно, ей-ей !
testerplus
Цитата(sergeeff @ Feb 23 2009, 00:08) *
Это только так кажется, что они выполняются параллельно. На одном процессоре они все и всегда выполняются последовательно.


Это Вы мне? smile.gif Само собой, что речь идет о псевдопараллельности. Хотя, возможно, в тексте будет правильнее использовать именно этот термин.
sergeeff
Вам дорогой, вам. Вы же про это написали.
PIC_Embedder
Цитата(sergeeff @ Feb 23 2009, 00:08) *
Это только так кажется, что они выполняются параллельно. На одном процессоре они все и всегда выполняются последовательно.

Последовательно - это когда одна задача выполнилась потом следующая? Если уж придираться как вы к словам.
Процессор переключается между задачами распределяя ресурс. Для пользователя или другого устройства, процессы будут именно параллельные.
sergeeff
Цитата(PIC_Embedder @ Feb 23 2009, 22:50) *
Последовательно - это когда одна задача выполнилась потом следующая? Если уж придираться как вы к словам.
Процессор переключается между задачами распределяя ресурс. Для пользователя или другого устройства, процессы будут именно параллельные.


Я к словам не придираюсь. Если человек публикует материал об ОС, надо четко и однозначно излагать свои мысли, а не основываться на предположениях типа "ну вы же понимаете".

А вы к тому же в одну кучу сваливаете задачи, процессы, пользователя и устройства. В тоже время, совершенно четко формулируя: "Процессор переключается между задачами распределяя ресурс". Вот на этом-то вся игра и построена - на переключении между задачами, если ресурса процессора на это достаточно. Таким образом, в каждый конкретный момент времени выполняется одна задача, которая может прерываться. Ничего "параллельно" на однопроцессорной структуре не происходит.
testerplus
Цитата(sergeeff @ Feb 23 2009, 22:36) *
Я к словам не придираюсь. Если человек публикует материал об ОС, надо четко и однозначно излагать свои мысли, а не основываться на предположениях типа "ну вы же понимаете".


Под многозадачностью на однопроцессорной системе всегда подразумевалось переключение между задачами. Это прописная истина, а не новейшая тема, которая требует пояснений. Когда в математике объясняют логарифм, пдразумевается, что обучаемый в курсе того, что такое возведение в степень. Так что Вы придираетесь к словам.

Цитата
А вы к тому же в одну кучу сваливаете задачи, процессы, пользователя и устройства.


Да и я их в статье в одну кучу свалил. Материал изложен с определенного ракурса, учитывающего не только возможности контроллера, но и подготовленность прораммиста, и потребности пользователя. Формализованное (точное) описание ОСРВ и их свойств дано в других источниках.

P.S. Я не против любой критики и в адрес статьи, и в адрес своей операционки. Пускай даже грубой - это дело критика. Но придирки по стилю изложения и предположения о потенциальной аудитории - оставьте для себя, как излагать и для кого - мое дело. А раз Вы радеете за точность и однозначность, то хотя бы пишите без ошибок (грамматических и ситаксических).

С уважением, Виктор.
sergeeff
Чудесная дискуссия по принципу "сам дурак".

Но все же:
Цитата
Но даже здесь есть допуск, а именно - разделение ОСРВ на системы мягкого реального времени и жесткого реального времени; первые отличаются от вторых как раз тем, что они допускают задержку обработки события, в то время как для вторых такая задержка недопустима (и если она происходит, то это будет считаться системной ошибкой).


Правильнее изложено, например, здесь: http://www.mka.ru/?p=40057.

Задержка обработки события есть всегда. Только для систем жесткого реального времени она фиксирована определенным значением, а для систем мягкого реального времени - это время может варьироваться.

Вообще реакции на критику тоже надо учиться. Считаю общий стиль изложения вашего материала на сайте http://picosa.narod.ru/Manual/htm/rtos_usage.html - жаргонным.

Цитата
Зачем контроллеру ось?


Да на хрен не нужна!

С наилучшими, пожеланиями, искренне Ваш testerminus
Alex B._
Цитата(sergeeff @ Feb 24 2009, 12:29) *
Чудесная дискуссия по принципу "сам дурак".

если ничего не путаю, вы первый начали в таком тоне

Цитата(sergeeff @ Feb 24 2009, 12:29) *
Задержка обработки события есть всегда. Только для систем жесткого реального времени она фиксирована определенным значением, а для систем мягкого реального времени - это время может варьироваться.

Нет, это не так. Детерминированное время обработки события это что-то из разряда фантастики. На практике всегда есть какой-то джиттер. В статье написано все правильно - системы мягкого реального времени допускают превышение лимита времени обработки, но это не является критической ошибкой.
http://en.wikipedia.org/wiki/Real-time_com...al-time_systems

Цитата(sergeeff @ Feb 24 2009, 12:29) *
Считаю общий стиль изложения вашего материала на сайте http://picosa.narod.ru/Manual/htm/rtos_usage.html - жаргонным.

Несомненно. Только лучше так чем никак... От формализованного контента уже рябит в глазах, читать не хочется. Почитайте embedded.com к примеру - там довольно много статей с жаргонным стилем, которые читаются в разы легче. К тому же предмет обсуждения рассчитан на определенную целевую аудиторию, не надо об этом забывать

Цитата(sergeeff @ Feb 24 2009, 12:29) *
Да на хрен не нужна!

Ну тогда не думаю, что вы всерьез можете критиковать эту статью
sergeeff
Я все это начал только потому, что автор использует тарабарский, а не русский язык. При этом использует неточные формулировки, вводящие читающих данный материал в заблуждение.

Вы что как-то по-другому воспринимаете фразу:"первые отличаются от вторых как раз тем, что они допускают задержку обработки события, в то время как для вторых такая задержка недопустима ". Что значит "задержка недопустима"? Равна нулю?

Заголовок "Зачем контроллеру ось?". Какая ось? Вагонная? Часовая? Земная?

Цитата
Несомненно. Только лучше так чем никак... От формализованного контента уже рябит в глазах, читать не хочется.


Да почитайте документацию на scmRTOS, например. Там все ясно, понятно, по-русски и по-английски, изложено про RTOS.

Суперлупер. Надо же такое сочинить!
Alex B._
Цитата(sergeeff @ Feb 24 2009, 16:26) *
При этом использует неточные формулировки, вводящие читающих данный материал в заблуждение.

дык делайте автору замечания, и он их оперативно исправит. Пока ничего кроме придирок (наверное, все таки справедливых) к стилю я не увидел.

Цитата(sergeeff @ Feb 24 2009, 16:26) *
Вы что как-то по-другому воспринимаете фразу:"первые отличаются от вторых как раз тем, что они допускают задержку обработки события, в то время как для вторых такая задержка недопустима ". Что значит "задержка недопустима"? Равна нулю?

Ну и что там допускает разночтения? Немного коряво, но смысл абсолютно верный.

Цитата(sergeeff @ Feb 24 2009, 16:26) *
Да почитайте документацию на scmRTOS, например. Там все ясно, понятно, по-русски и по-английски, изложено про RTOS.

Да читал и не раз.
testerplus
Цитата(sergeeff @ Feb 24 2009, 16:26) *
Вы что как-то по-другому воспринимаете фразу:"первые отличаются от вторых как раз тем, что они допускают задержку обработки события, в то время как для вторых такая задержка недопустима ". Что значит "задержка недопустима"? Равна нулю?

Вы, вообще-то, выдрали фразу из контекста. Хотя, я согласен: моя формулировка может быть интерпретирована именно как "нулевая задержка".

Цитата(sergeeff)
Заголовок "Зачем контроллеру ось?". Какая ось? Вагонная? Часовая? Земная?

В сети этот вопрос часто встречается именно в таком виде. Кто его задает, - уже не наше дело.
И "ось", и "суперлуп" - часто встречающиеся в сети жаргонные слова. При выбранной стилистике статьи их употребление допустимо.

Цитата(sergeeff)
testerminus
...
Суперлупер.

Не хами.
sergeeff
Если автор позиционирует себя как писателя для "правильных пацанов" юзающих суперлуп" (см. http://telesys-ru.1gb.ru/wwwboards/mcontro...s/242862.shtml), то это его 100% право.

Все это было бы смешно, если не было грустно.

Бог с вами - пишите, что хотите.
DenisIV
Цитата(sergeeff @ Feb 24 2009, 19:18) *
Если автор позиционирует себя как писателя для "правильных пацанов" юзающих суперлуп" (см. http://telesys-ru.1gb.ru/wwwboards/mcontro...s/242862.shtml), то это его 100% право.

Все это было бы смешно, если не было грустно.

Бог с вами - пишите, что хотите.

sergeeff
Во-первых ссылка не работает, во-вторых это уже даже не дискуссия и тема выходит за рамки топика.
Если есть вопросы и темы "про пацанов" - то вам либо в БОБРУЙСК, либо в РОСТОВ. (или ИЗрАИЛЬ)
Понимаю, что с предыдущего поста время прошло месяц с гаком, но просто неправильно говорить например о ошибках компилятора
(которые, например, пока ещё не найдены), основываясь на переводе документации с английского на албанский и далее на китайский и русский.
Анекдот!
С уважением(или нет?) SergeeffMinusSergeeff=0
testerplus
http://wiki.pic24.ru/doku.php/osa/tutorial/intro

Учебник поможет начать работать с ОСРВ OSA, понять принципы работы программы и принципы взаимодействия задач. Сейчас готовы 4 урока, потихоньку буду добавлять новые.
DL36
Спасибо!!!!!
testerplus
Доброго времени суток!

OSA портирована на AVR. OSA - кооперативная ОСРВ для микроконтроллеров PIC и AVR. Распространяется бесплатно с исходными текстами. Может оказаться полезной при написании программ для малоресурсных контроллеров, где вытесняющим ОСРВ будет тесно.

Исходники
Документация
Учебник

С уважением, Виктор Тимофеев.

P.S. Исходники OSA можно взять также здесь: http://picosa.narod.ru (Opera 10 не открывает pic24.ru)
oll
спасибо - попробуем и на AVR
DL36
Спасибо!
HHIMERA
Спасибо, Виктор!!!
testerplus
Версия 100312 - доработан внутренныий код для атомарного доступа к битовым системным переменным.

Порт под AVR будет потихоньку оптимизироваться (он пока слишком медленный), и будут исправляться обнаруженные баги. Так что следите за обновлениями.
VasylYE
Запустил урок 2 из хелпа

Если в опциях компилятора включена оптимизация, то локальные переменные cTemp1 и cTemp2 удаляются, если отключена - вылетают предупреждения при симуляции и симуляция идет с ошибками
проект в архиве

Цитата
Loaded plugin STK500
Loaded plugin AVR GCC
Loaded partfile: C:\Program Files\Atmel\AVR Tools\PartDescriptionFiles\ATmega16.xml
gcc plug-in: Output directory D:\work\AVR\os_pr2\default\ does not exist
gcc plug-in: Created directory D:\work\AVR\os_pr2\default\
AVR Simulator: Please wait while configuring simulator...
AVR Simulator: ATmega16 Configured OK
Loaded objectfile: D:\work\AVR\os_pr2\default\os_pr2.elf
Loaded objectfile: D:\work\AVR\os_pr2\default\os_pr2.elf
Loaded objectfile: D:\work\AVR\os_pr2\default\os_pr2.elf
AVR Simulator: Invalid opcode 0xffff at address 0x005b04
Loaded objectfile: D:\work\AVR\os_pr2\default\os_pr2.elf


сам вылет проходит здесь (дизассемблер), далее програмный счетчик обнуляется
Код
@0000011C: SCHED_END
---- d:\work\AVR\os_pr2\default/d:\work\AVR\os_pr2\..\..\osa/port\osa_winavr.c --------------------
36: File not found
+0000011C:   93DF        PUSH      R29            Push register on stack
+0000011D:   93CF        PUSH      R28            Push register on stack
+0000011E:   B7CD        IN        R28,0x3D       In from I/O location
+0000011F:   B7DE        IN        R29,0x3E       In from I/O location

*********

40: File not found
+00000135:   91CF        POP       R28            Pop register from stack
+00000136:   91DF        POP       R29            Pop register from stack
+00000137:   9508        RET     Subroutine return     <-------------- здесь
@00000138: OS_SchedRetPoint
69: File not found


даже после объявления локальных переменных как static ошибка продолжается
testerplus
Цитата(VasylYE @ Mar 13 2010, 17:07) *
Запустил урок 2 из хелпа

Если в опциях компилятора включена оптимизация, то локальные переменные cTemp1 и cTemp2 удаляются, если отключена - вылетают предупреждения при симуляции и симуляция идет с ошибками
проект в архиве
WinAVR эти переменные, действительно, соптимизирует, т.к. с его точки зрения они не используются. Версию OSA для отключенной оптимизациии готовлю сейчас (в WinAVR'e нашел неприятный баг, и при включенной оптимизации работать в будущем будет, к сожалению, нельзя).

Для проверки работы урока 2 объявите локальные переменные в задачах с квалификатором volatile, тогда он их не будет оптимизировать.
testerplus
Цитата(testerplus @ Mar 13 2010, 21:04) *
(в WinAVR'e нашел неприятный баг, и при включенной оптимизации работать в будущем будет, к сожалению, нельзя).


Подготовил описание ошибки компилятора WinAVR, из-за которой при использовании кооперативной ОС нужно отключать оптимизацию. Рекомендую обновить OSA (версия 100314).
testerplus
Нашел вариант решения проблемы. Теперь на WinAVR+OSA можно использовать любой уровень оптимизации (если еще какая гадость не вылезет)

Версия 100531
testerplus
OSA портирована на STM8 (ограничение: ROM <= 64K) для компилятора Cosmic.

Исходники версии 101000.
В учебник добавлен Урок 5, посвященный расширенному приоритетному режиму.

testerplus
101007: Добавлена поддержка IAR и Raisonance для STM8
Ограничение: ROM <= 64K

slabnoff
Руки дошли почитать статью...
Не считайте придиркой, но все же не стоит создавать кашу в мозгах читателя:
1) Термин "реальное время" и производные от него по большому счету нормально применимы к конечным системам, а не к средствам из которых их делают (в том числе ОС). Вообще нормальное определение реального времени: "система (! не операционная система, а конечный продукт, в котором может использоваться ОСРВ, а может вообще быть суперлуп и даже... вообще не быть процессора и электроники) является системой реального времени, если времена реакций на события всегда меньше либо равны заданным". Далее если мягкость/жесткость вводить - то данное определение подходит для "жестких" систем, а для "мягких" надо вставить в конце "...в большинстве случаев".
2) Тип планирования (вытесняющее/кооператив) в общем-то ОТНОШЕНИЯ К ЖЕСТКОМУ/МЯГКОМУ реальному времени не имеет. По большому счету если вводить критерий "жесткости" применительно к ОС, то тогда с этой позиции - ОС является "жесткой" ОСРВ если задержки привносимые ОС всегда известны - т.е. можно использовать как инструмент для "жесткой" системы РВ, аналогично "мягкой" ОСРВ - если известно, что в большинстве случаев привносимые ОС задержки не превышают некоторых известных значений. А то, как воспользуется дисциплиной планирования программист - его дело и ответственность - я отлично делал на суперлупе и кооперативе системы "жесткого" реального времени. Какая бы крутейшая ОСРВ не использовалась, всегда можно реализовать программу, так что свойства реального времени в системе не будут обеспечены.
YAM
"Пердустановленные константы" - это круто.... sm.gif
В chm файле доки....
testerplus
Цитата(slabnoff @ Dec 8 2010, 14:54) *
Руки дошли почитать статью...
Не считайте придиркой, но все же не стоит создавать кашу в мозгах читателя:

Все правильно, Вы не первый мне это говорите. Просто нет времени на переработку материала.

Цитата(YAM)
"Пердустановленные константы" - это круто.... sm.gif

Спасибо, исправляю...
slabnoff
Цитата(testerplus @ Dec 8 2010, 15:19) *
Все правильно, Вы не первый мне это говорите. Просто нет времени на переработку материала.

Ну тогда напишите дисклаймер в начале статьи.

P.S. Прочитал еще "Как писать программы без ошибок" - ну очень статья понравилась - сам интуитивно к подобному пришел.
testerplus
Цитата(slabnoff @ Dec 8 2010, 16:38) *
Ну тогда напишите дисклаймер в начале статьи.

Да какой там дисклаймер... Лучше пока уберу этот абзац, его давно надо было переписать.
ua3rad
Цитата(testerplus @ Dec 8 2010, 16:45) *
Да какой там дисклаймер... Лучше пока уберу этот абзац, его давно надо было переписать.

Добрый день!!! Пишу программу с использованием RTOS OSA на AtmelStudio6.2. Есть несколько задач. Одна из задач требует много времени для решения. Остальные нет. Мне нужно, чтоб она не тормозила выполнение остальных задач.
Я пытаюсь ее решить с помощью статических или динамических таймеров,чтоб задавать время на выполнение этой задачи. Например 100 мсек. и пусть она решается еще дольше (мне не важно). Так ВОТ я не могу разобраться с таймерами. Хелп читал, по инету лазил, а результата нет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.