Цитата(AlexandrY @ Jul 12 2014, 03:33)

Ну очевидно у вас проблемы электромагнитной совместимости.
...
Может конечно и такое быть. Буду иметь ввиду. Но для этого мне надо исключить софт.
Пока предыдущие 2 случая:
1) в течение суток или 2х в зависимости от ethernet нетворк траффика глохло радио на устройстве.
Оказалось что переполнялась очередь запросов на прерывание от ethernet,
radio работает через SPI (DMA & IRQ), не могло воткнуть свой запрос на обслуживание, в результате висло.
Это относительно простой случай
2) в Кокосе баг в CoWaitForSingleFlag(). Получилось при определенных условиях что задача ушла из waiting list а в ready list не попала.
Вылавливал 2 недели, сужая кольцо. Проявлялось раз в сутки в лучшем случае.
Сейчас получше, но пару раз в неделю 2-3 устройства из сотни может зависнуть.
Это не hard fault, туда уже поставил ловушку.
Цитата(Golikov A. @ Jul 12 2014, 02:15)

П.С. А киньте почитать про window watchdog пожалуйста, а то что-то сходу не нашел...
В RM008 мануале по STM32 windowed watchdog.
Цитата(jcxz @ Jul 11 2014, 23:42)

Не очень понял что это даст и как оценить - работает или нет программа?
Эти счётчики в любой момент времени могут совпадать (in и out) или различаться на >=1. Что по ним можно понять?
Если вы про отслеживание их изменений, ну и что? Зависла одна задача, зато другая - нет, она продолжает вызывать эти функции и счётчики меняются.
И какой выигрыш?
Моя идея была что надо эту мысль имплементировать так:
счетчики ставить в теле задач, не функций, тогда понятно - где не увеличивается счетчик, там проблема.
У меня кое что имплементировано:
В каждом дескрипторе задачи есть указатель на функцию и линия сурс кода.
Задача при входе в функцию обновляет глобальное имя функции и периодически номер линии.
При переключении задач та задача, которая уходит ставит в своем дескрипторе имя функции где была последний раз и линию.
То есть где они были я примерно знаю.
Так вот, можно просто проверять увеличиваются ли счетчики задач.
Кстати, у меня в дескрипторе задач счетчики уже есть, каждый раз задача переключается, они увеличиваются.
Достаточно, чтобы идентифицировать застрявшую задачу.
Цитата(jcxz @ Jul 11 2014, 23:42)

Я делаю так:...
Интересная, продуманная идея. Спасибо.
Единственно, я опасаюсь повторения ситуации, когда у меня все задачи стали изза бага в Кокосе.
Айдл правда работал.
Надо или в айдл задачу все это запихивать или в таймер, что лучше, мне кажется.
Верить нельзя никому, даже себе. Мне - можно.