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

 
 
> Многозадачность на 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

Сообщений в этой теме
- 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
|- - µµC   Цитата(osnwt @ Jul 15 2006, 23:05) В свое...   Jul 15 2006, 20:10
- - 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 Текстовая версия Сейчас: 19th July 2025 - 15:06
Рейтинг@Mail.ru


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