Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: embOS
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
kan35
Очень уж понравилась данная ОС своей компактностью. Есть ли бесплатные аналоги оной. Или есть ли где нибудь взять полнофункциональную версию для пробы? Помогите, спецы.
ig_z
Цитата(kan35 @ Feb 17 2009, 11:23) *
Очень уж понравилась данная ОС своей компактностью. Есть ли бесплатные аналоги оной. Или есть ли где нибудь взять полнофункциональную версию для пробы? Помогите, спецы.


Аналогом принято считать микриумную ось uCOS-II. Здесь есть раздел, посвященный ей. Там же были и прямые линки на их фтп. Еще лучше зарегистрироваться на сайте микриума и выбирать то, что нужно.
kan35
У меня сложилось впечатление что uCOSII достаточно прожерлива в ресурсах чтобы натягивать её на мегу32 например..
ошибаюсь?
Artem_Petrik
посмотрите scmRTOS. Если нужна вытесняющая многозадачность, то для AVR это самое оно. Другое дело, нужна ли вам вообще ось? Мне лично не попадались задачи, в которых применение оси было бы оправдано для таких небольших МК. Итак озу немного.
MrYuran
Цитата(Artem_Petrik @ Feb 17 2009, 14:49) *
посмотрите scmRTOS. Если нужна вытесняющая многозадачность, то для AVR это самое оно.

Мне тоже в своё время понравилась.
Простенько и со вкусом.
Единственный минус - в "плюсах". Но это моё личное мнение.
haker_fox
Цитата(Artem_Petrik @ Feb 17 2009, 19:49) *
посмотрите scmRTOS.
в которых применение оси было бы оправдано для таких небольших МК. Итак озу немного.

scmRTOS изначально предназначалсь для таких небольших МК. У меня под этой осью СУ на базе ATmega16 крутиться. Проблем никаких, одни достоинства: не надо все это (ОС) самому реализовывать. Но вообще, конечно зависит от задачи, это верно! Не везде можно ставить ОС.


Цитата(MrYuran @ Feb 17 2009, 19:59) *
Единственный минус - в "плюсах". Но это моё личное мнение.

А что такого в плюсах? Ведь свое приложение можно и на Си писать.
К слову: все для AVR пишу на СИ++. Я правда не глубокий его знаток, но очень ценю такие "мелочи", как классы, перегрузка и тп.
kan35
Что то я не смог найти нормальное описание этой операционки
MrYuran
Цитата(kan35 @ Feb 17 2009, 15:25) *
Что то я не смог найти нормальное описание этой операционки

http://scmrtos.sourceforge.net/doc/index.html
Плюс соответствующий раздел на форуме
kan35
Цитата(MrYuran @ Feb 17 2009, 15:36) *
http://scmrtos.sourceforge.net/doc/index.html
Плюс соответствующий раздел на форуме

Спасибо. ну а в целом - взглядом профессионала - сильно ли scmtros от embos отстает и в чем минусы?
ukpyr
Цитата
К слову: все для AVR пишу на СИ++. Я правда не глубокий его знаток, но очень ценю такие "мелочи", как классы, перегрузка и тп.
если не секрет, какие такие задачи для AVR требуют использование классов, перегрузки, множества объектов (наверно классы не создаются для того чтобы создать один объект класса...) ?
Сергей Борщ
Цитата(ukpyr @ Feb 17 2009, 18:08) *
если не секрет, какие такие задачи для AVR требуют использование классов, перегрузки, множества объектов (наверно классы не создаются для того чтобы создать один объект класса...) ?
Любые задачи, вплоть до мигания светодиодом. Бывает (и очень часто), классы создаются чтобы создать один объект класса.
ukpyr
Цитата
Любые задачи, вплоть до мигания светодиодом. Бывает (и очень часто), классы создаются чтобы создать один объект класса.
O_o а пример можно ? зачем такие извраты ? или просто некуда девать лишнюю память ?
Сергей Борщ
Цитата(ukpyr @ Feb 17 2009, 21:25) *
зачем такие извраты ?
Потому что удобно. Затем же, зачем пишут на С а не на асм. Вас ведь не удивляет мигание светодиодом на С?
Цитата(ukpyr @ Feb 17 2009, 21:25) *
или просто некуда девать лишнюю память ?
А вы уверены, что будет расходоваться лишняя память?


Цитата(ukpyr @ Feb 17 2009, 21:25) *
а пример можно ?
Ищите, где тут лишняя память расходуется:
Код
inline void send(char c)
{
    uart_send(c);
}

void send(char const * string)
{
    char c;
    while(c = *string++)
        send(c);
}

void test()
{
    send('H');
    send('e');
    send("llo world");
}
Код
void send_char(char c)
{
    uart_send(c);
}

void send_string(char const * string)
{
    char c;
    while(c = *string++)
        send(c);
}

void test()
{
    send_char('H');
    send_char('e');
    send_string("llo world");
}
alcosar
Цитата(ukpyr @ Feb 17 2009, 23:25) *
O_o а пример можно ? зачем такие извраты ? или просто некуда девать лишнюю память ?

Память никуда не девается. На счет производительности посмотрите здесь. Чаще всего такие вопросы возникают у тех, кто не пользуется плюсами или мало о них знает. Вот мнение Линуса Торвальдса, высказанное совсем недавно. Очень много тумана вокруг этого вопроса. Красота и элегантность scmRTOS налицо.
haker_fox
Цитата(ukpyr @ Feb 18 2009, 00:08) *
если не секрет, какие такие задачи для AVR требуют использование классов, перегрузки, множества объектов

Да таже scmRTOS имеет иерархическую структуру классов. И задачи создаются, как объекты классов. Вы ведь не хотите для каждой задачи все писать индивидуально?

Ну ладно, более простой пример. Есть у меня два последовательных порта. Хочется FIFO буфер. Я создаю класс буфера
Код
class TFIFOBuff
{
    private:
        volatile uint16_t        BuffHead, BuffTail, BuffSize;
        volatile uint8_t        *pBuff;
        uint8_t        saved_state;
        uint16_t     IncP(uint16_t p);
    public:
        TFIFOBuff(uint8_t *buffer, uint16_t size);
        bool             IsFull();
        bool             IsEmpty();
        uint8_t             Pop();
        void             Push(uint8_t byte);
};

из секции public видно, что он предоставляет мне как программисту. Теперь я могу завести для каждого порта по объекту и использовать их на здоровье. Чем плохо?)

На счет монстроидальности плюсов - это от неосведомленности. Есть конечно какой-то оверхед, так он и в си по отношению к асму есть (но это обычно уже не есть правда, учитывая оптимизирующие способности компилятора). Но мы же смотрим не на оверхед, а на время разработки программы в основном. Обычно большая часть программы не требует жесткого реалтайма и вылизывать код на асме вручную - потеря времени. Там где нужно, можно сбалансированно вставлять фрагменты асма, никто не спорит. Но основной код - Си++.
Gantz
Цитата(kan35 @ Feb 17 2009, 14:04) *
У меня сложилось впечатление что uCOSII достаточно прожерлива в ресурсах



Скажите какой объем съедает ядро uCOSII? (Желательно в командах).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.