-
- BTW, у FreeRTOS есть posix-подобная обертка. - LightElf(22.10.2019 11:17)
- "Не нравится - не ешь !" (c) Простите, не выспался и нервный с утра. Мне проще с таск-свитчерами (ИМХО до ОСи оно не доросло). По сути вопроса - есть несколько изделий а FreeRTOS, и на упоминавшейся ниже CrossWorks-овской CTL. 3-5 процессов, не Сидоргек(251 знак., 21.10.2019 08:16)
- Не аргументы, а лозунги. Извини, такое впечатление, что ты не выспался и нервный с утра:) - Vit(21.10.2019 09:05)
- Главный аргумент: пробовал "с" и "без", "с" мне понравилось бОльше. Для меня - аргумент достаточный (не выспался и нервный). Далее - "жизненная" история: Сидоргек(1240 знак., 21.10.2019 15:29 - 15:32)
- Герой. Может, и сам бы так сделал. Но для начала не постеснялся бы отладчиком разглядеть соплезависон, а не делать концептуальные выводы:) - Vit(21.10.2019 15:45)
- Имел дело с двумя разными тюнерами. У одного был "код", написанный студентом-троечником, начавшим осваивать погромизм. У другого вроде бы нормальными кодерами, но, очевидно, в спешке "хуяк-хуяк - и в продакшн". - SciFi(21.10.2019 15:35)
- Ха! Я раз наткнулся на коммент, что-то типа "ну почему на С нельзя писАть так же легко и просто, как на Верилоге?" !!!!! Они посадили вариложника писАть на С !!!! Сразу стало ясно, почему там в каждой второй функции использовалось 15-20 локальных Сидоргек(54 знак., 21.10.2019 15:41)
- Дык поэтому и NDA. Чтобы срамоту не светить на весь мир. - SciFi(21.10.2019 15:46)
- Есть такая теория, в курсАх. - Сидоргек(21.10.2019 15:50)
- :) - Vit(21.10.2019 15:47)
- Дык поэтому и NDA. Чтобы срамоту не светить на весь мир. - SciFi(21.10.2019 15:46)
- Ха! Я раз наткнулся на коммент, что-то типа "ну почему на С нельзя писАть так же легко и просто, как на Верилоге?" !!!!! Они посадили вариложника писАть на С !!!! Сразу стало ясно, почему там в каждой второй функции использовалось 15-20 локальных Сидоргек(54 знак., 21.10.2019 15:41)
- Главный аргумент: пробовал "с" и "без", "с" мне понравилось бОльше. Для меня - аргумент достаточный (не выспался и нервный). Далее - "жизненная" история: Сидоргек(1240 знак., 21.10.2019 15:29 - 15:32)
- Не аргументы, а лозунги. Извини, такое впечатление, что ты не выспался и нервный с утра:) - Vit(21.10.2019 09:05)
- В моем случае - два и более чужих долгоиграющих пакета (GUI + FS), которые должны шевелиться параллельно. Если такой пакет один, то автоматы в прерывания, и ОС не нужна. - VLLV(18.10.2019 10:38)
- А какой гуй используете? - Andreas(18.10.2019 10:46)
- Делал пяток подходов за 20лет.Для себя сделал вывод , ЭТО нужно только для разделения труда нескольких программеров одного большого проекта.Причем они должны быть больными на голову и не суметь сами среди себя выделить ведущего который родит PlainUser(387 знак., 18.10.2019 07:19)
- Ну и зачем ведущему писать свой планировщик, когда он уже написан давно? - Mebius(23.10.2019 15:37)
- ну вот смотри, делал я как-то несколько лет назад проект средних размеров. вертолёт Mahagam(2523 знак., 18.10.2019 18:31)
- А на каком железе это всё крутилось? Что-то прям монструозное у вас. - Звероящер(22.10.2019 09:29)
- CTL (CrossWorks Tasking Library) Written in plain, portable C, Complete source code, No per-product or other runtime royalty, Fully documented - Dingo(20.10.2019 08:50, ссылка)
- Могуч! bnb62(115 знак., 18.10.2019 22:46)
- ага, я как представлю, сколько всего писать чисто для того чтобы оно крутилось всё вместе. ненене, я по-старинке, с вытеснялкой. там же вообще просто: создал функцию, в ней сделал while(1){тут хреначим код; в конце sleep(N);}. в main`е просто Mahagam(255 знак., 18.10.2019 22:57)
- Да ты гонишь! Так делать вертолёт очень опасно. Арбитр автономных процессоров, и тот - с тройным резервированием :-) Но, всяко впечатляет смелость и умелость. (.)-изюминка (А.Лебедев) - bnb62(18.10.2019 23:12 - 23:33)
- Соглашусь, система конечных автоматов, хоть и нудная, но сюрпризов не принесёт. - fk0(19.10.2019 00:27)
- "сюрпризов не принесёт" - если написана без ошибок. ИМХО код каждой отдельно взятой задачи гораздо боле читаем чем нагромождения конечных автоматов, и ошибку в ём видно за километр. - Сидоргек(21.10.2019 08:33)
- Ровно наоборот. Конечные автоматы подразумевают ЯВНОЕ выделение всех возможных состояний программы (как множества состояний системы взаимосвязанных автоматов) и ЯВНОЕ определение событий ведущих к смене состояний, а так же ЯВНОЕ выделение действий fk0(2071 знак., 21.10.2019 22:37)
- про стек отвечу просто - мне кроме memcpy да memset из стандартной библиотеки ничего не требовалось вообще. ну математика была нужна. sin cos pow tan sqrt и тому подобное. malloc`ов тоже небыло. соответственно ни утечек памяти, ни отказа в её Mahagam(174 знак., 21.10.2019 23:26)
- Как запустить параллельную систему КА написано у Шалыто лет 20 тому назад. Впрочем и самому додуматься можно. Тема уже изъезженная вдоль и поперёк. Там другая существенная проблема: большая латентность. Я поэтому, где-то ниже по теме, и предлагаю fk0(1021 знак., 22.10.2019 10:46)
- походу, тему настолько уже изъездили вдоль и поперёк, что особо ничего кроме вытесняющей многозадачности и не предлагается на рынке. все эти CTLи, FreeRTOSы, uCOSы, eCOSы и иже с ними - одной жопы ягодицы. - Mahagam(22.10.2019 14:16)
- Какая вообще связь многопоточности и автоматного программирования? Одно не является противопоставлением другому, для начала. Система автоматов может существовать и в многопоточной системе, равно как и классический говнокод в однозадачной системе. fk0(352 знак., 23.10.2019 00:19)
- я не в курсе много чего. с теоретической подготовкой у меня плоховато, к сожалению. и я даже не представляю, как написать многоавтоматную программу с требованиями реалтаймовости без использования вытесняющей многозадачности. зато с этой самой Mahagam(387 знак., 23.10.2019 01:21)
- Я научу :) В прерывание по таймеру (и/или основной цикл) ... дальше продолжать? ... , включаются функции сервиса каждого автомата, в которой анализируются входные данные и принимается решение о смене состояния автомата и управлении другими VLLV(229 знак., 23.10.2019 03:29)
- а если внутри сервиса - тоооолстое вычисление? постоянно думать "а не пролюблю ли я прерывание?". или как? - Mahagam(23.10.2019 12:52)
- Если ОДНО толстое вычисление, то оно ставится в основной цикл. Тема двух и более долгоиграющих вычислений уже раскрыта выше. - VLLV(23.10.2019 13:52)
- а почему прерывание можно пролюбить ? если при вычислении пришло прерывание, зашли в него, поставили в очередь задачу на обработку и пошли дальше считать, по завершению вычислений обработали прерывание. Это если тайминг отработки прерывания не Aleksey_75(69 знак., 23.10.2019 13:02)
- получается кооперативная переключалка с отложенными вычислениями. это пишется более сложно, чем вытесняющая многозадачность. - Mahagam(23.10.2019 13:05)
- да гдеж сложность то ? у меня такая переключалка (хоть по таймеру, хоть по завершению предведущей задачи) занимает ~200 строк кода с бооольшими отступами (люблю я так на код смотреть))) - Aleksey_75(23.10.2019 13:07)
- Буря в стакане. Большинство задач достаточно тривиальны, их можно решить множеством разных способов, кто как привык. Если задача нетривиальна, можно подбирать более удобный инструмент. Обобщения тут не очень уместны, КМК. - SciFi(23.10.2019 13:07)
- получается кооперативная переключалка с отложенными вычислениями. это пишется более сложно, чем вытесняющая многозадачность. - Mahagam(23.10.2019 13:05)
- Это разве не кооперативный планировщик называется? - ant333(23.10.2019 07:33)
- Это классический биглуп :) - Ruslan(23.10.2019 10:57)
- Без переключения контекста? Не знаю, но это точно не RTOS - VLLV(23.10.2019 09:08)
- а если внутри сервиса - тоооолстое вычисление? постоянно думать "а не пролюблю ли я прерывание?". или как? - Mahagam(23.10.2019 12:52)
- Я научу :) В прерывание по таймеру (и/или основной цикл) ... дальше продолжать? ... , включаются функции сервиса каждого автомата, в которой анализируются входные данные и принимается решение о смене состояния автомата и управлении другими VLLV(229 знак., 23.10.2019 03:29)
- я не в курсе много чего. с теоретической подготовкой у меня плоховато, к сожалению. и я даже не представляю, как написать многоавтоматную программу с требованиями реалтаймовости без использования вытесняющей многозадачности. зато с этой самой Mahagam(387 знак., 23.10.2019 01:21)
- Какая вообще связь многопоточности и автоматного программирования? Одно не является противопоставлением другому, для начала. Система автоматов может существовать и в многопоточной системе, равно как и классический говнокод в однозадачной системе. fk0(352 знак., 23.10.2019 00:19)
- походу, тему настолько уже изъездили вдоль и поперёк, что особо ничего кроме вытесняющей многозадачности и не предлагается на рынке. все эти CTLи, FreeRTOSы, uCOSы, eCOSы и иже с ними - одной жопы ягодицы. - Mahagam(22.10.2019 14:16)
- Как запустить параллельную систему КА написано у Шалыто лет 20 тому назад. Впрочем и самому додуматься можно. Тема уже изъезженная вдоль и поперёк. Там другая существенная проблема: большая латентность. Я поэтому, где-то ниже по теме, и предлагаю fk0(1021 знак., 22.10.2019 10:46)
- про стек отвечу просто - мне кроме memcpy да memset из стандартной библиотеки ничего не требовалось вообще. ну математика была нужна. sin cos pow tan sqrt и тому подобное. malloc`ов тоже небыло. соответственно ни утечек памяти, ни отказа в её Mahagam(174 знак., 21.10.2019 23:26)
- Хм, стало быть КА не имеют права на жизнь без RTOS. Зачем тогда они существуют? В моем понимании, именно из-за понятной логики переходов, в отличие от кода с множеством флагов. Может, лучше высыпаться, а не постить спорные вещи в злобе? ;) - VLLV(21.10.2019 08:57)
- Логика переходов в КА понятна ровно до того момента, пока в эту логику не пытаешься впихнуть ожидание кучи разных событий неблокируемым способом, после этого логика превращается в "тыкву", которую хрен поймёшь. ОСь позволяет неблокируемость =AlexD=(143 знак., 21.10.2019 11:48)
- От "впихивания ожидания кучи событий" логика КА не разваливается. Просто автомат разрастается до очень большого числа состояний. На самом деле, "куча событий", как мне думается, подразумевает систему параллельных автоматов, где каждый работает fk0(152 знак., 21.10.2019 22:42)
- Не понимаю я вот этого противопоставления потоки vs КА. КА внутри потоков работающие строго по блокируемым системным вызовам - наш путь, не? - =AlexD=(22.10.2019 06:10)
- Да, примерно об этом я и думаю. Что систему КА можно запускать параллельно, на пуле потоков, по выбирая готовые к запуску по мере наличия интересующих конкретные КА событий (это важный момент, т.к. планировщик избавляет от важной проблемы Big fk0(3286 знак., 22.10.2019 11:16)
- Ага. и называется кооперативная ОС. В минимально возможном варианте, как я понял. - symbions(22.10.2019 07:46)
- Не понимаю я вот этого противопоставления потоки vs КА. КА внутри потоков работающие строго по блокируемым системным вызовам - наш путь, не? - =AlexD=(22.10.2019 06:10)
- Совершенно неочевидное утверждение. К вершине графа состояний сколько угодно ребер подходить может, откуда там сразу тыква? - s_h_e(21.10.2019 12:16)
- Вы говорите об автомате уровнем выше. Вместо переключения контекста с помощью ОС он может принудительно менять состояние управляемого автомата. VLLV(568 знак., 21.10.2019 12:11)
- PT_WAIT_UNTIL(pt, condition1() && condition2() && condition3()); - SciFi(21.10.2019 11:56)
- Для контроллера
курятникаумного дома - отличный вариант. - =AlexD=(22.10.2019 06:12)- Это старопердунизм :-) - SciFi(22.10.2019 09:52)
- +1 - evgeniy1294(21.10.2019 11:58)
- Для контроллера
- От "впихивания ожидания кучи событий" логика КА не разваливается. Просто автомат разрастается до очень большого числа состояний. На самом деле, "куча событий", как мне думается, подразумевает систему параллельных автоматов, где каждый работает fk0(152 знак., 21.10.2019 22:42)
- Логика переходов в КА понятна ровно до того момента, пока в эту логику не пытаешься впихнуть ожидание кучи разных событий неблокируемым способом, после этого логика превращается в "тыкву", которую хрен поймёшь. ОСь позволяет неблокируемость =AlexD=(143 знак., 21.10.2019 11:48)
- Ровно наоборот. Конечные автоматы подразумевают ЯВНОЕ выделение всех возможных состояний программы (как множества состояний системы взаимосвязанных автоматов) и ЯВНОЕ определение событий ведущих к смене состояний, а так же ЯВНОЕ выделение действий fk0(2071 знак., 21.10.2019 22:37)
- "сюрпризов не принесёт" - если написана без ошибок. ИМХО код каждой отдельно взятой задачи гораздо боле читаем чем нагромождения конечных автоматов, и ошибку в ём видно за километр. - Сидоргек(21.10.2019 08:33)
- Соглашусь, система конечных автоматов, хоть и нудная, но сюрпризов не принесёт. - fk0(19.10.2019 00:27)
- Да ты гонишь! Так делать вертолёт очень опасно. Арбитр автономных процессоров, и тот - с тройным резервированием :-) Но, всяко впечатляет смелость и умелость. (.)-изюминка (А.Лебедев) - bnb62(18.10.2019 23:12 - 23:33)
- ага, я как представлю, сколько всего писать чисто для того чтобы оно крутилось всё вместе. ненене, я по-старинке, с вытеснялкой. там же вообще просто: создал функцию, в ней сделал while(1){тут хреначим код; в конце sleep(N);}. в main`е просто Mahagam(255 знак., 18.10.2019 22:57)
- Интересная задача... но реально Ось нужна для этого? Не вижу где бы некая РТОСина была бы незаменима в данном контексте. Есть какие-то подробности, как к такому пришлось придти? - POV_(18.10.2019 22:29, )
- РТОСина может и не незаменима, но с ней тупо проще. В текущем проекте у меня 7 процессов, которым за счет приоритетов и вытеснения не нужно знать друг о друге. В недавно законченном проекте было было три процесса, асинхронность выполнения трех AlexG(52 знак., 19.10.2019 08:35)
- "ней тупо проще" +100500 - Сидоргек(21.10.2019 08:36)
- Ну, я от оси ожидал достаточного абстрагирования от железа. Как у взрослых операционок. А тут по сути окромя параллельных задач и нет ничего. 20 лет без этого как-то обходился. - POV_(19.10.2019 11:09, )
- Зачем ожидать от ОСи то, что тебе не нужно (абстрагирование от железа)? Для взрослой ОСи, которая притворяется железоабстрагированной полюбому нужно писать драйвер привилегированного режима и библиотеку пользовательского режима, что как-бэ сводит =AlexD=(317 знак., 21.10.2019 08:50)
- В моем случае абстрагирование от железа или не требуется или обеспечивается другими средствами. - AlexG(19.10.2019 11:21)
- РТОСина может и не незаменима, но с ней тупо проще. В текущем проекте у меня 7 процессов, которым за счет приоритетов и вытеснения не нужно знать друг о друге. В недавно законченном проекте было было три процесса, асинхронность выполнения трех AlexG(52 знак., 19.10.2019 08:35)
- Всем ниже ответившим спасибо за мнения. - POV_(18.10.2019 10:09, )
- Проекты могут дорабатываться, модернизироваться, сопровождаться длительное время. Программисты могут увольнятся. Как говориться лучше плохой юрист чем никакого. - misyachniy(18.10.2019 08:24)
- Может капают, чтобы можно было параллелить разработку и исключить/уменьшить "фактор автобуса"? - Dingo(18.10.2019 06:10 - 07:08)
- У нас это трамвайный фактор называется. - PlainUser(18.10.2019 07:20)
- Выскажу ещё раз: FreeRTOS сырая недоделка, смысла особого, без реализации ряда перечисленного (см. ниже) не имеет и, хуже того, наоборот вносит существенные ограничения для программиста. Если бы стояла задача выбрать ОС для МК, то я бы скорей fk0(12815 знак., 18.10.2019 02:15, ссылка)
- "микроконтроллерные" ОС - это обычно ОС типа "Microkernel" там все сервисы связанные с файловой системой и прочими нетворками отсутствуют сознательно, для уменьшения размера ядра. Про несовместимость с libc - согласен, неудобно. Поэтому стараюсь Mebius(223 знак., 23.10.2019 15:32)
- Спасибо! - Shatun_(21.10.2019 12:24)
- Справедливости для vau(264 знак., 18.10.2019 17:10)
- Спасибо. Любопытно. Есть моменты для обсуждения. Событийная система в кооперативном варианте Quantum Leaps проложена, но приоритетов не видел. Vit(2746 знак., 18.10.2019 14:36)
- Спасибо! Одни идеи уже немало дают. Dingo(156 знак., 18.10.2019 17:24 - 17:35)
- По поводу атомарных операций и условных переменных - согласен. Именно с них нужно начинать проектирование планировщика ОС. =AlexD=(522 знак., 18.10.2019 12:00)
- Спасибо - evgeniy1294(18.10.2019 11:24)
- Спасибо! Шикарно написано! - Evgeny_CD(18.10.2019 07:27)
- Спасибо! Основательно. Есть ли наброски или может планируете? По приоритетам из своего (недокооперативка): Dingo(1082 знак., 18.10.2019 05:59 - 06:44)
- Для простого связывания большого количества разнородных задач, что ускоряет -> удешевляет разработку. Многим лень писать нормальный конечный автомат и они пихают ось просто чтобы писать что-то типа: evgeniy1294(59 знак., 17.10.2019 23:44)
- Только стека не напасешься. Таких простеньких задач в большом проекте может быть больше сотни. - fk0(18.10.2019 00:28)
- Индусов это не останавливает - evgeniy1294(18.10.2019 10:09)
- Только стека не напасешься. Таких простеньких задач в большом проекте может быть больше сотни. - fk0(18.10.2019 00:28)