реклама на сайте
подробности

 
 
> Logging. Какие опции, Как изловить трудно повторяющийся баг
A. Fig Lee
сообщение Jul 11 2014, 15:24
Сообщение #1


Знающий
****

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



Народ, а че вы делаете чтобы изловить once in a while событие.
Например есть у нас ОС, и вот раз в пару дней система выпадает в осадок и не отвечает.
Что делать?
Опции:
1) иметь наружный дополнительный контроллер с питанием от батарейки, ножки которого дергать периодически из задач ОС.
Контроллер будет писать какая задача заткнулась. Сложно, муторно, надо делать плату и прикручивать к основной.
2) Использование battery backed RAM, писать инфо туда. Хорошо, когда есть еще риал тайм клок.
Чтоб время писать.
3) Использование вотчдога, только как определить что именно заткнулось?
В айдл таск проверять счетчики и смотреть, какая задача вылетела?
По вотчдогу писать в EEPROM?

Как вы вылавливаете баги?


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jekin
сообщение Jul 11 2014, 15:33
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 9-09-07
Из: Минск
Пользователь №: 30 406



Я при решении подобных проблем делаю трассировку с помощью ULINKpro. Позволяет писать пока не закончится свободное место на жестком диске компьютера.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jul 11 2014, 17:32
Сообщение #3


Знающий
****

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



Цитата(Jekin @ Jul 11 2014, 11:33) *
Я при решении подобных проблем делаю трассировку с помощью ULINKpro. Позволяет писать пока не закончится свободное место на жестком диске компьютера.

Рассматриваем случай когда устройство уже в экплуатации или тестируется, без внешних соединений, в рабочей остановке

Цитата(jcxz @ Jul 11 2014, 11:51) *
Чего именно Вы хотите? Обнаруживать повисание определённых задач (а-ля позадачный вотчдог)?

Наверное. Периодически могут сказать, что устройство перестало работать. Почему перестало, как найти проблему.
Для hard fault сделал запись в EEPROM, при тесте работало.
Hard fault-a не было, почему "перестало работать" не понятно.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 12 2014, 07:33
Сообщение #4


Ally
******

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



Цитата(A. Fig Lee @ Jul 11 2014, 20:32) *
Рассматриваем случай когда устройство уже в экплуатации или тестируется, без внешних соединений, в рабочей остановке


Наверное. Периодически могут сказать, что устройство перестало работать. Почему перестало, как найти проблему.
Для hard fault сделал запись в EEPROM, при тесте работало.
Hard fault-a не было, почему "перестало работать" не понятно.


Ну очевидно у вас проблемы электромагнитной совместимости.
Здесь надо углублятся в железо. Анализировать трассировку, расположение разъемов и компонентов на плате и т.д.
Если вам конечно нужно решить проблему, а не найти причину. wink.gif

На моей практике проблемы с ЭМС часто приводили к защелкиванию внутренней периферии, тогда никакие WDT и прочие ухищрения не срабатывают. Бывает происходит сброс, а узел осциллятора уже не живой, не стартует программа.
Бывает сам кристал уходит в аут и не заводится при определенных погодных условиях.
Нельзя сбрасывать со счетов радиацию. Радиация сильнее вблизи массивных металических объектов и гранитных, мраморных массивов.
Клавиатура без защитных заземленных контуров идеальный осточник статических пробоев, процессоры виснут мертво.
Специфический дребезг вызванный ЭМИ на линях I2C, SPI, UART и проч. вызывает мертвое подвисание периферийных модулей.
И проч.

В любом случае на этапе инициализации не должно быть глухих циклов ожидания чего-то, должны быть отработаны сценарии ухода на альтернативные логи при зависании любого генератора или осциллятора.

В этом плане опасней были микроконтроллеры от NXP со всяким встроенным в ROM вспомогательным фирмваре.
Наиболее защищены от таких неприятностей чипы от Freescale, с несколькими внешними осцилляторами, несколькими внутренними и несколькими независимыми WDT.
И их операционка MQX уже сверху донизу оборудована логами, не надо перепахивать ядро RTOS чтобы еще что нибудь залогить.

Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 13 2014, 05:26
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Jul 12 2014, 13:33) *
Нельзя сбрасывать со счетов радиацию. Радиация сильнее вблизи массивных металических объектов и гранитных, мраморных массивов.

Хм.... А если ваш девайс висит на гранитной стене, рядом с которой проехал Абрамс, то получаем тройной удар:
гранит + стальной массив + включения обеднённого урана. И тогда совсем кранты smile3009.gif
Отседова вывод: на подступах к девайсу необходима установка противотанковых ежей.

Цитата(AlexandrY @ Jul 12 2014, 13:33) *
Специфический дребезг вызванный ЭМИ на линях I2C, SPI, UART и проч. вызывает мертвое подвисание периферийных модулей.

Во-во! Как раз сейчас наш железячник борется с подобным на I2C при воздействии наносекундных помех. И пока безуспешно... sad.gif

Цитата(AlexandrY @ Jul 12 2014, 13:33) *
Наиболее защищены от таких неприятностей чипы от Freescale, с несколькими внешними осцилляторами, несколькими внутренними и несколькими независимыми WDT.

Мы в своих устройствах всегда в обязательном порядке ставим внешний WDT.

Цитата(A. Fig Lee @ Jul 12 2014, 17:26) *
Надо или в айдл задачу все это запихивать или в таймер, что лучше, мне кажется.

Тут косяк тока в том, что если к примеру какая-то задача X зациклилась в некоем цикле без вызова функций ожидания ОС (100% загрузка CPU),
а в этот момент контролировалась другая задача Y (имеющая приоритет ниже чем у X), то reset произойдёт, но как проблемная будет обозначена задача Y, а не X.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 13 2014, 05:28
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Jul 13 2014, 09:26) *
Во-во! Как раз сейчас наш железячник борется с подобным на I2C при воздействии наносекундных помех. И пока безуспешно... sad.gif

А ведь это задача не одного только железячника. Порой и программисту нужно подергать SCL, чтоб все вернулось в исходное состояние на шине.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- A. Fig Lee   Logging. Какие опции   Jul 11 2014, 15:24
|- - A. Fig Lee   Цитата(AlexandrY @ Jul 12 2014, 03:33) Ну...   Jul 12 2014, 11:26
||- - AlexandrY   Цитата(A. Fig Lee @ Jul 12 2014, 14:26) П...   Jul 12 2014, 12:34
||- - A. Fig Lee   Цитата(AlexandrY @ Jul 12 2014, 08:34) Ош...   Jul 12 2014, 13:52
- - jcxz   Цитата(A. Fig Lee @ Jul 11 2014, 21:24) Н...   Jul 11 2014, 15:51
- - Golikov A.   если есть возможность FRAM поставить, то можно на ...   Jul 11 2014, 18:18
|- - A. Fig Lee   Цитата(Golikov A. @ Jul 11 2014, 14:18) е...   Jul 11 2014, 19:29
||- - kolobok0   Цитата(A. Fig Lee @ Jul 11 2014, 23:29) ....   Jul 11 2014, 19:52
|||- - A. Fig Lee   Цитата(kolobok0 @ Jul 11 2014, 15:52) был...   Jul 11 2014, 20:39
|||- - kolobok0   Цитата(A. Fig Lee @ Jul 12 2014, 00:39) Я...   Jul 11 2014, 22:47
||- - kolobok0   Цитата(A. Fig Lee @ Jul 11 2014, 23:29) ....   Jul 11 2014, 20:20
|- - jcxz   Цитата(Golikov A. @ Jul 12 2014, 00:18) Е...   Jul 12 2014, 03:42
- - kolobok0   Цитата(A. Fig Lee @ Jul 11 2014, 19:24) Н...   Jul 11 2014, 18:59
- - andrewlekar   Как-то пока отлавливается всё логами и натурными э...   Jul 11 2014, 19:46
- - Golikov A.   Цитата128 байт, FRAM нет, правда есть место во фла...   Jul 11 2014, 20:06
- - Golikov A.   Общие функции вызываемые всеми будут иметь флаги о...   Jul 12 2014, 06:15


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 19:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016