|
RTOS OSA, кооперативная ОС для AVR/PIC/STM8 |
|
|
|
Feb 22 2009, 16:11
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
В свободное время написал небольшую статью по использованию ОСРВ OSA: http://wiki.pic24.ru/doku.php/osa/articles/rtos_usageкопия здесь: http://picosa.narod.ru/Manual/htm/rtos_usage.htmlВ этой статье: - приведены предпосылки к использованию RTOS в своих проектах. - даны общие рекомендации по RTOS; - описаны часто совершаемые ошибки; - даны ответы на часто задаваемые вопросы по OSA; - приведены советы по оптимизации при использовании OSA. Надеюсь, кому-то статья окажется полезной. С уважением, Виктор.
|
|
|
|
|
Feb 22 2009, 21:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата Во-вторых, ОСРВ обеспечивает параллельность выполнения всех задач Это только так кажется, что они выполняются параллельно. На одном процессоре они все и всегда выполняются последовательно. Цитата суперлуп Это просто чудесно, ей-ей !
|
|
|
|
|
Feb 22 2009, 21:55
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Цитата(sergeeff @ Feb 23 2009, 00:08)  Это только так кажется, что они выполняются параллельно. На одном процессоре они все и всегда выполняются последовательно. Это Вы мне?  Само собой, что речь идет о псевдопараллельности. Хотя, возможно, в тексте будет правильнее использовать именно этот термин.
|
|
|
|
|
Feb 23 2009, 18:50
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 30-07-08
Из: Украина Луганск
Пользователь №: 39 308

|
Цитата(sergeeff @ Feb 23 2009, 00:08)  Это только так кажется, что они выполняются параллельно. На одном процессоре они все и всегда выполняются последовательно. Последовательно - это когда одна задача выполнилась потом следующая? Если уж придираться как вы к словам. Процессор переключается между задачами распределяя ресурс. Для пользователя или другого устройства, процессы будут именно параллельные.
|
|
|
|
|
Feb 23 2009, 19:36
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

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

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Цитата(sergeeff @ Feb 23 2009, 22:36)  Я к словам не придираюсь. Если человек публикует материал об ОС, надо четко и однозначно излагать свои мысли, а не основываться на предположениях типа "ну вы же понимаете". Под многозадачностью на однопроцессорной системе всегда подразумевалось переключение между задачами. Это прописная истина, а не новейшая тема, которая требует пояснений. Когда в математике объясняют логарифм, пдразумевается, что обучаемый в курсе того, что такое возведение в степень. Так что Вы придираетесь к словам. Цитата А вы к тому же в одну кучу сваливаете задачи, процессы, пользователя и устройства. Да и я их в статье в одну кучу свалил. Материал изложен с определенного ракурса, учитывающего не только возможности контроллера, но и подготовленность прораммиста, и потребности пользователя. Формализованное (точное) описание ОСРВ и их свойств дано в других источниках. P.S. Я не против любой критики и в адрес статьи, и в адрес своей операционки. Пускай даже грубой - это дело критика. Но придирки по стилю изложения и предположения о потенциальной аудитории - оставьте для себя, как излагать и для кого - мое дело. А раз Вы радеете за точность и однозначность, то хотя бы пишите без ошибок (грамматических и ситаксических). С уважением, Виктор.
|
|
|
|
|
Feb 24 2009, 09:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Чудесная дискуссия по принципу "сам дурак". Но все же: Цитата Но даже здесь есть допуск, а именно - разделение ОСРВ на системы мягкого реального времени и жесткого реального времени; первые отличаются от вторых как раз тем, что они допускают задержку обработки события, в то время как для вторых такая задержка недопустима (и если она происходит, то это будет считаться системной ошибкой). Правильнее изложено, например, здесь: http://www.mka.ru/?p=40057. Задержка обработки события есть всегда. Только для систем жесткого реального времени она фиксирована определенным значением, а для систем мягкого реального времени - это время может варьироваться. Вообще реакции на критику тоже надо учиться. Считаю общий стиль изложения вашего материала на сайте http://picosa.narod.ru/Manual/htm/rtos_usage.html - жаргонным. Цитата Зачем контроллеру ось? Да на хрен не нужна! С наилучшими, пожеланиями, искренне Ваш testerminus
|
|
|
|
|
Feb 24 2009, 11:03
|

Знающий
   
Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274

|
Цитата(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)  Да на хрен не нужна! Ну тогда не думаю, что вы всерьез можете критиковать эту статью
|
|
|
|
|
Feb 24 2009, 13:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Я все это начал только потому, что автор использует тарабарский, а не русский язык. При этом использует неточные формулировки, вводящие читающих данный материал в заблуждение. Вы что как-то по-другому воспринимаете фразу:"первые отличаются от вторых как раз тем, что они допускают задержку обработки события, в то время как для вторых такая задержка недопустима ". Что значит "задержка недопустима"? Равна нулю? Заголовок "Зачем контроллеру ось?". Какая ось? Вагонная? Часовая? Земная? Цитата Несомненно. Только лучше так чем никак... От формализованного контента уже рябит в глазах, читать не хочется. Да почитайте документацию на scmRTOS, например. Там все ясно, понятно, по-русски и по-английски, изложено про RTOS. Суперлупер. Надо же такое сочинить!
|
|
|
|
|
Feb 24 2009, 14:13
|

Знающий
   
Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274

|
Цитата(sergeeff @ Feb 24 2009, 16:26)  При этом использует неточные формулировки, вводящие читающих данный материал в заблуждение. дык делайте автору замечания, и он их оперативно исправит. Пока ничего кроме придирок (наверное, все таки справедливых) к стилю я не увидел. Цитата(sergeeff @ Feb 24 2009, 16:26)  Вы что как-то по-другому воспринимаете фразу:"первые отличаются от вторых как раз тем, что они допускают задержку обработки события, в то время как для вторых такая задержка недопустима ". Что значит "задержка недопустима"? Равна нулю? Ну и что там допускает разночтения? Немного коряво, но смысл абсолютно верный. Цитата(sergeeff @ Feb 24 2009, 16:26)  Да почитайте документацию на scmRTOS, например. Там все ясно, понятно, по-русски и по-английски, изложено про RTOS. Да читал и не раз.
|
|
|
|
|
Feb 24 2009, 15:07
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Цитата(sergeeff @ Feb 24 2009, 16:26)  Вы что как-то по-другому воспринимаете фразу:"первые отличаются от вторых как раз тем, что они допускают задержку обработки события, в то время как для вторых такая задержка недопустима ". Что значит "задержка недопустима"? Равна нулю? Вы, вообще-то, выдрали фразу из контекста. Хотя, я согласен: моя формулировка может быть интерпретирована именно как "нулевая задержка". Цитата(sergeeff) Заголовок "Зачем контроллеру ось?". Какая ось? Вагонная? Часовая? Земная? В сети этот вопрос часто встречается именно в таком виде. Кто его задает, - уже не наше дело. И "ось", и "суперлуп" - часто встречающиеся в сети жаргонные слова. При выбранной стилистике статьи их употребление допустимо. Цитата(sergeeff) testerminus ... Суперлупер. Не хами.
Сообщение отредактировал testerplus - Feb 24 2009, 15:21
|
|
|
|
|
Feb 24 2009, 16:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Если автор позиционирует себя как писателя для "правильных пацанов" юзающих суперлуп" (см. http://telesys-ru.1gb.ru/wwwboards/mcontro...s/242862.shtml), то это его 100% право. Все это было бы смешно, если не было грустно. Бог с вами - пишите, что хотите.
|
|
|
|
|
Apr 13 2009, 00:35
|

Участник

Группа: Свой
Сообщений: 68
Регистрация: 11-12-08
Из: Республика Беларусь, г.Минск
Пользователь №: 42 380

|
Цитата(sergeeff @ Feb 24 2009, 19:18)  Если автор позиционирует себя как писателя для "правильных пацанов" юзающих суперлуп" (см. http://telesys-ru.1gb.ru/wwwboards/mcontro...s/242862.shtml), то это его 100% право. Все это было бы смешно, если не было грустно. Бог с вами - пишите, что хотите. sergeeffВо-первых ссылка не работает, во-вторых это уже даже не дискуссия и тема выходит за рамки топика. Если есть вопросы и темы "про пацанов" - то вам либо в БОБРУЙСК, либо в РОСТОВ. (или ИЗрАИЛЬ) Понимаю, что с предыдущего поста время прошло месяц с гаком, но просто неправильно говорить например о ошибках компилятора (которые, например, пока ещё не найдены), основываясь на переводе документации с английского на албанский и далее на китайский и русский. Анекдот! С уважением(или нет?) SergeeffMinusSergeeff=0
|
|
|
|
|
Mar 10 2010, 19:09
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Доброго времени суток! OSA портирована на AVR. OSA - кооперативная ОСРВ для микроконтроллеров PIC и AVR. Распространяется бесплатно с исходными текстами. Может оказаться полезной при написании программ для малоресурсных контроллеров, где вытесняющим ОСРВ будет тесно. ИсходникиДокументация Учебник С уважением, Виктор Тимофеев. P.S. Исходники OSA можно взять также здесь: http://picosa.narod.ru (Opera 10 не открывает pic24.ru)
|
|
|
|
|
Mar 12 2010, 02:21
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Версия 100312 - доработан внутренныий код для атомарного доступа к битовым системным переменным. Порт под AVR будет потихоньку оптимизироваться (он пока слишком медленный), и будут исправляться обнаруженные баги. Так что следите за обновлениями.
|
|
|
|
|
Mar 13 2010, 14:07
|
Группа: Участник
Сообщений: 4
Регистрация: 10-02-09
Пользователь №: 44 639

|
Запустил урок 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 ошибка продолжается
Сообщение отредактировал VasylYE - Mar 13 2010, 14:06
Прикрепленные файлы
os_pr2.rar ( 22.98 килобайт )
Кол-во скачиваний: 22
|
|
|
|
|
Mar 13 2010, 18:04
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Цитата(VasylYE @ Mar 13 2010, 17:07)  Запустил урок 2 из хелпа
Если в опциях компилятора включена оптимизация, то локальные переменные cTemp1 и cTemp2 удаляются, если отключена - вылетают предупреждения при симуляции и симуляция идет с ошибками проект в архиве WinAVR эти переменные, действительно, соптимизирует, т.к. с его точки зрения они не используются. Версию OSA для отключенной оптимизациии готовлю сейчас (в WinAVR'e нашел неприятный баг, и при включенной оптимизации работать в будущем будет, к сожалению, нельзя). Для проверки работы урока 2 объявите локальные переменные в задачах с квалификатором volatile, тогда он их не будет оптимизировать.
|
|
|
|
|
Mar 16 2010, 00:05
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Цитата(testerplus @ Mar 13 2010, 21:04)  (в WinAVR'e нашел неприятный баг, и при включенной оптимизации работать в будущем будет, к сожалению, нельзя). Подготовил описание ошибки компилятора WinAVR, из-за которой при использовании кооперативной ОС нужно отключать оптимизацию. Рекомендую обновить OSA (версия 100314).
|
|
|
|
|
Sep 24 2010, 13:59
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
OSA портирована на STM8 (ограничение: ROM <= 64K) для компилятора Cosmic. Исходники версии 101000. В учебник добавлен Урок 5, посвященный расширенному приоритетному режиму.
|
|
|
|
|
Oct 7 2010, 10:43
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
101007: Добавлена поддержка IAR и Raisonance для STM8 Ограничение: ROM <= 64K
|
|
|
|
|
Dec 8 2010, 10:54
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955

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

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Цитата(slabnoff @ Dec 8 2010, 14:54)  Руки дошли почитать статью... Не считайте придиркой, но все же не стоит создавать кашу в мозгах читателя: Все правильно, Вы не первый мне это говорите. Просто нет времени на переработку материала. Цитата(YAM) "Пердустановленные константы" - это круто.... sm.gif Спасибо, исправляю...
|
|
|
|
|
Dec 8 2010, 12:38
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955

|
Цитата(testerplus @ Dec 8 2010, 15:19)  Все правильно, Вы не первый мне это говорите. Просто нет времени на переработку материала. Ну тогда напишите дисклаймер в начале статьи. P.S. Прочитал еще "Как писать программы без ошибок" - ну очень статья понравилась - сам интуитивно к подобному пришел.
|
|
|
|
|
Dec 8 2010, 12:45
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471

|
Цитата(slabnoff @ Dec 8 2010, 16:38)  Ну тогда напишите дисклаймер в начале статьи. Да какой там дисклаймер... Лучше пока уберу этот абзац, его давно надо было переписать.
|
|
|
|
|
Oct 30 2014, 10:59
|
Группа: Новичок
Сообщений: 1
Регистрация: 30-10-14
Пользователь №: 83 424

|
Цитата(testerplus @ Dec 8 2010, 16:45)  Да какой там дисклаймер... Лучше пока уберу этот абзац, его давно надо было переписать. Добрый день!!! Пишу программу с использованием RTOS OSA на AtmelStudio6.2. Есть несколько задач. Одна из задач требует много времени для решения. Остальные нет. Мне нужно, чтоб она не тормозила выполнение остальных задач. Я пытаюсь ее решить с помощью статических или динамических таймеров,чтоб задавать время на выполнение этой задачи. Например 100 мсек. и пусть она решается еще дольше (мне не важно). Так ВОТ я не могу разобраться с таймерами. Хелп читал, по инету лазил, а результата нет.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|