A. Fig Lee 0 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Вот же блин же... мне не нужны все эти драйверы, и периферия. От операционки мне надо чтобы она задачи переключала, а все остальное я сам напишу. Как то это все не дружелюбно для пользователя... То, что вы хотите, реализовано в кокосе. Пара килобайт весь код, заточен под кортекс, на ассемблере переключается, имеет только примитивы синхронизации, никаких драйверов. Надумаете, пальцем ткну где я там баги нашел. Вам может и так сойдет, у нас работает на 1 миллисекунд тик, хорошо загружена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
den_po 0 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба ну так я надеялся что FreeRTOS собрана под разные ядра... как обещающая и особо заточенная... но видать нет... Ну дык ответили ж вам - всё необходимое есть в папке source. От вас требуется настроить FreeRTOSConfig.h и вызвать vTaskStartScheduler(). Ну и стартап в некоторых случаях в демке подглядеть. Если не нравится, на каких таймерах висит переключалка задач, тут уже надо будет лезть в папочку port. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба То, что вы хотите, реализовано в кокосе. Пара килобайт весь код, заточен под кортекс, на ассемблере переключается, имеет только примитивы синхронизации, никаких драйверов. Надумаете, пальцем ткну где я там баги нашел. Спасибо за предложение, пока все же попробую как мне кажется более раскрученный бренд, в надежде на более массовое тестирование. Но а там посмотрим... Ну дык ответили ж вам - всё необходимое есть в папке source. От вас требуется настроить FreeRTOSConfig.h и вызвать vTaskStartScheduler(). Ну и стартап в некоторых случаях в демке подглядеть. Если не нравится, на каких таймерах висит переключалка задач, тут уже надо будет лезть в папочку port. Не..., мне ответили что надо будет брать чужую демку и фильтровать что от демки что от ядра и что там все скручено, так что никогда не заработает сразу, даже если проц совпадет... Вот если мне все нравиться по умолчанию, и я не хочу никуда лезть, мне казалось логичнее взять исходник, а то вдруг автор демки куда то полез и что-то уже поправил. В случае если я возьму прям с сайта ртос.орг, много ли надо доделывать чтобы оно все завелось? Просто оценочно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
den_po 0 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба Не..., мне ответили что надо будет брать чужую демку и фильтровать что от демки что от ядра и что там все скручено, так что никогда не заработает сразу, даже если проц совпадет... http://electronix.ru/forum/index.php?s=&am...t&p=1328460 Вот если мне все нравиться по умолчанию, и я не хочу никуда лезть, мне казалось логичнее взять исходник, а то вдруг автор демки куда то полез и что-то уже поправил. В случае если я возьму прям с сайта ртос.орг, много ли надо доделывать чтобы оно все завелось? Просто оценочно. См. мой предыдущий ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба блин я пропустил этот ответ. То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали? Дальше останется только добавлять таски? Сколько занимает такой старт на голом проце? Ведь в целом так же можно описать и запуск линукса:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали? Дальше останется только добавлять таски? Именно. Сколько занимает такой старт на голом проце? Ведь в целом так же можно описать и запуск линукса :) На Cortex-M пару часов в знакомой среде. Некоторой внимательности требует только настройка контроллера прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LightElf 0 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба ну так я надеялся что 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 из примерно похожей демки, правите под свои потребности - и вуаля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба Ну что же, всем спасибо за беседу, попробуем запустить FreeRTOS, а там видно будет. Под собрана, я имел ввиду собраны исходники, ну собственно как и есть, это типа "FreeRTOS\Source\portable\IAR\ARM_CM3".... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба Ну что же, всем спасибо за беседу, попробуем запустить FreeRTOS, а там видно будет. Мне в свое время очень помогли статьи А. Курница о FreeRTOS. Советую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
den_po 0 9 апреля, 2015 Опубликовано 9 апреля, 2015 · Жалоба То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали? Дальше останется только добавлять таски? vTaskStartScheduler() возвращает управление только при ошибках либо если какая-то задача принудительно останавливает планировщик, поэтому хотя бы одну свою задачу стоит создавать ДО её вызова Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба Выскажусь тоже. С тех пор, как я попробовал использовать RTOS (scmRTOS) в микроконтроллерах, я делаю все проекты только с RTOS. Сейчас, когда приходится возвращаться к старым безосевым проектам для сопровождения, ужасаюсь этой мешанине коллбэков, машин состояний, конечных автоматов и вызовов их обработчиков из суперлупа:) У меня такое же впечатление о FreeRTOS. Разработку очень сильно упростилась. На столько, что взял за правило делать автоматическую генерацию отчёта об ошибках. Из минусов - расход операционной памяти больше в разы. Но я успокаиваю себя тем, что делать то же самое без ОС на процессоре послабее это в наше время резьба по калу. Недавно до конца освоил спящие режимы процессора. Теперь в задаче бездействия процессор уходит в разные режимы сна в зависимости от необходимой на данный момент мин.частоты. Прерывание по таймеру RTC "заводится" на время, когда должна быть пробуждена ближайшая ждущая чего-то задача. После пробуждения системное время модифицируется, что бы задачи, в которых были таймеры, не заметили засыпания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба Мне в свое время очень помогли статьи А. Курница о FreeRTOS. Советую. Спасибо! Думаю надо с чего-то начинать, пусть будет FreeRTOS. На 51 :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба пусть будет FreeRTOS. На 51 :)Может стоит начать с замены 51 на что-то более современное и подходящее для ОС? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба Может стоит начать с замены 51 на что-то более современное и подходящее для ОС? ;) Вообще, переключение контекста на 51 чуть ли не самое быстрое из возможных, пока в пределах 4 банков :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба Вообще, переключение контекста на 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 под что-то заточена немного смешно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться