-
- Разве такое не реализоване в той же FreeRtos? Перезапуск задачи в смысле... - Apтём(14.02.2014 22:12)
- Евгений, Вы (ИМХО) смотрите на следствие (т.н. "абортирование") совершенно не затрагивая его причин и последствий. Как то: почему возникла необходимость "абортирования" и каковы его последствия (чем управляем). Некоторые коллеги (в частных Chum_A(361 знак., 14.02.2014 21:42)
- Я бы сказал так, reset - он в самом конце цепочки принятия решений. Evgeny_CD(440 знак., 14.02.2014 21:49)
- Для этого существует программный ватчдог. В котором адрес (где зависли) и регистры сохраняется. - fk0(15.02.2014 00:05)
- Ну, дык, на этапе разработки "перемычку на WDT" можо и не ставить, встали в обработчик ошибок и зациклились. Записать лог перед тем, как перестать сбрасывать WDT, соб-но никто и не мешает. - Chum_A(14.02.2014 22:13)
- Я всегда был и есть сторонник перезагрузки путем подачи импульса на NE555 (обязательно использование !китайских пленочных конденсаторов), что приведет к снятию питания со всей схемы на время, достаточное для гарантированного разряда всех кондеров Evgeny_CD(3 знак., 14.02.2014 21:45)
- Ага (с), потом такие вот статьи появляются... - Chum_A(14.02.2014 22:18, ссылка)
- Я бы сказал так, reset - он в самом конце цепочки принятия решений. Evgeny_CD(440 знак., 14.02.2014 21:49)
- Вообще-то в идеологии кооператива сам длительный процесс заботится о своих собратьях и прерывает себя в случае чего средствами того же кооператива. Такшта притянуто за уши донельзя, имхо. - SciFi(14.02.2014 21:22)
- Это же размышлизма, а не код реального проекта. Просто хотелось услышать мнение опытных коллег. Однако если "процесс будет прерывать себе сам" без таймера, переполнение которого жестко вызывает действия, которые кооперативка не может изменить при Evgeny_CD(192 знак., 14.02.2014 21:27)
- Переименовали watchdog и ходите кругами :) - Скрипач(14.02.2014 22:12)
- Он вызовет перезапуск всей системы, а это не есть гут, если есть возможность перезапустить часть. - Evgeny_CD(14.02.2014 22:18)
- 98% вместо ста 8) Скрипач(125 знак., 14.02.2014 22:19 - 22:26)
- А это и будут данные для анализа - сколько и как часто висла. - Evgeny_CD(14.02.2014 22:30)
- 98% вместо ста 8) Скрипач(125 знак., 14.02.2014 22:19 - 22:26)
- Он вызовет перезапуск всей системы, а это не есть гут, если есть возможность перезапустить часть. - Evgeny_CD(14.02.2014 22:18)
- Переименовали watchdog и ходите кругами :) - Скрипач(14.02.2014 22:12)
- Это же размышлизма, а не код реального проекта. Просто хотелось услышать мнение опытных коллег. Однако если "процесс будет прерывать себе сам" без таймера, переполнение которого жестко вызывает действия, которые кооперативка не может изменить при Evgeny_CD(192 знак., 14.02.2014 21:27)
- Про спец. маллок -- бред. Ибо могут быть открыты файлы, выделены другие ресурсы. И как делать аборт знает только сам абортирующийся процесс. Или уж толстая ОС, которая всё отслеживает (и то не до конца -- временные файлы фиг удалит). - fk0(14.02.2014 19:12)
- Для этого (абортирования) существует longjmp. И исключения (в C++) или опять же longjmp (в C) для создания иллюзии исключений. В которых делается free() нужное число раз... Только не совсем поняно, зачем это прерывание функции нужно было и что fk0(57 знак., 14.02.2014 19:09)
- В моем понимании, LJUMP есть далеко не в каждом варианте прилагаемой к компилеру либы, и с переносимостью будет совсем плохо. Прерывание надо, чтобы принудительно вытеснить задачу против ее воли в кооперативной среде. - Evgeny_CD(14.02.2014 19:46)
- longjmp -- функция из стандартной библиотеки. Она даже на пиках есть. - fk0(15.02.2014 00:03)
- -> Только она разные для разных архитектур. - Evgeny_CD(15.02.2014 00:03, ссылка)
- В моём понимании, починить сломанный longjmp гораздо полезнее для переносимости, чем изобретать очередной непереносимый велосипед. - SciFi(14.02.2014 22:52)
- В иаре longjump есть? - Evgeny_CD(14.02.2014 23:01)
- Йес, сэр! - SciFi(14.02.2014 23:05)
- Тогда мой аргумент бит. (я его навскидку в доке на нешел). А для AVR у него же он есть? - Evgeny_CD(14.02.2014 23:06)
- setjmp есть, longj
ump - нет. Но контекст можно сохранить и заново восстановить(не помню как - давно пробовал). - Apтём(14.02.2014 23:38)- А это весело: нафиг нужен setjmp, если нету longjmp? - SciFi(14.02.2014 23:40)
- Тоже верно - есть и longjmp. В том же хидере. А в мануале нету, потому что как вы верно заметили Apтём(132 знак., 14.02.2014 23:47)
- А это весело: нафиг нужен setjmp, если нету longjmp? - SciFi(14.02.2014 23:40)
- Сие знание мну недоступно. Я этот ваш авр знаю только понаслышке. Щетаю его чуть менее ущербным, чем пик (тоже понаслышке), но всё равно осуждаю :-) - SciFi(14.02.2014 23:08)
- АВР совсем не ущербный. Он есть МК созданный для программирования его на языках высокого уровня Си. Не то что ПИК. Так что вы осуждайте да не переосуждайтесь. - Apтём(14.02.2014 23:41)
- Я кагбэ намекаю на раздельные адресные пространства ОЗУ и ПЗУ, а также на волшебное слово __flash или __code. Это офигенный косяк. - SciFi(14.02.2014 23:45)
- Вы ненамекаете, а прямо в глаз бьёте и на больной мозоль наступаете одновременно. Нельзя же так - надо к людям мягше и тд и тп. Apтём(435 знак., 14.02.2014 23:54)
- Я кагбэ намекаю на раздельные адресные пространства ОЗУ и ПЗУ, а также на волшебное слово __flash или __code. Это офигенный косяк. - SciFi(14.02.2014 23:45)
- АВР совсем не ущербный. Он есть МК созданный для программирования его на языках высокого уровня Си. Не то что ПИК. Так что вы осуждайте да не переосуждайтесь. - Apтём(14.02.2014 23:41)
- setjmp есть, longj
- Тогда мой аргумент бит. (я его навскидку в доке на нешел). А для AVR у него же он есть? - Evgeny_CD(14.02.2014 23:06)
- Йес, сэр! - SciFi(14.02.2014 23:05)
- В иаре longjump есть? - Evgeny_CD(14.02.2014 23:01)
- longjmp -- функция из стандартной библиотеки. Она даже на пиках есть. - fk0(15.02.2014 00:03)
- В моем понимании, LJUMP есть далеко не в каждом варианте прилагаемой к компилеру либы, и с переносимостью будет совсем плохо. Прерывание надо, чтобы принудительно вытеснить задачу против ее воли в кооперативной среде. - Evgeny_CD(14.02.2014 19:46)
- Собственно вот >> 1111111(189 знак., 14.02.2014 17:34, ссылка)
- Что-то правили или так и пошло? - Vit(14.02.2014 19:04)
- Да, это, по сути, частичная реализация написанного мной. Вопрос в том, насколько сильно оно будет замедлять процесс, т.е. как часто в коде можно это использовать. Ну и разобраться с потрохами стека и как ими управлять - это отдельное упражнение... - Evgeny_CD(14.02.2014 18:30)
- Мои поделки тормоза до 1мс и не заметят. На такую примерно задержку и рассчитывал - 1111111(14.02.2014 18:41)
- В кооперативной части проекта анализировать задержки менее 1 мс, в общем случае, не надо. Идея такая. Заточено под быстрые современные MCU с тактовой от 100 Мгц. Evgeny_CD(1942 знак., 14.02.2014 19:03)
- Мы подобную фичу делали рестартом всей виртуальной машины. Позднее оказалось что эта фича ни разу за пару лет не сработала и, при переносе в новую среду, была похерена. - Скрипач(14.02.2014 20:11)
- т.е. VM не разу не вылетела за пределы заданного окна, и заготовку на этот случай выпилили из кода нового релиза? - Evgeny_CD(14.02.2014 20:27)
- Да, watchdog ни разу не сработал. И при переезде на python эту фичу похерили. Скрипач(239 знак., 14.02.2014 20:39)
- т.е. VM не разу не вылетела за пределы заданного окна, и заготовку на этот случай выпилили из кода нового релиза? - Evgeny_CD(14.02.2014 20:27)
- Послать сообщение в задачу кооперативного потока можно чем? Если она была принудительно прервана, то должна будет восстановиться с того же места или шедулер может над ней надругаться (удалить, оставить на вкусное и т.п.). Или нет? Vit(155 знак., 14.02.2014 19:11)
- Спасибо! Сообщения посылаются, конечно же, шедулеру, который после получения управления от нижнего уровня анализирует, что произошло за истекшее время, и кому отдать управление далее. Пардон, не совсем понял - что относится к вытесняющей ОСи? - Evgeny_CD(14.02.2014 19:41)
- считаю, что да, кооперативка может не удовлетворять многим пожеланиям и требованиям, но тогда и оценка должна приводиться в этих критериях - годится для данных условий применения или нет. - Vit(14.02.2014 20:02)
- Да, не стоит кооперативку оценивать по требованиям вытесняющей :) - Evgeny_CD(14.02.2014 21:50)
- считаю, что да, кооперативка может не удовлетворять многим пожеланиям и требованиям, но тогда и оценка должна приводиться в этих критериях - годится для данных условий применения или нет. - Vit(14.02.2014 20:02)
- Спасибо! Сообщения посылаются, конечно же, шедулеру, который после получения управления от нижнего уровня анализирует, что произошло за истекшее время, и кому отдать управление далее. Пардон, не совсем понял - что относится к вытесняющей ОСи? - Evgeny_CD(14.02.2014 19:41)
- Мы подобную фичу делали рестартом всей виртуальной машины. Позднее оказалось что эта фича ни разу за пару лет не сработала и, при переносе в новую среду, была похерена. - Скрипач(14.02.2014 20:11)
- В кооперативной части проекта анализировать задержки менее 1 мс, в общем случае, не надо. Идея такая. Заточено под быстрые современные MCU с тактовой от 100 Мгц. Evgeny_CD(1942 знак., 14.02.2014 19:03)
- Мои поделки тормоза до 1мс и не заметят. На такую примерно задержку и рассчитывал - 1111111(14.02.2014 18:41)