Jump to content

    
Sign in to follow this  
Golikov

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

Recommended Posts

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

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

 

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

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

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

 

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

 

Share this post


Link to post
Share on other sites
ну так я надеялся что FreeRTOS собрана под разные ядра... как обещающая и особо заточенная... но видать нет...

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

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

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

Share this post


Link to post
Share on other sites
То, что вы хотите, реализовано в кокосе. Пара килобайт весь код, заточен под кортекс, на ассемблере переключается,

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

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

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

 

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

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

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

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

 

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

Share this post


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

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

Share this post


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

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

Именно.

 

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

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

Share this post


Link to post
Share on other sites
ну так я надеялся что 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 из примерно похожей демки, правите под свои потребности - и вуаля.

Share this post


Link to post
Share on other sites

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

 

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

 

 

 

 

Share this post


Link to post
Share on other sites
Ну что же, всем спасибо за беседу, попробуем запустить FreeRTOS, а там видно будет.

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
Выскажусь тоже.

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

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

 

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

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

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

 

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

Share this post


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

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

Share this post


Link to post
Share on other sites
Вообще, переключение контекста на 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 под что-то заточена немного смешно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this