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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> рекомендации по использованию FreeRTOS, в коммерческих проектах
dch
сообщение Oct 17 2005, 13:58
Сообщение #16


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

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



Цитата(slabnoff @ Oct 16 2005, 13:13)
оптимальным вариантом

А чем не устраивает eCos?
Большой круг пользователей которые поддерживают саму ОС - вроде самый главный критерий оптимальности. Линковка своих приложений есть, без предоставления кода последних . И GPL на саму операционку.
Go to the top of the page
 
+Quote Post
slabnoff
сообщение Oct 18 2005, 07:01
Сообщение #17


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

Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955



Цитата
А чем не устраивает eCos?

Да в общем-то устраивает. Правда несколько громоздка она для простых применений. В добавок я gcc не люблю, привык к IAR. Хотя вообще говоря на досуге потихоньку с eCos разбираюсь.
Go to the top of the page
 
+Quote Post
slabnoff
сообщение Oct 26 2005, 16:17
Сообщение #18


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

Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955



В продолжение...
Разбирался тут с родными семафорами в FreeRTOS. Выяснилась неприятная вещь: ежели шлю сигнал через семафор от прерывания, а в некторой задаче жду его время N тиков операционки, например так:

Код
ISR:
....
xTaskWoken=xSemaphoreGiveFromISR(CalcSem,xTaskWoken);
....

Task:
....
if(xSemaphoreTake(CalcSem,N) == pdTRUE)
{
....
}          
....

то семафор реально захватывается задачей через N тиков операционки, а не сразу после того, как он был послан... В общем по-любому похоже надо свои семафоры заканчивать. Если кому интересно - думаю через месяц закончу, попробую заслать автору FreeRTOS. Если кто хочет потестировать - милости просим.
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Nov 2 2005, 10:18
Сообщение #19


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

Группа: Свой
Сообщений: 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. Если кто хочет потестировать - милости просим.
*


гм. а сам автор это как-нить комментирует? это же глюк, получается?
Go to the top of the page
 
+Quote Post
slabnoff
сообщение Nov 2 2005, 12:55
Сообщение #20


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

Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955



Руки не дошли пока ему написать, постараюсь в ближайшее время... Да и надо бы детальнее проверить...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 17 2005, 07:47
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 17 2005, 08:51
Сообщение #22


Гуру
******

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



Цитата(dxp @ Oct 12 2005, 13:08) *
Основной смысл кооперативной ОС - экономия ресурсов (когда их нет или когда их мало и не хватает для реализации целевой функциональности). Если ресурсов хватает, вытесняющая ОС - самое оно. Какой смысл иметь их обе сразу лично мне не понятно. Объясните, пожалуйста?

В ресурсах и смысл :-(. Например, телефонная станция - сотни-десятки тысяч абонентов.
Процессы обслуживания одного абонента более, чем просты, не требуют много ресурсов но их МНОГО.
Кроме этих естественно есть и другие, серьезные. С вытясняющей весь пар уйдет в свисток и ляжет любая система. Можно, естественно написать один процесс, который все эти тысячи и будет обслуживать, а можно и совместить. В реальных случаях сложность сопоставима, но степень прозрачности работы _приложения_ отличается очень сильно. Особенно это выпирает, когда работают несколько людей _разной_ квалификации - лучше я систему сделаю, чем в конце-концов буду расхлебывать чей-то мутный-мутный код.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dxp
сообщение Nov 17 2005, 11:07
Сообщение #23


Adept
******

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



Цитата(zltigo @ Nov 17 2005, 14:51) *
Цитата(dxp @ Oct 12 2005, 13:08) *

Основной смысл кооперативной ОС - экономия ресурсов (когда их нет или когда их мало и не хватает для реализации целевой функциональности). Если ресурсов хватает, вытесняющая ОС - самое оно. Какой смысл иметь их обе сразу лично мне не понятно. Объясните, пожалуйста?

В ресурсах и смысл :-(. Например, телефонная станция - сотни-десятки тысяч абонентов.
Процессы обслуживания одного абонента более, чем просты, не требуют много ресурсов но их МНОГО.
Кроме этих естественно есть и другие, серьезные. С вытясняющей весь пар уйдет в свисток и ляжет любая система.

Это что ж, на каждого абонента отдельный процесс? Зачем? Вытесняющая ОС имеет главное преимущество - детерминированное время отклика на событие. Если все абоненты равнозначны по приоритету - то их и должен обслуживать один процесс. Если есть разные группы абонентов - например, есть группа VIP, которая должна быть обслужена вперед других, то ее обслуживание поместить в другой процесс с более высоким приоритетом. Только и всего.

В общем, при использовании RTOS тоже ведь надо думать и грамотно проектировать систему. В этом случае все прекрасно ложится, ничего "в свисток" не уходит.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 18 2005, 16:43
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 18 2005, 23:40
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
FreeCoderr
сообщение Nov 21 2005, 18:48
Сообщение #26





Группа: Новичок
Сообщений: 7
Регистрация: 23-08-05
Пользователь №: 7 903



Тож недавно начал юзать эту ось. Портировал на cx805 (ASIC телефона sgh-c100), работает. Были небольшие замороки с частью startup, исправить несложно. Для меня неудобно, что в ходе переключения контекста вызывается SWI (у меня свои виды на использование этого прерывания). А так, в целом нареканий пока нет.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 22 2005, 04:08
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 09:46
Рейтинг@Mail.ru


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