Dr Zlo
Не, я решил что на оси с резьбой или с зубчатой рейкой буду делать.
рейка в такой точной работе слишком неравномерна
Dr Zlo
есть хороший вариант с двойными ремнями, который на чпу часто используется
Dr Zlo
правда он кем-то запатентован, потому используется только в диайваях всяких)
Dr Zlo
нижний ремень приклеен к основанию
SetPf
Здравствуйте. Есть какой нибудь IDFшный способ при исключении синхронно накидать в COM и после этого уже свалится?
SetPf
Ну кроме кастомного драйвера конечно.
SetPf
Не, это читал. Я имел ввиду уровнем повыше и с собственной реализацией вывода.
Yuriy
Не, это читал. Я имел ввиду уровнем повыше и с собственной реализацией вывода.
так это оно и есть \https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/kconfig.html#config-esp32-coredump-to-flash-or-uart
SetPf
так это оно и есть \https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/kconfig.html#config-esp32-coredump-to-flash-or-uart
Я тогда в упор не вижу, где можно пару строк текста личного выкинуть =\
Andy
Я тогда в упор не вижу, где можно пару строк текста личного выкинуть =\
В смысле хотите свою обработку событий паники?
SetPf
В смысле хотите свою обработку событий паники?
Скорее свой собственный креш. Когда удалось поймать до креша или уже видно, что что то не то совершенно. Что бы остановить все, слогировать место и причину, вывалится в резет.
SetPf
Типо статик ассерта в проде =)
SetPf
Переменных каких записать и тп.
SetPf
Там во встроенном вывод переменных только при наличии GDB же возможен.
SetPf
Так вот да
SetPf
пары строк с стоянием переменных ?
пары строк при каких конкретно обстоятельствах грохнулось
Anonymous
Здравствуйте как поместить xml код в переменную string ?
Andy
Так вот да
Т.е. останавливает только необходимость в GDB?
Anonymous
В нем имеются символы "
SetPf
Т.е. останавливает только необходимость в GDB?
Ну так это же не на случай отладки во время разработки. А на случай если это грохнется в рабочей обстановке и никакого ГДБ в помине не будет.
SetPf
Так то я логированием кидаю все в уарт или теленет.
SetPf
А так - словил аварийное состояние. Записал куда надо в деталях и перезагрузился с чистой совестью.
Anonymous
<?xml version="1.0"?> Как ето поместить в переменную ?
SetPf
<?xml version="1.0"?> Как ето поместить в переменную ?
char example[] = "<?xml version=\"1.0\"?>";
SetPf
а сбрасывать дамп во флэеш?
В идеале я бы хотел конечно на SD, на флеш тоже сойдет =\
SetPf
Потом можно прочитать и уже на SD кинуть
Anonymous
char example[] = "<?xml version=\"1.0\"?>";
Символ " закрывает строку
SetPf
Символ " закрывает строку
Поэтому он защищается бэкслешем
Anonymous
Ок
SetPf
И еще такой момент. Я родной кордамп не разу не видал. Он у меня включен и выводит в UART
SetPf
SetPf
SetPf
Все что вылезает.
Alexey
Попытка залезть куда-то нетуда в рам. В системе уже предусмотрены макросы для обращения к регистрам в "soc.h". REG_WRITE(_r, _v), REG_READ(_r)
Alexey
Из-за такой ошибки не будет кор дампа. Через free легко сгенерировать ошибку с дампом
Alexey
ну и в менюконфиге должен быть включен вывод дампа в уарт
SetPf
Из-за такой ошибки не будет кор дампа. Через free легко сгенерировать ошибку с дампом
Однако это очень частая ошибка. В плане если опдобным образом нельзя свалится с логом. Вопрос. Вот мне в функцию приходит херня, функция имеет проверку и это замечает. Че мне с этим делать? Писать кучу возвратов и проверок, логирований? (как собственно у меня и сейчас). Или просто записать (я функция такая то, получила некое дерьмо при таких обстоятельства, пошло оно все к черту, ухожу в ребут).
Alexey
можно же асерт на аргументы использовать. Или написать свой со всякими там __FILE, __LINE
romanetz
А-ля стм32 )))
romanetz
Там куча ассертов и хард фолт прерывание
romanetz
Когда всё плохо
SetPf
С ассертом далеко не разгуляешься же, он только в уарт какой выводит?
Alexey
который подключен к stdio
SetPf
который подключен к stdio
Ну вот ключевой момент, что надо не в лог писать, а сохранять куда.
Alexey
пишем свой асерт, вместо вывода в уарт пишем на флешку, например, потом ребут или хальт
SetPf
Вооо =)
SetPf
Я примерно про это и спрашивал изначально.
SetPf
Конкретно интересует вопрос - как все остановить, что бы ничего не рыпалось, пока оно все выполняет
Alexey
idf_components/esp32 там смотрим panic.c, esp_assert.h и черпаем идеи )
SetPf
такая фигня.
romanetz
Типа, только хедер есть, а функция - в .a?
SetPf
Да, хидер нашел, а Сфайла нет.
SetPf
Чет я думаю, легче голову не морочить. В кастомном обработчике создать таск с высшим приоритетом и там все делать.
Alexey
Да это все и не нужно. Например, смотрим esp_err.h макро ESP_ERROR_CHECK. Можно создать похожий макрос только в нем поменять __ASSERT_FUNC на что-то свое. Далее уже в этой своей функции использовать примеры из panic.c чтобы остановить ядра, напечатать в уарт/флешку, ребутнуться/остановиться
Ivansuper
Кстати пока тут вопросы вокруг таких тем обсуждаются, спрошу свое -- как вызвать halt?
Ivansuper
Без ребута без всего, в нужном месте застопорить CPU
SetPf
В теории грохнуть все ватчдоги и запретить прерывания.
Ivansuper
Выше упомнули panic.c, в нем есть abort() с asm break. Но я пока не нашел хедер к нему
Alexey
Кстати пока тут вопросы вокруг таких тем обсуждаются, спрошу свое -- как вызвать halt?
открываем panic.c там функция commonErrorHandler занимается такими вещами
Ivansuper
открываем panic.c там функция commonErrorHandler занимается такими вещами
Но мне не ошибку ловить. Просто остановить
Alexey
ну дак код то можно оттуда позаимствовать
Alexey
а потом уже решить при каких условиях вызвать этот код
SetPf
Я вот его ща смотрю. И такое ощущение, что фриртос останавливается до.
SetPf
Может я чего то не допонимаю...
SetPf
Ништяк =)
SetPf
Спасибо.
Anton
Добрый вечер всем. Подскажите пожалуйста. ESP-01 прошил EspEasy Mega. После того, как зарегистрировал ЕSP в локальной сети (выдан Ipшник), она перестала отображаться в списке сетевых устройств. Но по ip адресу получается заходить на веб еспэшки. Это нормально? Как ее сделать видимой?
Anton
Сорри за глупые вопросы) только начал осваивать сей чудный девайс)