Библиотека поддержки многопоточности для ATmega
Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:51:27, всего редактировалось 1 раз.
Клоподавер упрыгхт
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18675
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Библиотека поддержки многопоточности для ATmega
чем OSA не устраивает?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:51:45, всего редактировалось 1 раз.
Клоподавер упрыгхт
Re: Библиотека поддержки многопоточности для ATmega
мне когда-то удалось запустить на AVR picoOS и FreeRTOS ради баловства. Сейчас уже немало ОСРВ на AVR портировано.
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:52:00, всего редактировалось 1 раз.
Клоподавер упрыгхт
- Реклама
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Библиотека поддержки многопоточности для ATmega
Вытеснялка тут http://scmrtos.sourceforge.net/ScmRTOS (С++)
Но вытеснялка сразу жрёт больше памяти на отдельные стеки, так что думайте.
Но вытеснялка сразу жрёт больше памяти на отдельные стеки, так что думайте.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:52:17, всего редактировалось 1 раз.
Клоподавер упрыгхт
Re: Библиотека поддержки многопоточности для ATmega
Эта же идея используется в моем фреймворке. Называть его операционной системой язык не поворачивается. Но все принципы переключения заимствованны от опреационки. Если кто желает присоединиться - милости прошу.
главное отличие от многих реализаций - в ядре сообщение может быть любым.
Второй принцип - при добавлении новых модуле обработки, достаточно их подключить только makefile. они должны сами встроиться в систему.
подробнее (или наоборот, вкраце) описано тут.
PS: я экспериментировал с мегой8. думаю при большей памяти проблем не будет. вот с тини проблема - 52 байт выделится только на стеки.
главное отличие от многих реализаций - в ядре сообщение может быть любым.
Второй принцип - при добавлении новых модуле обработки, достаточно их подключить только makefile. они должны сами встроиться в систему.
подробнее (или наоборот, вкраце) описано тут.
PS: я экспериментировал с мегой8. думаю при большей памяти проблем не будет. вот с тини проблема - 52 байт выделится только на стеки.
[url=http:///]
[/url]
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:52:32, всего редактировалось 1 раз.
Клоподавер упрыгхт
Re: Библиотека поддержки многопоточности для ATmega
Источник:
Цель GNU GPL — предоставить пользователю права копировать, модифицировать и распространять (в том числе на коммерческой основе) программы (что по умолчанию запрещено законом об авторских правах), а также гарантировать, что и пользователи всех производных программ получат вышеперечисленные права. [Прим. 1] Принцип „наследования“ прав называется «копилефт» (транслитерация c англ. copyleft) и был придуман Ричардом Столлмэном. По контрасту с GPL, лицензии проприетарного ПО «очень редко дают пользователю такие права и обычно, наоборот, стремятся их ограничить, например, запрещая восстановление исходного кода»[2].
Лицензируя работу на условиях GNU GPL, автор сохраняет за собой авторство[Прим. 2].
Содержание
GPL предоставляет получателям компьютерных программ следующие права, или «свободы»:[3]
* свободу запуска программы с любой целью;
* свободу изучения того, как программа работает, и её модификации (предварительным условием для этого является доступ к исходному коду);
* свободу распространения копий как исходного, так и исполняемого кода;
* свободу улучшения программы, и выпуска улучшений в публичный доступ (предварительным условием для этого является доступ к исходному коду).
--------
Вывод: использовать можно как угодно. Если хочешь публиковать в интернете, в шапку описания лучше добавить того, кто модифицировал и когда модифицировал.
Цель GNU GPL — предоставить пользователю права копировать, модифицировать и распространять (в том числе на коммерческой основе) программы (что по умолчанию запрещено законом об авторских правах), а также гарантировать, что и пользователи всех производных программ получат вышеперечисленные права. [Прим. 1] Принцип „наследования“ прав называется «копилефт» (транслитерация c англ. copyleft) и был придуман Ричардом Столлмэном. По контрасту с GPL, лицензии проприетарного ПО «очень редко дают пользователю такие права и обычно, наоборот, стремятся их ограничить, например, запрещая восстановление исходного кода»[2].
Лицензируя работу на условиях GNU GPL, автор сохраняет за собой авторство[Прим. 2].
Содержание
GPL предоставляет получателям компьютерных программ следующие права, или «свободы»:[3]
* свободу запуска программы с любой целью;
* свободу изучения того, как программа работает, и её модификации (предварительным условием для этого является доступ к исходному коду);
* свободу распространения копий как исходного, так и исполняемого кода;
* свободу улучшения программы, и выпуска улучшений в публичный доступ (предварительным условием для этого является доступ к исходному коду).
--------
Вывод: использовать можно как угодно. Если хочешь публиковать в интернете, в шапку описания лучше добавить того, кто модифицировал и когда модифицировал.
[url=http:///]
[/url]
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:52:53, всего редактировалось 1 раз.
Клоподавер упрыгхт
Re: Библиотека поддержки многопоточности для ATmega
Спасибо за подсказку. Постараюсь исправить на MIT. Придется самому переписать пару функций, разработанных чужими людьми. Из-за этого и самому пришлось делать GPL.
[url=http:///]
[/url]
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:54:14, всего редактировалось 1 раз.
Клоподавер упрыгхт
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Библиотека поддержки многопоточности для ATmega
Ещё сюда загляните http://real.kiev.ua/scmrtos/1-eventflag/ellioh писал(а):Спасибо, по возможности погляжу, хотя пока мне кажется, что меня устроит scmRTOS. В её потрохах я пока не успел покопаться, только пособирал примеры, почитал доки
Именно поэтому у scmRTOS в своё время лицензия была изменена с *GPL на MIT-подобную.ellioh писал(а):Если бы речь шла о больших машинах, есть LGPL, но я не берусь самостоятельно понять правовые аспекты её применения в условиях, когда о динамической линковке вопрос не стоит.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:53:13, всего редактировалось 1 раз.
Клоподавер упрыгхт
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Библиотека поддержки многопоточности для ATmega
AVR/GCC порта. И потихоньку беру на себя сопровождение AVR/IAR- порта, ради чего пришлось поставить "кик-старт"-овую версию IAREWB (для примеров ограничения по коду хватаетellioh писал(а):Да, посмотрел. Кстати, как я понимаю, вы -- автор порта scmRTOS на AVR?
«Волковские» макросы в развитии использую уже денадцать лет, поэтому они и в порт scmRTOS перетекли.ellioh писал(а):На пробу сделал себе аналог pin_macros (кстати, идея pin_macros тоже очень понравилась) на C++'ных шаблонах в стиле порождающего программирования
Сейчас у меня в «TODO» стоит пункт портирования на AVR тех шаблонов работы с портами, которые AHTOXA сделал для CortexM3/GCC порта. Мы их немного допилили в сторону испольования bit-band (с анализом того, где bit-band даёт преимущества, а где его применение не имеет смысла) и теперь для STM32 я использую эти шаблоны.
Я их буду переносить на AVR 1:1 для увеличения совместимости портов/примеров. Вот только закончу проверку AVR-ских портов/примеров для v4.00, чтобы не задерживать релиз. Шаблоны в примере можно будет и позже добавить.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:53:34, всего редактировалось 1 раз.
Клоподавер упрыгхт
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Библиотека поддержки многопоточности для ATmega
«на днях, а то и раньше»
Ситуация такая - все хотелки добавлены, все наболелки реализованы.
Теперь каждый в зоне своей ответственности должен подтянуть порты/примеры, отчитаться о готовности и тогда релиз, лежащий сейчас в ветке репозитория branches/pre-v400, будет утверждён.
Кажется, у меня всё нормально, но нужно ещё раз сверить со свежими изменениями.
Тут https://groups.google.com/group/scmrtos-ru?hl=ru идёт обсуждение, но через web-интерфес там почему-то существенная часть кирилицы портится. Так что рекомендую подписаться на рассылку (справа вверху «присодиниться к этой группе»).
Ситуация такая - все хотелки добавлены, все наболелки реализованы.
Теперь каждый в зоне своей ответственности должен подтянуть порты/примеры, отчитаться о готовности и тогда релиз, лежащий сейчас в ветке репозитория branches/pre-v400, будет утверждён.
Кажется, у меня всё нормально, но нужно ещё раз сверить со свежими изменениями.
Тут https://groups.google.com/group/scmrtos-ru?hl=ru идёт обсуждение, но через web-интерфес там почему-то существенная часть кирилицы портится. Так что рекомендую подписаться на рассылку (справа вверху «присодиниться к этой группе»).
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: Библиотека поддержки многопоточности для ATmega
-
Последний раз редактировалось ellioh Сб май 14, 2011 12:53:49, всего редактировалось 1 раз.
Клоподавер упрыгхт
- Dimone
- Прорезались зубы
- Сообщения: 244
- Зарегистрирован: Ср сен 08, 2010 11:42:19
- Контактная информация:
Re: Библиотека поддержки многопоточности для ATmega
Я , конечно, же не называю то что использую "ртос"-ом, -заюзал интересный планировщик с вытесняющей многозадачностью,
"раунд робины" уже не подходят, а юзать то, что для переключения контекста требует дополнительных вызовов из текущей задчи (не гарантированно детерменированных во времени) посчитал абсурдным. Да и"мега" , берем вариант без внешней "срам" не даст развернуться со стеками, безопасно их использовать будет можно лишь при постоянном контроле его использования, т.е. лишняя вложеность в вызове, и приехали, что вкорне рвет парадигмы высокоуровневого программирования. Поэтому, основной задачей было стек юзать лишь стандартный CSTACK и RSTACK("иар"). Соответственно, единственное что требуется от функции, и то при условии использования ее многими процсами например bin2bcd, это "reentant" возможность, что достаточно освещено в описаниях обработчиков прерываний. Посути, для сохранения/восстановления используются механизмы работы со стеком компилятора, соответственно все управление сводится к установке безопасных значений CSTACK и RSTACK в баланс с имеющейся свободной ОЗУ. Единственный минус, -невозможность снять задачу не получив от нее "return",т.е. зависшую,подозреваю что этим грешны и многие кооперативные ядра, но тем не менее даже получив задачу с "мертвым циклом", или ожидающую какои-то дивайс, не повлияет на работу задач с высшим приоритетом. Пока хардваные прерывания существуют отдельно, работа с ними идет своим обработчиком, управление ядром идет через несложный "api" , пока есть возможность,установить задаче приоритет выполнения, запустить задачу однократно, отсрочить задачу, запустить с указанным периодом,заблокировать/разблокировать, снять задачу. "overhead" снимает около 0.5MHz ,при системной временной сетке 1mS ,и пока 24maх параллельных задачах, ну и чуть памяти на кэш планировщика ...Доволен как слон, проэкт с несколькими АЦП, использованием всех интерфейсов 128 "мэги", собственным байт-код интерпретатором (т.е. "behavioг" программы не компилится а даунлодится , как в "plс".)
-Не представляю как подругому бы такое потянул...
П.С. но так это первый опыт вынужденного написания подобной управляющей надстройки, думаю должно быть и круче...
Респект "avreal"-у за программатор...
"раунд робины" уже не подходят, а юзать то, что для переключения контекста требует дополнительных вызовов из текущей задчи (не гарантированно детерменированных во времени) посчитал абсурдным. Да и"мега" , берем вариант без внешней "срам" не даст развернуться со стеками, безопасно их использовать будет можно лишь при постоянном контроле его использования, т.е. лишняя вложеность в вызове, и приехали, что вкорне рвет парадигмы высокоуровневого программирования. Поэтому, основной задачей было стек юзать лишь стандартный CSTACK и RSTACK("иар"). Соответственно, единственное что требуется от функции, и то при условии использования ее многими процсами например bin2bcd, это "reentant" возможность, что достаточно освещено в описаниях обработчиков прерываний. Посути, для сохранения/восстановления используются механизмы работы со стеком компилятора, соответственно все управление сводится к установке безопасных значений CSTACK и RSTACK в баланс с имеющейся свободной ОЗУ. Единственный минус, -невозможность снять задачу не получив от нее "return",т.е. зависшую,подозреваю что этим грешны и многие кооперативные ядра, но тем не менее даже получив задачу с "мертвым циклом", или ожидающую какои-то дивайс, не повлияет на работу задач с высшим приоритетом. Пока хардваные прерывания существуют отдельно, работа с ними идет своим обработчиком, управление ядром идет через несложный "api" , пока есть возможность,установить задаче приоритет выполнения, запустить задачу однократно, отсрочить задачу, запустить с указанным периодом,заблокировать/разблокировать, снять задачу. "overhead" снимает около 0.5MHz ,при системной временной сетке 1mS ,и пока 24maх параллельных задачах, ну и чуть памяти на кэш планировщика ...Доволен как слон, проэкт с несколькими АЦП, использованием всех интерфейсов 128 "мэги", собственным байт-код интерпретатором (т.е. "behavioг" программы не компилится а даунлодится , как в "plс".)
-Не представляю как подругому бы такое потянул...
П.С. но так это первый опыт вынужденного написания подобной управляющей надстройки, думаю должно быть и круче...
Респект "avreal"-у за программатор...


