|
|
  |
Потребления ресурсов пустой системой, Когда оправдано ставить операционку? |
|
|
|
Apr 8 2015, 23:50
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Golikov A. @ Apr 8 2015, 14:40)  Вот же блин же... мне не нужны все эти драйверы, и периферия. От операционки мне надо чтобы она задачи переключала, а все остальное я сам напишу. Как то это все не дружелюбно для пользователя... То, что вы хотите, реализовано в кокосе. Пара килобайт весь код, заточен под кортекс, на ассемблере переключается, имеет только примитивы синхронизации, никаких драйверов. Надумаете, пальцем ткну где я там баги нашел. Вам может и так сойдет, у нас работает на 1 миллисекунд тик, хорошо загружена.
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Apr 9 2015, 03:56
|
Частый гость
 
Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315

|
Цитата(Golikov A. @ Apr 9 2015, 01:11)  ну так я надеялся что FreeRTOS собрана под разные ядра... как обещающая и особо заточенная... но видать нет... Ну дык ответили ж вам - всё необходимое есть в папке source. От вас требуется настроить FreeRTOSConfig.h и вызвать vTaskStartScheduler(). Ну и стартап в некоторых случаях в демке подглядеть. Если не нравится, на каких таймерах висит переключалка задач, тут уже надо будет лезть в папочку port.
|
|
|
|
|
Apr 9 2015, 04:49
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата То, что вы хотите, реализовано в кокосе. Пара килобайт весь код, заточен под кортекс, на ассемблере переключается, имеет только примитивы синхронизации, никаких драйверов. Надумаете, пальцем ткну где я там баги нашел. Спасибо за предложение, пока все же попробую как мне кажется более раскрученный бренд, в надежде на более массовое тестирование. Но а там посмотрим... Цитата Ну дык ответили ж вам - всё необходимое есть в папке source. От вас требуется настроить FreeRTOSConfig.h и вызвать vTaskStartScheduler(). Ну и стартап в некоторых случаях в демке подглядеть. Если не нравится, на каких таймерах висит переключалка задач, тут уже надо будет лезть в папочку port. Не..., мне ответили что надо будет брать чужую демку и фильтровать что от демки что от ядра и что там все скручено, так что никогда не заработает сразу, даже если проц совпадет... Вот если мне все нравиться по умолчанию, и я не хочу никуда лезть, мне казалось логичнее взять исходник, а то вдруг автор демки куда то полез и что-то уже поправил. В случае если я возьму прям с сайта ртос.орг, много ли надо доделывать чтобы оно все завелось? Просто оценочно.
|
|
|
|
|
Apr 9 2015, 05:26
|
Частый гость
 
Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315

|
Цитата(Golikov A. @ Apr 9 2015, 08:49)  Не..., мне ответили что надо будет брать чужую демку и фильтровать что от демки что от ядра и что там все скручено, так что никогда не заработает сразу, даже если проц совпадет... http://electronix.ru/forum/index.php?s=&am...t&p=1328460Цитата(Golikov A. @ Apr 9 2015, 08:49)  Вот если мне все нравиться по умолчанию, и я не хочу никуда лезть, мне казалось логичнее взять исходник, а то вдруг автор демки куда то полез и что-то уже поправил. В случае если я возьму прям с сайта ртос.орг, много ли надо доделывать чтобы оно все завелось? Просто оценочно. См. мой предыдущий ответ.
|
|
|
|
|
Apr 9 2015, 07:53
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (Golikov A. @ Apr 8 2015, 23:11)  ну так я надеялся что 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 из примерно похожей демки, правите под свои потребности - и вуаля.
|
|
|
|
|
Apr 9 2015, 08:18
|
Частый гость
 
Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315

|
Цитата(Golikov A. @ Apr 9 2015, 11:11)  То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали? Дальше останется только добавлять таски? vTaskStartScheduler() возвращает управление только при ошибках либо если какая-то задача принудительно останавливает планировщик, поэтому хотя бы одну свою задачу стоит создавать ДО её вызова
|
|
|
|
|
Apr 10 2015, 02:54
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Цитата(AHTOXA @ Apr 6 2015, 18:05)  Выскажусь тоже. С тех пор, как я попробовал использовать RTOS (scmRTOS) в микроконтроллерах, я делаю все проекты только с RTOS. Сейчас, когда приходится возвращаться к старым безосевым проектам для сопровождения, ужасаюсь этой мешанине коллбэков, машин состояний, конечных автоматов и вызовов их обработчиков из суперлупа  У меня такое же впечатление о FreeRTOS. Разработку очень сильно упростилась. На столько, что взял за правило делать автоматическую генерацию отчёта об ошибках. Из минусов - расход операционной памяти больше в разы. Но я успокаиваю себя тем, что делать то же самое без ОС на процессоре послабее это в наше время резьба по калу. Недавно до конца освоил спящие режимы процессора. Теперь в задаче бездействия процессор уходит в разные режимы сна в зависимости от необходимой на данный момент мин.частоты. Прерывание по таймеру RTC "заводится" на время, когда должна быть пробуждена ближайшая ждущая чего-то задача. После пробуждения системное время модифицируется, что бы задачи, в которых были таймеры, не заметили засыпания.
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
Apr 10 2015, 08:24
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(SM @ Apr 10 2015, 10:55)  Вообще, переключение контекста на 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 под что-то заточена немного смешно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|