реклама на сайте
подробности

 
 
> Многозадачность на AVR, Возможно ли такое?
AVR
сообщение Jul 2 2006, 21:55
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Возможно ли как-то реализовать в AVRах переключение с одного потока команд на другие, которые выполняются "параллельно"?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Jul 3 2006, 12:55
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Или возьмите готовую scmRTOS от нашего уважаемого dxp и не мучайтесь долго.
Go to the top of the page
 
+Quote Post
osnwt
сообщение Jul 3 2006, 15:11
Сообщение #3


Частый гость
**

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



Цитата(IgorKossak @ Jul 3 2006, 15:55) *
Или возьмите готовую scmRTOS от нашего уважаемого dxp и не мучайтесь долго.

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

Как альтернатива, jacos - при определенном внимании к программированию задач позволяет очень эффективно реализовать псевдопараллельное исполнение независимых задач и обмен данными между ними. Сам в свое время попробовал - очень понравилось. Очень подробное описание (на русском языке) с множеством примеров. Хороша именно отличной оптимизацией под ряд контроллеров (в т.ч. AVR, PIC, MSP430).
Go to the top of the page
 
+Quote Post
AVR
сообщение Jul 5 2006, 18:27
Сообщение #4


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(osnwt @ Jul 3 2006, 19:11) *
Как альтернатива, jacos - при определенном внимании к программированию задач позволяет очень эффективно реализовать псевдопараллельное исполнение независимых задач и обмен данными между ними. Сам в свое время попробовал - очень понравилось. Очень подробное описание (на русском языке) с множеством примеров. Хороша именно отличной оптимизацией под ряд контроллеров (в т.ч. AVR, PIC, MSP430).

Спасибо за ссылку, очень хорошая штука, примеры хорошие - разобрался в первый же час, ресурсов мало (вроде) кушает.


--------------------
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 6 2006, 03:01
Сообщение #5


Познающий...
******

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



Цитата(AVR @ Jul 6 2006, 03:27) *
Цитата(osnwt @ Jul 3 2006, 19:11) *

Как альтернатива, jacos - при определенном внимании к программированию задач позволяет очень эффективно реализовать псевдопараллельное исполнение независимых задач и обмен данными между ними. Сам в свое время попробовал - очень понравилось. Очень подробное описание (на русском языке) с множеством примеров. Хороша именно отличной оптимизацией под ряд контроллеров (в т.ч. AVR, PIC, MSP430).

Спасибо за ссылку, очень хорошая штука, примеры хорошие - разобрался в первый же час, ресурсов мало (вроде) кушает.

Если есть вермя и желание, не расскажете ли подробнее обо всем?) Примеры задач, запущенных под осью; траблы с программированием, сборкой проекта и прочее? Я думаю многим было бы интересно.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jul 6 2006, 20:35
Сообщение #6


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(haker_fox @ Jul 6 2006, 07:01) *
Цитата(AVR @ Jul 6 2006, 03:27) *

Спасибо за ссылку, очень хорошая штука, примеры хорошие - разобрался в первый же час, ресурсов мало (вроде) кушает.

Если есть вермя и желание, не расскажете ли подробнее обо всем?) Примеры задач, запущенных под осью; траблы с программированием, сборкой проекта и прочее? Я думаю многим было бы интересно.

В принципе тут всё подробно расписано: http://jacos.narod.ru/load/jacos_v1070.zip
Тут и очень хорошее подробное описание, и примеры прилагаются. А для сборки проекта потреюутся библиотеки (под IAR): http://jacos.narod.ru/load/libr_v1070_avr_iar.zip
Тут куча библиотек, но для проекта потребуется только одна, а как выбрать нужную библиотеку расписано в справке в разделе "библиотеки".
А из траблов программирования, то например что первое попалось на глаза это если компилировать с поддержкой функций-сервисов ОС в обработчиках прерываний, то программа почему-то вешается сразу. Также если разрешать работу USARTа и его прерывания в данном потоке, то в нём почему-то невозможно использовать функции OS_Stop_Task и OS_Delay, только OS_Cooperate работает, иначе программа вешается...


--------------------
Go to the top of the page
 
+Quote Post
osnwt
сообщение Jul 6 2006, 21:30
Сообщение #7


Частый гость
**

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



Цитата(AVR @ Jul 6 2006, 23:35) *
А из траблов программирования, то например что первое попалось на глаза это если компилировать с поддержкой функций-сервисов ОС в обработчиках прерываний, то программа почему-то вешается сразу.

Напомню, что для поддержки сервисов в прерываниях нужно:
- использовать соответствующую версию библиотеки (с буквой i);
- разрешить нужные сервисы в явном виде в файле конфигурации;
- использовать в прерываниях версии сервисов, для того предназначенных (с окончанием на I).

Иначе будет что угодно, в том числе, и зависы.

Вообще, если можно обойтись в прерывании без вызова сервисов (или вообще других функций, особенно определенных в других файлах), то лучше так и делать. Иначе мы получим сохранение множества регистров (так как в общем случае компилятор имеет право использовать половину регистров в других функциях). В моей ситуации, когда мне было важно отрабатывать относительно точное время для одной из задач по прерыванию таймера, я в прерывании просто взводил битовый флаг в регистровой переменной, а снаружи его проверял (в основном цикле планировщика) и уже оттуда вызывал сервис OS. Получалось, что я, практически, из прерывания стартовал внешнюю задачу (которая получала при этом наивысший приоритет по определению из документации), и ничего не терял (так как у нас допустима погрешность в пределах кванта времени - раньше мы все равно не можем гарантировать вызов задачи.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jul 8 2006, 05:26
Сообщение #8


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(osnwt @ Jul 7 2006, 01:30) *
Напомню, что для поддержки сервисов в прерываниях нужно:
- использовать соответствующую версию библиотеки (с буквой i);
- разрешить нужные сервисы в явном виде в файле конфигурации;
- использовать в прерываниях версии сервисов, для того предназначенных (с окончанием на I).
Иначе будет что угодно, в том числе, и зависы.

Этого я не учел, потому и зависало... Надо переустановить ruki.sys


--------------------
Go to the top of the page
 
+Quote Post
AVR
сообщение Jul 15 2006, 13:26
Сообщение #9


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Нашел внизу страницы ссылку http://www.pumpkininc.com/
Просмотрел описание предлагаемой там ОС и нашел разительное сходство с jacOS. Только стоит там она $750-1250, а jacOS бесплатно. Отсюда вопрос - кто с кого слизал? biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
osnwt
сообщение Jul 15 2006, 19:05
Сообщение #10


Частый гость
**

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



Цитата(AVR @ Jul 15 2006, 16:26) *
Только стоит там она $750-1250, а jacOS бесплатно. Отсюда вопрос - кто с кого слизал? biggrin.gif

В свое время на телесистемах обсуждался этот вопрос. Автор jacos и не скрывал, что начинал он с этой системы. Но после этого от нее в коде ничего не осталось, код стал оптимизирован намного больше, а похожими остались только сервисы (что не слишком удивительно, так как придумать тут что-то уже довольно сложно).
Go to the top of the page
 
+Quote Post
µµC
сообщение Jul 15 2006, 20:10
Сообщение #11


Участник
*

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



Цитата(osnwt @ Jul 15 2006, 23:05) *
В свое время на телесистемах обсуждался этот вопрос. Автор jacos и не скрывал, что начинал он с этой системы.


Это?
http://www.telesys.ru/wwwboards/mcontrol/7...ges/98942.shtml

Отправлено A.S. 04 сентября 2004 г. 15:07
"Могу просветить историю jacOS."
"jacOS это переделанный jaRTOS. jaRTOSом пользовался стародавние времена на примитивной советской электронике MC1402. Сначала под DOS, потом ПЗУ. Спецом для меня все писалось моим другом aka Perec. А под PIC я пытался использовать глюкодром под названием Salvo. Был большой проект и ближе концу выяснилось, что Salvo работать не будет. Пока я ковырялся с Salvo, за два месяца jaRTOS был переделан в jacOS. Самой большой потерей стали двусвязанные списки, динамическое создание задач, событий и таймеров. Самым большим приобритением стали таймауты и бинарные семафоры (влияние Salvo). Тем что получилось я очень доволен, портировано на все, что использую. На злопыхателей-импотентов Perecу начхать, проект то некоммерческий. Мне тем более начхать. Есть несколько человек, которые пользуются, обмениваемся наработками, иногда пиво вместе пьем."


Влияние salvo на jacos не отрицается. smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AVR   Многозадачность на AVR   Jul 2 2006, 21:55
- - defunct   Вполне возможно. Есть два, пути: Первый путь наиб...   Jul 3 2006, 00:07
- - beer_warrior   http://www.avrfreaks.net/index.php?module=......   Jul 3 2006, 03:34
|- - pitt   Цитата(AVR @ Jul 15 2006, 09:26) Нашел вн...   Jul 15 2006, 14:01
- - AVR   Большое спасибо за инфу   Jul 3 2006, 17:18
- - pitt   electronix.ru   Jul 3 2006, 20:11
- - muravei   Может это поможет.Я , правда , не вникал.   Jul 4 2006, 03:41
- - vesago   Как вариант - построение кода на основе конечных а...   Jul 4 2006, 06:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 19:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01475 секунд с 7
ELECTRONIX ©2004-2016