-
- Вот Микриум заявляет о какой то сертификации на ответственные применения. Кто нить разбирался что эта сертификация означает кроме соответствия стиля написания всяким МИСРАм? - ASDFS(26.11.2013 19:53)
- это делают не оськи а MMU. мы например во FreeRTOS для ARMа включаем - для прикладных программистов, конечно гемор, когда они не могут брать все, что захотят без спроса, но устойчивость работы и скорость отладки повышается - ыыыыыыы(26.11.2013 16:04, )
- Я имел в виду сервис по мониторингу глубины заюзанного стека. Понятно что без аппаратной поддержки пресекать злостный выход за пределы стека невозможно. - ASDFS(26.11.2013 19:09)
- это про память, ну а по поводу "залочки" : вращение приоритетов только в uC/OS наверно отсутствует (да и то не уверен) это называется priority inheretance или priority rotation - ыыыыыыы(26.11.2013 16:14, )
- Отсутствует и не только у uCOS. Потому как накладно это, приоритеты наследовать и решить можно другими путями. - Apтём(26.11.2013 16:36 - 16:38)
- в простейшем случае (<32 приоритетов) это одно слово в контексте и проверка ждущих задач в переключателе - очень небольшой оверхед - ыыыыыыы(26.11.2013 17:31, )
- Мне как-то кажется, простейшие случаи -- это чего-то вроде protothreads, что далеко от реальной жизни. Это надо перетряхнуть очередь ожидающих (их там 100500). Кому-то поднять приоритет (перятряхнуть ещё дцать очередей после чего, где найденный fk0(47 знак., 26.11.2013 18:04)
- ну так для этого и ограничивают <32, чтобы путем логических операций and/or и т.п. эта процедура имела минимальное время. protothread я увы не пользовал, но учитывая, что это пришло из "больших" компьютеров предполагаю, что там сложнее - ыыыыыыы(26.11.2013 18:13, )
- Причём тут ассемблер. Очередь -- это скорей binary heap уже отсортированный по приоритету. И нужное где-то в середине, поиск за O(N) (или ещё как-то по критерию адреса упорядочивать дополнительно -- затраты на каждый чих в два-три раза выше, fk0(1247 знак., 26.11.2013 18:39)
- Чего-то переусложняете вы. Наследование приоритетов как раз очень просто реализовывается и время выполнения там фиксированное. Оверхед - один-два байта в структуре мутекса (исходный приоритет текущего владельца мутекса и нынешний приоритет). LightElf(132 знак., 27.11.2013 09:18)
- выступлю за противный :) лагерь: если в нашем случае (с задачами 1,2,3) во время ожидания задачей 3 семафора, произошло событие и запустились задачи 4,5 (приоритеты 5>4>3) и 5 задача полезла за тем же семафором, после завершения задачи 1 (уже с 5 ыыыыыыы(332 знак., 27.11.2013 15:54, )
- не-не-не, после освобождения семафора его старому владельцу просто возвращается свой приоретет. aoreh(298 знак., 27.11.2013 16:01)
- ну так вопрос в том, когда 5 закончилась, а 3 продолжает ждать, какой приоритет у 1, держащий 3? и вот зачем нужна была 4. если оставить 5 приоритет, то нарушение приоритетов - 4 задача ждет 3, если вернуть 1, то "залочка" с 3,2 - ну как-то так - ыыыыыыы(27.11.2013 16:44, )
- охблин, шой-то ты намудрил... aoreh(543 знак., 27.11.2013 16:54)
- Прямой ответ на твой вопрос... когда 5-я закончилась, у 1-й уже давным давно родной (низкий) приоритет aoreh(117 знак., 27.11.2013 16:57)
- охблин, шой-то ты намудрил... aoreh(543 знак., 27.11.2013 16:54)
- Долго тут обсуждать, работать нужно. Если вкратце, то проблема наследования известна и исследована и есть общее мнение, что наследование ресурсоёмко. Есть полно публикаций на тему. Поэтому есть альтернативные способы вроде вроде priority ceiling. fk0(93 знак., 27.11.2013 16:27)
- я с этим не спорю, пытаюсь объяснить ыыыыыыыыы как работает обозначенный выше вариант - aoreh(27.11.2013 17:01)
- ну так вопрос в том, когда 5 закончилась, а 3 продолжает ждать, какой приоритет у 1, держащий 3? и вот зачем нужна была 4. если оставить 5 приоритет, то нарушение приоритетов - 4 задача ждет 3, если вернуть 1, то "залочка" с 3,2 - ну как-то так - ыыыыыыы(27.11.2013 16:44, )
- не-не-не, после освобождения семафора его старому владельцу просто возвращается свой приоретет. aoreh(298 знак., 27.11.2013 16:01)
- выступлю за противный :) лагерь: если в нашем случае (с задачами 1,2,3) во время ожидания задачей 3 семафора, произошло событие и запустились задачи 4,5 (приоритеты 5>4>3) и 5 задача полезла за тем же семафором, после завершения задачи 1 (уже с 5 ыыыыыыы(332 знак., 27.11.2013 15:54, )
- в ecos (с которой я имел больший опыт) хорошо объясняется как делать жесткий реалтайм с комфортом - смысл в том, что для разных классов задач (в одном приложении) доступны разные API сервисов синхронизации: ISR имеет жесткие ограничения, DSR имеет ыыыыыыы(627 знак., 26.11.2013 19:13, )
- Чего-то переусложняете вы. Наследование приоритетов как раз очень просто реализовывается и время выполнения там фиксированное. Оверхед - один-два байта в структуре мутекса (исходный приоритет текущего владельца мутекса и нынешний приоритет). LightElf(132 знак., 27.11.2013 09:18)
- Причём тут ассемблер. Очередь -- это скорей binary heap уже отсортированный по приоритету. И нужное где-то в середине, поиск за O(N) (или ещё как-то по критерию адреса упорядочивать дополнительно -- затраты на каждый чих в два-три раза выше, fk0(1247 знак., 26.11.2013 18:39)
- а если к этому добавить что может быть целая каша из всего этого, то случай может оказаться совсем не простейшим... - aoreh(26.11.2013 18:07)
- ну так для этого и ограничивают <32, чтобы путем логических операций and/or и т.п. эта процедура имела минимальное время. protothread я увы не пользовал, но учитывая, что это пришло из "больших" компьютеров предполагаю, что там сложнее - ыыыыыыы(26.11.2013 18:13, )
- Как-то вы упрощаете...Или нет? Не представил короче... - Apтём(26.11.2013 17:51)
- Мне как-то кажется, простейшие случаи -- это чего-то вроде protothreads, что далеко от реальной жизни. Это надо перетряхнуть очередь ожидающих (их там 100500). Кому-то поднять приоритет (перятряхнуть ещё дцать очередей после чего, где найденный fk0(47 знак., 26.11.2013 18:04)
- в простейшем случае (<32 приоритетов) это одно слово в контексте и проверка ждущих задач в переключателе - очень небольшой оверхед - ыыыыыыы(26.11.2013 17:31, )
- От залочки оно не поможет. - fk0(26.11.2013 16:38)
- обрисуйте мне схему залочки, плиз. может мы о разном? - ыыыыыыы(26.11.2013 17:27, )
- если речь об инверсии, то, как пример... aoreh(549 знак., 26.11.2013 17:38)
- Это не залочка. Залочка (взаимоблокировка, deadlock) от приоритетов вообще не зависит, это когда A ждёт B, а B ждёт A. Можно ещё ввести в дело C, D... но сути уже не меняет. Возникает обычно при программировании из головы, без этапа fk0(70 знак., 26.11.2013 17:59, ссылка)
- я ниже на это ответил, если _специально_ постараться, то изгадить можно что угодно - ыыыыыыы(26.11.2013 18:03, )
- ну так посмотрите, что означает термин, три названия которого тут приведены: для этого примера это значит, что задача 1 получает приоритет равный задаче 3 пока не отдаст семафор - ыыыыыыы(26.11.2013 17:47, )
- А вот как вы выразились "залочка" - это когда задача 1 захватила ресурс, в этот меомент вытесняется задачей 2, которая хватает другой ресурс и входит в ожидание ресурса блокированного 1-й, в этот момент управление возвращается 1-й задаче и она aoreh(143 знак., 26.11.2013 17:56)
- еще на 0 делить можно, ну или с железкой писать в управляющие регистры случайные числа (хотя ММE от этого помагает) - есть таймауты, если думать лень/ну или слишком сложно и нужно патчить а не думать, ну а вообще есть обычно некоторый датафлоу из ыыыыыыы(79 знак., 26.11.2013 18:07, )
- На ноль делить НУЖНО, если числа не целочисленные. А если у вас не делится на ноль -- нужно сжечь компилятор и его авторов. fk0(320 знак., 26.11.2013 18:22)
- уважаемый, вы суть проблемы понимаете или нет? если вы разрабатываете свой новый девайс с 2-3-я задачами, то все отлично, если вам необходимо, н-р, поддерживать чей-то код с 25-30 потоками, который +- отлажен и много лет работает, то как минимум aoreh(339 знак., 26.11.2013 18:13)
- да вот как раз поддерживается, в примере с FreeRTOS поддерживается старый код, который с жестким реалтаймом и большими вычислительными затратами, при этом все еще обвешано перделками/свистелками типа TCP/IP, дисков и т.п. - ыыыыыыы(26.11.2013 18:21, )
- Во FreeRTOS эта проблема решается наследованием приоритетов, это значит, что разработчики FreeRTOS понимали и знали о существовании такой вещи, как инверсия приоритетов, поэтому и учли - aoreh(26.11.2013 18:32)
- да вот как раз поддерживается, в примере с FreeRTOS поддерживается старый код, который с жестким реалтаймом и большими вычислительными затратами, при этом все еще обвешано перделками/свистелками типа TCP/IP, дисков и т.п. - ыыыыыыы(26.11.2013 18:21, )
- еще на 0 делить можно, ну или с железкой писать в управляющие регистры случайные числа (хотя ММE от этого помагает) - есть таймауты, если думать лень/ну или слишком сложно и нужно патчить а не думать, ну а вообще есть обычно некоторый датафлоу из ыыыыыыы(79 знак., 26.11.2013 18:07, )
- Нет, термин значит, что задача с высоким приоритетом (3) ждет завершения задачи с более низким (2), хотя она даже и не блокирует ресурс нужный 3 - налицо поднятие приоритета задачи 2 выше задачи 3. Инверсия - общеупотребительный термин - aoreh(26.11.2013 17:53)
- А вот как раз если поднять приоритет задачи 1 до уровня задачи 3 - вопрос решится сам собой - aoreh(26.11.2013 17:59)
- ну а как Вы думаете? что rtos-ы пишут идиоты, а интелектуалы на сахаре флудят :))) - ыыыыыыы(26.11.2013 18:02, )
- я думаю, что у вас проблемы с терминологией - остальное сильно зависит от конкретной ос - aoreh(26.11.2013 18:03)
- ну а как Вы думаете? что rtos-ы пишут идиоты, а интелектуалы на сахаре флудят :))) - ыыыыыыы(26.11.2013 18:02, )
- предполагаем, что у нас rtos не кооперативная, то есть срабатывает висящий на таймере шедулер - войдет он в задаче 2 а выйдет в 1 и будет отдавать ей управление до тех пор пока она не отдаст семафор - так понятнее? - ыыыыыыы(26.11.2013 17:58, )
- на самом деле шедулер сработает при вызове семафора в задаче 3, то есть в 2 вообще управление не попадет, но с таймером вроде понятнее - ыыыыыыы(26.11.2013 18:00, )
- щедулер сработает как только понадобится активность в 3 выполнение додет до заблокированного ресурса и задача отправится в отстойник ожидать высвобождения, а выйдет из щедулера в след. по приоритету -в 2. aoreh(116 знак., 26.11.2013 18:02)
- ну не бывает такого - приведите пример несамопальной ртос где НЕ так. разве что в uC/OS :) да и то я ее лет 20 назад юзал, может уже добавили - ыыыыыыы(26.11.2013 18:16, )
- Читал книгу Jean J. Labrosse (автор uC/OS) в момент существования первых версий -- там проблема инверсии приоритетов рассматривалась и её решения тоже. - fk0(26.11.2013 18:27)
- да вот я тоже читал (давно уже) и по-моему решения описывались, но в коде этого не было. но в этом я не уверен - ыыыыыыы(26.11.2013 18:33, )
- а книжка дельная, как введение с 0. не смотря даже на то, что автор реднек :) - ыыыыыыы(26.11.2013 18:35, )
- как введение с 0 неплох мануал к embos. с картинками:) - Vit(26.11.2013 18:37)
- а книжка дельная, как введение с 0. не смотря даже на то, что автор реднек :) - ыыыыыыы(26.11.2013 18:35, )
- да вот я тоже читал (давно уже) и по-моему решения описывались, но в коде этого не было. но в этом я не уверен - ыыыыыыы(26.11.2013 18:33, )
- Читал книгу Jean J. Labrosse (автор uC/OS) в момент существования первых версий -- там проблема инверсии приоритетов рассматривалась и её решения тоже. - fk0(26.11.2013 18:27)
- ну не бывает такого - приведите пример несамопальной ртос где НЕ так. разве что в uC/OS :) да и то я ее лет 20 назад юзал, может уже добавили - ыыыыыыы(26.11.2013 18:16, )
- щедулер сработает как только понадобится активность в 3 выполнение додет до заблокированного ресурса и задача отправится в отстойник ожидать высвобождения, а выйдет из щедулера в след. по приоритету -в 2. aoreh(116 знак., 26.11.2013 18:02)
- с каких это делов если у задачи 2 приоритет более высокий? - aoreh(26.11.2013 18:00)
- на самом деле шедулер сработает при вызове семафора в задаче 3, то есть в 2 вообще управление не попадет, но с таймером вроде понятнее - ыыыыыыы(26.11.2013 18:00, )
- А вот как раз если поднять приоритет задачи 1 до уровня задачи 3 - вопрос решится сам собой - aoreh(26.11.2013 17:59)
- А вот как вы выразились "залочка" - это когда задача 1 захватила ресурс, в этот меомент вытесняется задачей 2, которая хватает другой ресурс и входит в ожидание ресурса блокированного 1-й, в этот момент управление возвращается 1-й задаче и она aoreh(143 знак., 26.11.2013 17:56)
- Это не залочка. Залочка (взаимоблокировка, deadlock) от приоритетов вообще не зависит, это когда A ждёт B, а B ждёт A. Можно ещё ввести в дело C, D... но сути уже не меняет. Возникает обычно при программировании из головы, без этапа fk0(70 знак., 26.11.2013 17:59, ссылка)
- если речь об инверсии, то, как пример... aoreh(549 знак., 26.11.2013 17:38)
- обрисуйте мне схему залочки, плиз. может мы о разном? - ыыыыыыы(26.11.2013 17:27, )
- инверсия приоритетов это - Mahagam(26.11.2013 16:28)
- да, в разных осах оно по разному называется - по-моему в ecos и rtems инверсия. - ыыыыыыы(26.11.2013 17:28, )
- что значит по-разному называется? нельзя инверсию приоритетов назвать иначе как инверсия приоритетов. а взаимоблокировки это совершенно иное. - Mahagam(26.11.2013 17:43)
- понятно, что есть еще логические блокировки (ну то есть они заложены при проектировании) - ну если лень думать при проектировании - во всех синхронизациях есть возможность поставить таймауты и смотреть статус - ыыыыыыы(26.11.2013 17:55, )
- термин неудачный - почему инверсия? низкоприоритетная задача временно получает высокий приоритет - что тут инверсируется? - ну и конкретно FreeRTOS www.freertos.org/Real-time-embedded-RTOS-mutexes.html - ыыыыыыы(26.11.2013 17:50, )
- Приоритет инвертируется. - fk0(26.11.2013 18:05)
- что значит по-разному называется? нельзя инверсию приоритетов назвать иначе как инверсия приоритетов. а взаимоблокировки это совершенно иное. - Mahagam(26.11.2013 17:43)
- да, в разных осах оно по разному называется - по-моему в ecos и rtems инверсия. - ыыыыыыы(26.11.2013 17:28, )
- Отсутствует и не только у uCOS. Потому как накладно это, приоритеты наследовать и решить можно другими путями. - Apтём(26.11.2013 16:36 - 16:38)
- Для этого ОС не нужна. Понимаю, закат солнца вручную... Против FreeRTOS у меня сильно предубеждение, после того как прочитал, что TLS у них нет и библиотека C там, практически -- минное поле с граблями. Как с такими особенностями её (FreeRTOS) fk0(2024 знак., 26.11.2013 15:49, youtube)
- А разве переключение _impure_ptr при переключении контекста задачи при установленном макросе configUSE_NEWLIB_REENTRANT не делает CRT привязанной к каждой задаче? - VVB(27.11.2013 06:33)
- Ключевое слово -- newlib. Мы же про FreeRTOS и абстрактную (пусть от контроллера проф. уровня) libc. А этот ваш newlib -- жалкая поделка финских студентов (redhat), всем известно. - fk0(27.11.2013 11:36)
- Ну пойми, у каждой вещи свои назначение, приминение и ограничения. Но это не значит, что ее нельзя пользовать и без ТЛС нельзя жить - aoreh(27.11.2013 12:10 - 12:30)
- Ключевое слово -- newlib. Мы же про FreeRTOS и абстрактную (пусть от контроллера проф. уровня) libc. А этот ваш newlib -- жалкая поделка финских студентов (redhat), всем известно. - fk0(27.11.2013 11:36)
- А можно для несведущих, что такое TLS применительно к RTOS? - aoreh(26.11.2013 16:58)
- Thread local storage? Наверное... - Apтём(26.11.2013 17:01)
- Похоже... Ну, честно говоря, я бы не сказал, что без этого прям невозможно использовать FreeRTOS - aoreh(26.11.2013 17:21)
- В FreeRTOS и честный TLS реализовать нетрудно и обойтись без него - тоже не проблема. Каждому потоку при старте передается указатель pvParameters. Собственно он и есть маленький TLS. Замена для malloc тоже есть (heap_x.c). В общем проблемы LightElf(18 знак., 27.11.2013 09:09 - 09:31)
- Есть два подхода к многозадачности. Полная изоляция процессов -- у каждого свой контекст, свой набор переменных, стек и т.п. Это реализуется в unix и там ничего не нужно. Среди RTOS для МК можно отметить nuttx. Есть подход ecos-style практикуемый fk0(1416 знак., 26.11.2013 18:13)
- +100500 - plainuser(27.11.2013 13:19)
- Если используете чужую либу, то понятно, но опять-таки, если я правильно понимаю, ее придется подправить, как мин. подобавлять везде thread и перекомпилить или нет? А вот со своим полностью не согласен, иначе как работают системы построенные без aoreh(144 знак., 26.11.2013 18:19)
- Вот я и не понимаю, как работают системы без чудес. Не иначе как чудодейственным образом. Ведь прекрасно понятно, почему они работать не могут. Из чего делаю вывод, что работают они в условиях "мы библиотечные функции не используем" и до поры, до fk0(9 знак., 26.11.2013 18:42)
- ну а если эти самые библиотечные функции и нафик не упали? то как быть? - Mahagam(26.11.2013 21:58)
- ни о чем.... - aoreh(26.11.2013 19:15)
- Ну вот объясни, как оно работает, когда два потока одновременно вызывают malloc() ? Скажешь УМВР? Не о чём говорить с адептами RTOS'ов которые даже не знают как у них эти RTOS'ы (не)работают. - fk0(26.11.2013 20:11)
- Не о чем говорить с человеком, который не понимает, что malloc в частности и куча в целом никакого отношение к TLS не имеет, но утверждает, что без него никак... - aoreh(26.11.2013 20:38)
- само по себе thread в разных кмопиляторах выглядит по разному, разными ОС поддерживается по разному, в той же винде есть тонкости в разных версиях по использованию этой фишки в длл. Это что касается статик-линк версии, динамическое так вообще aoreh(137 знак., 27.11.2013 11:33 - 11:49)
- От компилятора потоки не зависят. Нужна только поддержка в libc. Как IAR, Keil и др. не знаю. В "больших" ОС всё есть. В более-менее серьёзных RTOS своя libc или её часть (или хотя бы берут newlib) где предусмотрена многопоточность. Собственно от fk0(222 знак., 27.11.2013 11:54)
- т.е. возвращаемся к тому, что если ОС нормальная и библиотека многопоточная, то можно об TLS не знать? aoreh(292 знак., 27.11.2013 12:02)
- Многопоточная библиотека в своей реализации опирается на TLS и это принципильно. А самому о TLS можно и не знать, если оно не нужно в своих задачах. TLS-переменная может просто глобальной переменной, не обязательно регистром процессора и т.п. - fk0(27.11.2013 13:15)
- Вдогонку. Глобальной переменной может быть только для одноядерных микроконтроллеров (коих пока большинство). - fk0(27.11.2013 13:29)
- В итоге спор получился ни о чем... правда может кому будет полезен с точки зрения просвещения... Я раньше не знал, что в самих компилляторах есть поддержка TLS переменных (__thread в GCC), правда пока так и не понял насколько она стандартизирована aoreh(205 знак., 27.11.2013 13:24 - 13:27)
- Многопоточная библиотека в своей реализации опирается на TLS и это принципильно. А самому о TLS можно и не знать, если оно не нужно в своих задачах. TLS-переменная может просто глобальной переменной, не обязательно регистром процессора и т.п. - fk0(27.11.2013 13:15)
- т.е. возвращаемся к тому, что если ОС нормальная и библиотека многопоточная, то можно об TLS не знать? aoreh(292 знак., 27.11.2013 12:02)
- От компилятора потоки не зависят. Нужна только поддержка в libc. Как IAR, Keil и др. не знаю. В "больших" ОС всё есть. В более-менее серьёзных RTOS своя libc или её часть (или хотя бы берут newlib) где предусмотрена многопоточность. Собственно от fk0(222 знак., 27.11.2013 11:54)
- Не о чём говорить с человеком, который не понимает, что malloc устанавливает переменную errno, которую без TLS ну никак не сделать. - fk0(27.11.2013 01:55)
- О Боже и как же мы раньше маллок использовали без столько ценной переменной.... - aoreh(27.11.2013 11:30)
- Использовали как обычно. Но странно не понимать, что это ломает работающие в соседнем потоке математические функции из math.h, где без errno бывает не обойтись. - fk0(27.11.2013 11:37)
- А свой malloc/new написать не выход разве? Который учтывает многозадачность? Apтём(263 знак., 27.11.2013 02:11)
- Задача стандартная -- делаем сразу свой процессор с аппаратным TLS... - fk0(27.11.2013 11:38, ссылка)
- О Боже и как же мы раньше маллок использовали без столько ценной переменной.... - aoreh(27.11.2013 11:30)
- само по себе thread в разных кмопиляторах выглядит по разному, разными ОС поддерживается по разному, в той же винде есть тонкости в разных версиях по использованию этой фишки в длл. Это что касается статик-линк версии, динамическое так вообще aoreh(137 знак., 27.11.2013 11:33 - 11:49)
- Не о чем говорить с человеком, который не понимает, что malloc в частности и куча в целом никакого отношение к TLS не имеет, но утверждает, что без него никак... - aoreh(26.11.2013 20:38)
- Ну вот объясни, как оно работает, когда два потока одновременно вызывают malloc() ? Скажешь УМВР? Не о чём говорить с адептами RTOS'ов которые даже не знают как у них эти RTOS'ы (не)работают. - fk0(26.11.2013 20:11)
- Вот я и не понимаю, как работают системы без чудес. Не иначе как чудодейственным образом. Ведь прекрасно понятно, почему они работать не могут. Из чего делаю вывод, что работают они в условиях "мы библиотечные функции не используем" и до поры, до fk0(9 знак., 26.11.2013 18:42)
- Я бы тоже не сказал что существенно. Но у fk0 видимо есть аргУменты про TLS. Он даже их кажется приводил...но я не помню где... - Apтём(26.11.2013 17:49)
- Похоже... Ну, честно говоря, я бы не сказал, что без этого прям невозможно использовать FreeRTOS - aoreh(26.11.2013 17:21)
- Thread local storage? Наверное... - Apтём(26.11.2013 17:01)
- А разве переключение _impure_ptr при переключении контекста задачи при установленном макросе configUSE_NEWLIB_REENTRANT не делает CRT привязанной к каждой задаче? - VVB(27.11.2013 06:33)
- FreeFros стек контроллирует, но такой контроль в любую ось можно добавить самому. - Apтём(26.11.2013 15:25)
- Может FreeRTOS? А то FreeFros не нашел такой. - ASDFS(26.11.2013 15:30)
- Точно, опшибся...:) - Apтём(26.11.2013 15:32)
- И ось целиком можно написать самому. Речь о продуманных проверенных готовых решениях. - ASDFS(26.11.2013 15:28)
- Целиком - долго. - Apтём(26.11.2013 15:33)
- Если ограничиться шедулером и наплевать на сервисы - то за пару дней неторопясь. - ASDFS(26.11.2013 15:41)
- Без сервисов? Оно такое надо? Смысл в такой недо-оси? - Apтём(26.11.2013 15:43)
- А какие сервисы даёт ОС? Типичная embedded RTOS ничего не даёт. Загрузку программ -- никак. Упрвление памятью -- кое-как. Ввод-вывод -- скорей никак. Параллельное исполнение -- обычно да. Примитивы синхронизации, взаимодействие процессов -- fk0(225 знак., 26.11.2013 15:56)
- MPU? А подробнее с этого места можно? - ASDFS(26.11.2013 16:42)
- Вы сами написали: параллельное исполнение, взаимодействие процессов - события, мьютексы, очереди, сообщения. А остальное в МК не очень и нужно. - Apтём(26.11.2013 16:01)
- Очереди делаются и без ОС, да и мьютексы тоже -- это типично user level штука, на самом-то деле (в libpthread спрятанная, да, там есть поддержка ОС, но это из-за вытеснения и многоядерности). Остальное очень даже нужно... в первую очередь fk0(94 знак., 26.11.2013 16:41)
- в первую очередь нужны приоритеты задач. как это забубенить без вытесняющей многозадачки? - Mahagam(26.11.2013 16:47)
- Приоритеты скорей не нужны. Приоритеты нужны либо когда CPU не хватает и становится актуальным, кто больше проработает (быстрей прореагирует, если очень realtime). Но в типичном embedded проекте CPU редко когда используется на 100%, да и реалтайм fk0(290 знак., 26.11.2013 18:20)
- да как-то всегда требовался жёсткий реалтайм. без приоритетов - ну никак. Mahagam(44 знак., 26.11.2013 22:00)
- наверно Вам это действительно нужно. но очень часто жесткий риалтайм закладывается просто из-за отметания даже попыток разнести масштабы времени (и допустимых отклонений). т.е. вместо проектирования ПО зачем-то сразу Vit(414 знак., 26.11.2013 23:18)
- А зачем для lwIP вообще отдельный поток делать? оно вроде даже в примерах (кроме варианта с) идет без всякой многопоточности. aoreh(83 знак., 26.11.2013 23:34)
- Да как бы при наличии собственно стека нужно хоть блинкать для приличия:), и та же FS это только драйвер для чего-то полезного. А это уже многозадачность. Не обязательно вытесняющая, но тут речь о ней. Vit(770 знак., 27.11.2013 00:48)
- Посмотрю, спасибо. - aoreh(27.11.2013 12:08)
- Да как бы при наличии собственно стека нужно хоть блинкать для приличия:), и та же FS это только драйвер для чего-то полезного. А это уже многозадачность. Не обязательно вытесняющая, но тут речь о ней. Vit(770 знак., 27.11.2013 00:48)
- А зачем для lwIP вообще отдельный поток делать? оно вроде даже в примерах (кроме варианта с) идет без всякой многопоточности. aoreh(83 знак., 26.11.2013 23:34)
- наверно Вам это действительно нужно. но очень часто жесткий риалтайм закладывается просто из-за отметания даже попыток разнести масштабы времени (и допустимых отклонений). т.е. вместо проектирования ПО зачем-то сразу Vit(414 знак., 26.11.2013 23:18)
- да как-то всегда требовался жёсткий реалтайм. без приоритетов - ну никак. Mahagam(44 знак., 26.11.2013 22:00)
- а может не нужны? - Vit(26.11.2013 17:28)
- тогда не используйте их. всегда ваш, К.О. - Mahagam(26.11.2013 17:44)
- за полнейшей ненадобностью не использую:) - Vit(26.11.2013 17:57)
- тогда не используйте их. всегда ваш, К.О. - Mahagam(26.11.2013 17:44)
- Приоритеты скорей не нужны. Приоритеты нужны либо когда CPU не хватает и становится актуальным, кто больше проработает (быстрей прореагирует, если очень realtime). Но в типичном embedded проекте CPU редко когда используется на 100%, да и реалтайм fk0(290 знак., 26.11.2013 18:20)
- в первую очередь нужны приоритеты задач. как это забубенить без вытесняющей многозадачки? - Mahagam(26.11.2013 16:47)
- Очереди делаются и без ОС, да и мьютексы тоже -- это типично user level штука, на самом-то деле (в libpthread спрятанная, да, там есть поддержка ОС, но это из-за вытеснения и многоядерности). Остальное очень даже нужно... в первую очередь fk0(94 знак., 26.11.2013 16:41)
- А какие сервисы даёт ОС? Типичная embedded RTOS ничего не даёт. Загрузку программ -- никак. Упрвление памятью -- кое-как. Ввод-вывод -- скорей никак. Параллельное исполнение -- обычно да. Примитивы синхронизации, взаимодействие процессов -- fk0(225 знак., 26.11.2013 15:56)
- Без сервисов? Оно такое надо? Смысл в такой недо-оси? - Apтём(26.11.2013 15:43)
- Если ограничиться шедулером и наплевать на сервисы - то за пару дней неторопясь. - ASDFS(26.11.2013 15:41)
- Целиком - долго. - Apтём(26.11.2013 15:33)
- Может FreeRTOS? А то FreeFros не нашел такой. - ASDFS(26.11.2013 15:30)