|
рекомендации по использованию FreeRTOS, в коммерческих проектах |
|
|
|
Oct 12 2005, 05:33
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(slabnoff @ Oct 11 2005, 20:59) Вполне доволен, только семафоры через очередь сообщений + только двоичные не понравились, думаю в свободное время подправить это дело. А для каких применений Вам нужны счетные семафоры? Я понял, Вам их не хватает. Цитата(slabnoff @ Oct 11 2005, 20:59) А так основные преимущества перед uCOS-II - многозадачность карусельного типа А зачем она? От нее, имхо, только неоднозначность в работе. Цитата(slabnoff @ Oct 11 2005, 20:59) несколько более компактна (не принципиально), возможность работать в кооперативе В каком кооперативе?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Oct 12 2005, 06:21
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955

|
Цитата А для каких применений Вам нужны счетные семафоры? Я понял, Вам их не хватает. Удобно иногда для буферов сообщений того же Ethernet. Понятно, что можно обойтись, но просто удобно, не приходится очередные велосипеды изобретать. Цитата А зачем она? От нее, имхо, только неоднозначность в работе. Для медленных потоков с низкими приоритетами, к которым одно требование - исполняться, иногда применяю. Хотя вообще вы правы. Цитата В каком кооперативе? Многозадачность добровольного типа, не вытесняющая, она же кооператив.
|
|
|
|
|
Oct 12 2005, 06:30
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(slabnoff @ Oct 12 2005, 12:21) Цитата А для каких применений Вам нужны счетные семафоры? Я понял, Вам их не хватает. Удобно иногда для буферов сообщений того же Ethernet. Понятно, что можно обойтись, но просто удобно, не приходится очередные велосипеды изобретать. А не будет ли для буферов сообщений удобнее очереди использовать? Цитата(slabnoff @ Oct 12 2005, 12:21) Цитата В каком кооперативе? Многозадачность добровольного типа, не вытесняющая, она же кооператив. Как это? Вытесняющия и кооперативная ОС в одном флаконе? Одновременно работают? Что-то не понимаю как это и, самое главное, зачем?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Oct 12 2005, 09:26
|

Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491

|
Цитата(slabnoff @ Oct 11 2005, 18:59) Юзаю оную для вполне серьезного проекта на Philips LPC2214. Вполне доволен, только семафоры через очередь сообщений + только двоичные не понравились, думаю в свободное время подправить это дело. Большое спасибо за ответ! Вы меня обнадежили. А то спрашивал на разных форумах - в основном тишина, а закладываться на "темную лошадку" немного стремновато, проект серьезный. Со временем надеюсь рассказать о достигнутых результатах
|
|
|
|
|
Oct 12 2005, 09:31
|

Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491

|
Цитата(dxp @ Oct 12 2005, 10:30) Цитата(slabnoff @ Oct 12 2005, 12:21) Цитата В каком кооперативе? Многозадачность добровольного типа, не вытесняющая, она же кооператив. Как это? Вытесняющия и кооперативная ОС в одном флаконе? Одновременно работают? Что-то не понимаю как это и, самое главное, зачем? разумеется, вытесняющая и корпоративная ОС одновременно работать не могут, да и речь не об этом. Просто планировщик задач FreeRTOS написан так, что может работать в одном из двух режимов либо так, либо так. По поводу целесообразности применения обоих режимов на удивление очень внятно и толково написано в маленьком туториале на сайте www.freertos.org
|
|
|
|
|
Oct 12 2005, 10:08
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(sergik_vrn @ Oct 12 2005, 15:31) разумеется, вытесняющая и корпоративная ОС одновременно работать не могут, да и речь не об этом. Просто планировщик задач FreeRTOS написан так, что может работать в одном из двух режимов либо так, либо так. Основной смысл кооперативной ОС - экономия ресурсов (когда их нет или когда их мало и не хватает для реализации целевой функциональности). Если ресурсов хватает, вытесняющая ОС - самое оно. Какой смысл иметь их обе сразу лично мне не понятно. Объясните, пожалуйста? Цитата(sergik_vrn @ Oct 12 2005, 15:31) По поводу целесообразности применения обоих режимов на удивление очень внятно и толково написано в маленьком туториале на сайте www.freertos.orgНе могли бы Вы дать точную ссылку?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Oct 12 2005, 10:22
|

Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491

|
Цитата(dxp @ Oct 12 2005, 14:08) Цитата(sergik_vrn @ Oct 12 2005, 15:31) разумеется, вытесняющая и корпоративная ОС одновременно работать не могут, да и речь не об этом. Просто планировщик задач FreeRTOS написан так, что может работать в одном из двух режимов либо так, либо так. Основной смысл кооперативной ОС - экономия ресурсов (когда их нет или когда их мало и не хватает для реализации целевой функциональности). Если ресурсов хватает, вытесняющая ОС - самое оно. Какой смысл иметь их обе сразу лично мне не понятно. Объясните, пожалуйста? объясняю. "сразу" обе ОС мы имеем только на уровне исходных кодов. на этапе компиляции из этих вариантов выбирается один, после чего мы имеем ту или иную ОС в зависимости от наших требований. удобство такого объединения я вижу в максимальной унификации библиотек (вместо двух разных ОС имеем два варианта одной) Цитата(dxp @ Oct 12 2005, 14:08) Цитата(sergik_vrn @ Oct 12 2005, 15:31) По поводу целесообразности применения обоих режимов на удивление очень внятно и толково написано в маленьком туториале на сайте www.freertos.orgНе могли бы Вы дать точную ссылку? http://www.freertos.org/tutorial/index.html
|
|
|
|
|
Oct 13 2005, 22:54
|

Профессионал
    
Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661

|
Вольный перевод текста лицензии Free RTOS:
Лицензия и Гарантия
FreeRTOS распостраняется под GNU GPL - с исключением, которое детально описано ниже.
Взамен использования этого программного обеспечения по GPL я требую выполнения двух пунктов:
1)Любое расширение, порт или исправление ошибок, должно быть доступно для меня. При получении любой модификации я оценю лудший способ включения данного изменения, и затем оно будет доступно через FreeRTOS.org.
2) Вы должны отослать мне краткое описание любого проекта, который использует FreeRTOS. Только для моего собственного интереса.
Пожалуйста, присылайте детальные описания любых улудшений, портов, проектов по адресу "r.barry @ FreeRTOS.org" (для получения правильного email адреса удалите пробелы до и после символа @).
Для получения полного текста GPL нажмите здесь.
Я включил нижеследующее исключение. Исключение должно использоваться, если Вы собираетесь использовать FreeRTOS (объединить) с proprietary product (c продуктом являющимся вашей собственностью).
Если Вы решите использовать это исключение, то неплохо было бы (пощряется - оригинально) чтобы вы сделали пожертвование проекту FreeRTOS.
Для этого может использоваться ссылка слева. Любое такое пожертвование полностью добровольно и не влияет на поддержку или гарантии.
Данное исключение может спользоваться только, если Вы используете FreeRTOS исключительно посредством API, которое опубликовано на данном сайте, и при условии, результат не является самостоятельной RTOS.
--------------------------------------------------------------------- ТЕКСТ ИСКЛЮЧЕНИЯ:
В результате статической или динамической линковки FreeRTOS и других модулей появляется объединенное изделие (combined work), основанноt на FreeRTOS. В результате, GPL General Public License применима к этому целому объединеному изделию.
Как специальное исключение, правообладатель FreeRTOS разрешает Вам линковать FreeRTOS к независимым модулям, которые взаимодейтсвуют с FreeRTOS исключительно через FreeRTOS API, независимо от лицензий, под которыми распространяются данные модули, копировать, распространять результирующее изделие под выбранной вами лицензией при условии, что каждая такая копия результирующего изделия будет сопровождена присьменным указанием номера используемой версии FreeRTOS, и вашим предложением поставить эти исходные коды FreeRTOS, если получатель объединенного изделия их запросит.
Исходные текста FreeRTOS, как измененные полностью или частично так и оригинальные могут распространяться Вами в соответствии с GNU General Public License плюс данное исключение. Независимый модуль - это модуль, который не основанн на FreeRTOS и не является производным относительно FreeRTOS.
Отметим, что те кто использует модифицированные версии FreeRTOS, не обязаны предоставить это специальное исключение для своих модифицированных версий; это - их выбор. GNU General Public License разрешает выпустить модифицированную версию без данного исключения; данное исключение также позволяет выпустить модифицированную версию, на которую наложено это исключение. ---------------------------------------------------------------------
|
|
|
|
|
Oct 16 2005, 10:13
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955

|
Цитата Как там c TCP/IP стэком. Смотрю порт под AT91SAM7X уже есть, а вроде образцов еще нет? Есть там uIP (мне не понравился), есть драйвер для WizNET (i2c). Я лично портировал/оптимизировал OpenTCP (Realtek RTL8019AS) для своих нужд, сейчас делаю драйвер для WizNET в шинном варианте. Вообще с точки зрения лицензии и стоимости FreeRTOS на тот момент, когда я ориентировался в выборе ОСРВ, была самым оптимальным вариантом. Если бы uCOS-II не стоила таких неумеренных денег, возможно бы все-таки подписались на нее... С другой стороны, все равно студентам курс по СРВ скоро читать, хочется свои знания обкатать... Думаю где-то через месяц-два свяжусь с автором FreeRTOS и будут там отдельные семафоры, не поверх очередей сообщений + счетные, а также возможно еще несколько вкусностей типа стека TCP/IP и драйвера под WizNET в шинном варианте, а не i2c + всякие драйвера устройств и т.п.. С уважением, Андрей Слабнов.
|
|
|
|
|
Oct 18 2005, 07:01
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955

|
Цитата А чем не устраивает eCos? Да в общем-то устраивает. Правда несколько громоздка она для простых применений. В добавок я gcc не люблю, привык к IAR. Хотя вообще говоря на досуге потихоньку с eCos разбираюсь.
|
|
|
|
|
Oct 26 2005, 16:17
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955

|
В продолжение... Разбирался тут с родными семафорами в FreeRTOS. Выяснилась неприятная вещь: ежели шлю сигнал через семафор от прерывания, а в некторой задаче жду его время N тиков операционки, например так: Код ISR: .... xTaskWoken=xSemaphoreGiveFromISR(CalcSem,xTaskWoken); ....
Task: .... if(xSemaphoreTake(CalcSem,N) == pdTRUE) { .... } .... то семафор реально захватывается задачей через N тиков операционки, а не сразу после того, как он был послан... В общем по-любому похоже надо свои семафоры заканчивать. Если кому интересно - думаю через месяц закончу, попробую заслать автору FreeRTOS. Если кто хочет потестировать - милости просим.
|
|
|
|
|
Nov 2 2005, 10:18
|

Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491

|
Цитата(slabnoff @ Oct 26 2005, 20:17) В продолжение... Разбирался тут с родными семафорами в FreeRTOS. Выяснилась неприятная вещь: ежели шлю сигнал через семафор от прерывания, а в некторой задаче жду его время N тиков операционки, например так: Код ISR: .... xTaskWoken=xSemaphoreGiveFromISR(CalcSem,xTaskWoken); ....
Task: .... if(xSemaphoreTake(CalcSem,N) == pdTRUE) { .... } .... то семафор реально захватывается задачей через N тиков операционки, а не сразу после того, как он был послан... В общем по-любому похоже надо свои семафоры заканчивать. Если кому интересно - думаю через месяц закончу, попробую заслать автору FreeRTOS. Если кто хочет потестировать - милости просим. гм. а сам автор это как-нить комментирует? это же глюк, получается?
|
|
|
|
|
Nov 17 2005, 07:47
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(slabnoff @ Oct 26 2005, 19:17)  В общем по-любому похоже надо свои семафоры заканчивать. Если кому интересно - думаю через месяц закончу, попробую заслать автору FreeRTOS. Если кто хочет потестировать - милости просим. Просьба держать в курсе! Я похоже тоже избрал FreeRTOS, как отправную точку для создания более ориентированной на себя системы. Вполне прозрачна на первый взгляд в своей начальной простоте, хорошо читаемые исходники. До сих пор (скоро 15 лет) всегда делал более-менее свое ( в приглядку естественно ), а тут резко пошел на ARM...... Слишком бысто я в эту работу не вольюсь - новый процессор, иннструментарий (правда готовый :-) ) - где-то порядка месяца на разборки :-( в "рабочем порядке". Пока за вчера собрал (IAR) слегка помxав шашкой порт на LPC2124 - живет и общается с внешним миром.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 17 2005, 08:51
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(dxp @ Oct 12 2005, 13:08)  Основной смысл кооперативной ОС - экономия ресурсов (когда их нет или когда их мало и не хватает для реализации целевой функциональности). Если ресурсов хватает, вытесняющая ОС - самое оно. Какой смысл иметь их обе сразу лично мне не понятно. Объясните, пожалуйста? В ресурсах и смысл :-(. Например, телефонная станция - сотни-десятки тысяч абонентов. Процессы обслуживания одного абонента более, чем просты, не требуют много ресурсов но их МНОГО. Кроме этих естественно есть и другие, серьезные. С вытясняющей весь пар уйдет в свисток и ляжет любая система. Можно, естественно написать один процесс, который все эти тысячи и будет обслуживать, а можно и совместить. В реальных случаях сложность сопоставима, но степень прозрачности работы _приложения_ отличается очень сильно. Особенно это выпирает, когда работают несколько людей _разной_ квалификации - лучше я систему сделаю, чем в конце-концов буду расхлебывать чей-то мутный-мутный код.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 17 2005, 11:07
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(zltigo @ Nov 17 2005, 14:51)  Цитата(dxp @ Oct 12 2005, 13:08)  Основной смысл кооперативной ОС - экономия ресурсов (когда их нет или когда их мало и не хватает для реализации целевой функциональности). Если ресурсов хватает, вытесняющая ОС - самое оно. Какой смысл иметь их обе сразу лично мне не понятно. Объясните, пожалуйста?
В ресурсах и смысл :-(. Например, телефонная станция - сотни-десятки тысяч абонентов. Процессы обслуживания одного абонента более, чем просты, не требуют много ресурсов но их МНОГО. Кроме этих естественно есть и другие, серьезные. С вытясняющей весь пар уйдет в свисток и ляжет любая система. Это что ж, на каждого абонента отдельный процесс? Зачем? Вытесняющая ОС имеет главное преимущество - детерминированное время отклика на событие. Если все абоненты равнозначны по приоритету - то их и должен обслуживать один процесс. Если есть разные группы абонентов - например, есть группа VIP, которая должна быть обслужена вперед других, то ее обслуживание поместить в другой процесс с более высоким приоритетом. Только и всего. В общем, при использовании RTOS тоже ведь надо думать и грамотно проектировать систему. В этом случае все прекрасно ложится, ничего "в свисток" не уходит.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Nov 18 2005, 16:43
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(dxp @ Nov 17 2005, 14:07)  Это что ж, на каждого абонента отдельный процесс? Зачем? Процессы ОЧЕНЬ простые, код вылизывается, затрат на переключения контекста практически нет. Лет ...надцать назад была еще одна причина - 8085/Z80 прцессор с 8K очень дорогой ROM, ну RAM было больше и дешевле - 256 процессов и заметная экономия кода. Ну а о том, что можно и по другому - я и сам уже писал, да и делал, но уже на AM186CC. Предстваляю все это себе очень хорошо. В принципе можно считать, что тот самый один процесс, который их всех одинаковых обслуживает является сам по себе небольшим "кооперативчиком" для которого и создастся своя "системка". Пока на подсознательном уровне "хочу", но похоже, что мощность контроллеров растет быстрее, чем я пишу :-) и возможно со всеми эти мелочными заморочками следует завязывать :-).
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 18 2005, 23:40
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(slabnoff @ Nov 2 2005, 15:55)  Наступил на проблему - незаметно съел heap, а у автора IDLE Task создается из vTaskStartScheduler( ) последней! Ну и не хватило памяти под стек и не запустилась, а за ней и шедулер не стартовал и полетело все далеко. Три часа пляски - я уже думал отладчиком пользоваться придется :-). До нехватки памяти я довольно быстро добрался, но думал менеджер памяти шалит - читал-читал.. В общем для профилактики дописал системный вызов xIdleTaskCreate( ) и поставил его перед всеми, а в vTaskStartScheduler( ) для совместимости добавил контроль на запущенную IDLE и создание ее в случае отсутствия. Хотя, наверное, и startup запихнуть можно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 21 2005, 18:48
|
Группа: Новичок
Сообщений: 7
Регистрация: 23-08-05
Пользователь №: 7 903

|
Тож недавно начал юзать эту ось. Портировал на cx805 (ASIC телефона sgh-c100), работает. Были небольшие замороки с частью startup, исправить несложно. Для меня неудобно, что в ходе переключения контекста вызывается SWI (у меня свои виды на использование этого прерывания). А так, в целом нареканий пока нет.
|
|
|
|
|
Nov 22 2005, 04:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(FreeCoderr @ Nov 21 2005, 20:48)  Для меня неудобно, что в ходе переключения контекста вызывается SWI (у меня свои виды на использование этого прерывания). Такие большие виды, что 8/24 битного поля 'соmment' не хватает для того, чтобы пожертвовать одно значение для переключения контекста :-) ? Я понимаю, что текущий "порт" автора под ARM сделан левой ногой, дабы "был", но подправить с использованием 'comment' что мешает? В "portmacro.h" #define portYIELD() asm ( "SWI 0" ); нолик заменить на любое число которое не жалко.... В "startup.s79" что-то типа: ldr r0, [r14, #-4] ; Получить тело SWI инструкции bic r0, r0, #0xFF000000 ; Почистить поля 'condinion' и 'F' добавить и ветвится по 'r0' как душа пожелает
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|