Перейти к содержанию
    

Потребления ресурсов пустой системой

Вот же блин же...

мне не нужны все эти драйверы, и периферия. От операционки мне надо чтобы она задачи переключала, а все остальное я сам напишу. Как то это все не дружелюбно для пользователя...

 

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

имеет только примитивы синхронизации, никаких драйверов.

Надумаете, пальцем ткну где я там баги нашел.

 

Вам может и так сойдет, у нас работает на 1 миллисекунд тик, хорошо загружена.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну так я надеялся что FreeRTOS собрана под разные ядра... как обещающая и особо заточенная... но видать нет...

Ну дык ответили ж вам - всё необходимое есть в папке source.

От вас требуется настроить FreeRTOSConfig.h и вызвать vTaskStartScheduler(). Ну и стартап в некоторых случаях в демке подглядеть.

Если не нравится, на каких таймерах висит переключалка задач, тут уже надо будет лезть в папочку port.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

имеет только примитивы синхронизации, никаких драйверов.

Надумаете, пальцем ткну где я там баги нашел.

Спасибо за предложение, пока все же попробую как мне кажется более раскрученный бренд, в надежде на более массовое тестирование. Но а там посмотрим...

 

Ну дык ответили ж вам - всё необходимое есть в папке source.

От вас требуется настроить FreeRTOSConfig.h и вызвать vTaskStartScheduler(). Ну и стартап в некоторых случаях в демке подглядеть.

Если не нравится, на каких таймерах висит переключалка задач, тут уже надо будет лезть в папочку port.

Не..., мне ответили что надо будет брать чужую демку и фильтровать что от демки что от ядра и что там все скручено, так что никогда не заработает сразу, даже если проц совпадет...

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не..., мне ответили что надо будет брать чужую демку и фильтровать что от демки что от ядра и что там все скручено, так что никогда не заработает сразу, даже если проц совпадет...

http://electronix.ru/forum/index.php?s=&am...t&p=1328460

 

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

См. мой предыдущий ответ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

блин я пропустил этот ответ.

 

То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали?

Дальше останется только добавлять таски?

 

Сколько занимает такой старт на голом проце? Ведь в целом так же можно описать и запуск линукса:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали?

Дальше останется только добавлять таски?

Именно.

 

Сколько занимает такой старт на голом проце? Ведь в целом так же можно описать и запуск линукса :)

На Cortex-M пару часов в знакомой среде. Некоторой внимательности требует только настройка контроллера прерываний.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну так я надеялся что FreeRTOS собрана под разные ядра... как обещающая и особо заточенная... но видать нет...

Что значит "собрана под разные ядра"? FreeRTOS поставляется в исходниках. Заметная часть функционала выполнена на макросах, поэтому ее нельзя собрать в библиотеку.

Каталог FreeRTOS\Source содержит исходники кернела. По-минимуму это файлы list.c queue.c tasks.c. Есть еще croutine.c и timers.c - на любителя. Каталог FreeRTOS\Source\portable содержит кусочки, специфичные для конкретного компилятора и ядра. Например FreeRTOS\Source\portable\IAR\ARM_CM3 содержит специфичный код для Cortex-M3 с компилятором IAR. Каталог FreeRTOS\Source\portable\MemMang содержит 4 варианта менеджера памяти. Нужно выбрать один, в доке описаны отличия. Для первого запуска достаточно heap_1.c. Дальше берете FreeRTOSConfig.h из примерно похожей демки, правите под свои потребности - и вуаля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну что же, всем спасибо за беседу, попробуем запустить FreeRTOS, а там видно будет.

 

Под собрана, я имел ввиду собраны исходники, ну собственно как и есть, это типа "FreeRTOS\Source\portable\IAR\ARM_CM3"....

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну что же, всем спасибо за беседу, попробуем запустить FreeRTOS, а там видно будет.

Мне в свое время очень помогли статьи А. Курница о FreeRTOS. Советую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали?

Дальше останется только добавлять таски?

vTaskStartScheduler() возвращает управление только при ошибках либо если какая-то задача принудительно останавливает планировщик, поэтому хотя бы одну свою задачу стоит создавать ДО её вызова

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выскажусь тоже.

С тех пор, как я попробовал использовать RTOS (scmRTOS) в микроконтроллерах, я делаю все проекты только с RTOS.

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

 

У меня такое же впечатление о FreeRTOS.

Разработку очень сильно упростилась. На столько, что взял за правило делать автоматическую генерацию отчёта об ошибках.

Из минусов - расход операционной памяти больше в разы. Но я успокаиваю себя тем, что делать то же самое без ОС на процессоре послабее это в наше время резьба по калу.

 

Недавно до конца освоил спящие режимы процессора. Теперь в задаче бездействия процессор уходит в разные режимы сна в зависимости от необходимой на данный момент мин.частоты. Прерывание по таймеру RTC "заводится" на время, когда должна быть пробуждена ближайшая ждущая чего-то задача. После пробуждения системное время модифицируется, что бы задачи, в которых были таймеры, не заметили засыпания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне в свое время очень помогли статьи А. Курница о FreeRTOS. Советую.

Спасибо! Думаю надо с чего-то начинать, пусть будет FreeRTOS. На 51 :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пусть будет FreeRTOS. На 51 :)
Может стоит начать с замены 51 на что-то более современное и подходящее для ОС? ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может стоит начать с замены 51 на что-то более современное и подходящее для ОС? ;)

Вообще, переключение контекста на 51 чуть ли не самое быстрое из возможных, пока в пределах 4 банков :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще, переключение контекста на 51 чуть ли не самое быстрое из возможных, пока в пределах 4 банков :)

 

Ага, как же

Во FreeRTOS из 51-х есть только Cygnal и сохранение контекста там выглядит так:

 

/*
* Macro to push the current execution context onto the stack, before the stack 
* is moved to XRAM. 
*/
#define portSAVE_CONTEXT()                                                                        \
{                                                                                                \
    _asm                                                                                        \
        /* Push ACC first, as when restoring the context it must be restored                    \
        last (it is used to set the IE register). */                                            \
        push    ACC                                                                                \
        /* Store the IE register then disable interrupts. */                                    \
        push    IE                                                                                \
        clr        _EA                                                                                \
        push    DPL                                                                                \
        push    DPH                                                                                \
        push    b                                                                                \
        push    ar2                                                                                \
        push    ar3                                                                                \
        push    ar4                                                                                \
        push    ar5                                                                                \
        push    ar6                                                                                \
        push    ar7                                                                                \
        push    ar0                                                                                \
        push    ar1                                                                                \
        push    PSW                                                                                \
    _endasm;                                                                                    \
        PSW = 0;                                                                                \
    _asm                                                                                        \
        push    _bp                                                                                \
    _endasm;                                                                                    \
}

 

Создатели RTOS-в вообще не выносят всяких аппаратных особенностей.

В этом плане говорить что FreeRTOS под что-то заточена немного смешно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...