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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Многозадачность на 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
defunct
сообщение Jul 3 2006, 00:07
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Вполне возможно. Есть два, пути:

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

Второй путь - организовать потоки таким образом, чтобы они сами передавали управление другим потокам. Тут путей реализации масса:
1. аналогично механизму WaitFor()/Sleep() в Windows.
2. короткие функции заведомо быстро выполняющиеся (с последовательным вызовом в основном цикле программы).
3. через простенький планировщик (который выполняется в контексте основного потока) и будет запускать периодические задачи через заданный интервал времени. Задачи не должны быть бесконечными, при завершении действия обязательно должны возвращать управление планировщику (механизми icall - ret).
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 3 2006, 03:34
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



http://www.avrfreaks.net/index.php?module=...&item_type=tool

http://www.circuitcellar.com/AVR2004/wabst...650abstract.pdf


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 3 2006, 12:55
Сообщение #4


Шаман
******

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



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


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

Группа: Свой
Сообщений: 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 3 2006, 17:18
Сообщение #6


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

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



Большое спасибо за инфу smile.gif


--------------------
Go to the top of the page
 
+Quote Post
pitt
сообщение Jul 3 2006, 20:11
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



electronix.ru


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 4 2006, 03:41
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Может это поможет.Я , правда , не вникал.
Прикрепленные файлы
Прикрепленный файл  MTHREADS.txt ( 9.08 килобайт ) Кол-во скачиваний: 183
 
Go to the top of the page
 
+Quote Post
vesago
сообщение Jul 4 2006, 06:53
Сообщение #9


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Как вариант - построение кода на основе конечных автоматов. Может не так удобно как оси, но зато меньше ресурсов надо.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jul 5 2006, 18:27
Сообщение #10


фанат 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
Сообщение #11


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

Группа: Свой
Сообщений: 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
Сообщение #12


фанат 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
Сообщение #13


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

Группа: Свой
Сообщений: 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
Сообщение #14


фанат 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
Сообщение #15


фанат 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
pitt
сообщение Jul 15 2006, 14:01
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



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

Никто ни у кого!
Таких систвм множество и все они друга на друга похожи.


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
osnwt
сообщение Jul 15 2006, 19:05
Сообщение #17


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

Группа: Свой
Сообщений: 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
Сообщение #18


Участник
*

Группа: Новичок
Сообщений: 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

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

 


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


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