|
|
  |
Как поимать "баг" в STM32 на скорости 72 MHz?, методы поиска и устранения спонтанных и редких сбоев в работе МК |
|
|
|
Apr 26 2018, 13:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
>> Назовите такой продвинутый редактор, в котором можно посмотреть состояние проекта неделю назад? Цитата(AlexandrY @ Apr 25 2018, 20:21)  RAD Studio, Android Studio, Sysmac Studio, IntelliJ IDEA.... . . . RAD Studio . . . редактор, а особенно броузер .... "не-дай-бог". Тупило и глюкало. Структура и состав контекстного меню - тоже "оригинально" сделана. Явно не для отладки и чтения чужого кода. IMHO. Контроль версий - Git+Tortoise (вполне комфортно работать и без Tortoise - из командной строки). Недостаток - нет сплошной номерации ревизий, как в SVN. На мой взгляд - единственный. (не столько недостаток, сколько "шаг назад", чтобы сделать несколько вперед).
|
|
|
|
|
Apr 26 2018, 14:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
. . . . а-а-а-а. В ЭТОМ смысле. Цитата(manul78 @ Apr 25 2018, 11:35)  . . . . Дельные ответы изо всей "воды" здесь вылитой я всё-же получил: 12345. . . . 5. ...... Далее прошу продолжить участникам данной темы, если не лень конечно... 5. Для поиска очень редких сбоев, полуаппаратный метод. В том числе в среде RTOS. Используете лог. анализатор (онлайновый, с возможностью просмотра движущейся "ленты". У меня - встроенный в осц-ф, 16 каналов). В критические участки кода (вектора прерываний, планировщик RTOS, флаги ошибок) ставите "ногодрыг". Если необходимо поймать комбинацию флагов, можно линии "ногодрыга" подключить на внешние схемы "И". Развертка ставится самая медленная. Если в осц-фе есть память - это также можно использовать (но это "не про меня"). Далее писать алгоритм "отлова" нет смысла, все очень индивидуально. Эта метода поможет "засечь" состояние первого сбоя, который в любом случае придется ловить вручную или наполовину вручную. При появлении сбоя - жмем на осциллографе "Stop/Freeze" и не спеша рассматриваем предисторию вылета. Цитата(AlexandrY @ Apr 26 2018, 17:07)  Так ставьте расширения GExprets, AQtime, CodeSite... и будет счастье. Все равно под десктоп ничего лучшего нет. Спасибо за инф. Посмотрим что за звери.
|
|
|
|
|
Apr 28 2018, 17:43
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(manul78 @ Apr 24 2018, 17:55)  Суть в том, что глюки начинают вылазить при оживленном траффике по сети, если запросов-ответов мало может неделями работать без проблем. нувыблиндаёте!!! Вы же нашли, можно сказать, багу и продолжаете гадать на кофейной гуще. Прибор на стол и эмулируем не то что оживленный трафик, перегруженный трафик. Во первых бага быстро появиться, во вторых вы обязаны были разработчик обязан был на столе проверить, что будет, если трафик будет перегружен.
|
|
|
|
|
Apr 29 2018, 06:50
|

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

|
Цитата(juvf @ Apr 28 2018, 20:43)  Прибор на стол и эмулируем не то что оживленный трафик, перегруженный трафик. Во первых бага быстро появиться, во вторых вы обязаны были разработчик обязан был на столе проверить, что будет, если трафик будет перегружен. Хотя звучит умно, но по факту это немного глупо. На кой нагружать трафиком если известно, что дивайс или система наверняка заглохнет при превышении определенного уровня? Что вам даст если вы зафиксируйте несколько раз этот уровень? Ошибка конечно проявится, но это будет не та ошибка! А чтобы была та, нужно именно тот трафик смоделировать. А если вы знаете именно тот трафик, то знаете и ошибку. Так что "стресс-тест" это просто семантический плеоназм в данном случае.
|
|
|
|
|
Apr 29 2018, 08:51
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(AlexandrY @ Apr 29 2018, 09:50)  Хотя звучит умно, но по факту это немного глупо. На кой нагружать трафиком если известно, что дивайс или система наверняка заглохнет при превышении определенного уровня? Т.е. - Вы считаете, что зависание или перезагрузка или улёт по неизвестному адресу выполнения при штатном обмене по интерфейсу - это вполне допустимое поведение прибора? И даже и выяснять ничего не надо? Странный у Вас подход к разработке устройств..... И что значит "не та ошибка"? Считаете, что нужно устранять только те ошибки, что сейчас кто-то заметил, а на остальные забить? А как поймёте, что "та" или "не та", какой критерий? Цитата(AlexandrY @ Apr 29 2018, 09:50)  Так что "стресс-тест" это просто семантический плеоназм в данном случае. Стресс-тест - это один из методов нагрузочного тестирования в ходе разработки и отладки безглючных устройств, которые работают всегда, при любых условиях, а не только при каких-то тепличных, настольных.
|
|
|
|
|
Apr 29 2018, 09:54
|
Знающий
   
Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450

|
Цитата(AlexandrY @ Apr 29 2018, 10:50)  На кой нагружать трафиком если известно, что дивайс или система наверняка заглохнет при превышении определенного уровня? Дивайс должен уйти во вполне определенное состояние при превышении определенного уровня и выйти из него в рабочее после нормализации обстановки. Например, пропускать только те пакеты, на которые хватает производительности канала, а в слове состояния выставить признак проблем с подключением. Или при превышении частоты ошибок прекратить общение до паузы в сигнале или появлении корректного сообщения. Почитайте описание протокола CAN, например.
|
|
|
|
|
Apr 29 2018, 14:28
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(AlexandrY @ Apr 29 2018, 11:50)  На кой нагружать трафиком если известно, что дивайс или система наверняка заглохнет при превышении определенного уровня? Чтобы попадать в баг не раз в месяц, а раз в 1 минуту (или хотя бы раз в час, как можно чаще). Чем чаще бага проявляется, тем легче её найти. Цитата Ошибка конечно проявится, но это будет не та ошибка! А чтобы была та, нужно именно тот трафик смоделировать. Согласен. Но как стоит условие задачи - "глюки начинают вылазить при оживленном траффике". Нужно на столе смоделировать оживленный трафик, а также стресс-тест. Если бы было в условии "глюки начинают вылазить при ОПРЕДЕЛЁННОМ оживленном траффике, а при другом оживленном трафике нет баги", то тут сложнее, тут да, лови и моделируй нужный трафик.
|
|
|
|
|
Apr 29 2018, 17:20
|

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

|
Цитата(novikovfb @ Apr 29 2018, 12:54)  Дивайс должен уйти во вполне определенное состояние при превышении определенного уровня и выйти из него в рабочее после нормализации обстановки. В CAN-е это аппаратно сделано, поэтому я только CAN везде и применяю. И да логируется у меня достаточно счетчиков относящихся к работе CAN. Но если я сделаю некий "стресс-тест" с хаотичными командами, то система подвиснет, лог будет переполнен, даже могут возникнуть конструктивные повреждения, сработает WDT И че я выясню в результате? Попробуйте "стресс-тест" провести где нить в сети промышленных логических контроллеров. Тоже получите катастрофу. Опять же применив некую симуляцию запредельного трафика можно просто ввести устройство в ступор и при этом вообще ничего реально тестироваться не будет. Т.е. сделать грамотное нагрузочное тестирование очень сложно во первых, а во вторых оно не для выявления ошибок, а скорее для тестирования риалтайма систем.
|
|
|
|
|
Apr 30 2018, 05:45
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(AlexandrY @ Apr 29 2018, 20:20)  Опять же применив некую симуляцию запредельного трафика можно просто ввести устройство в ступор и при этом вообще ничего реально тестироваться не будет. Это только говорит о том, что данное устройство неправильно спроектировано. Никакая комбинация входных данных (валидных или просто мусора) с любой частотой повторения на внешних интерфейсах не должна вводить устройство в состояние ступора либо любое другое нерабочее состояние. Если это не так - это кривое устройство и надо переделывать. Как то так. Всегда следую данному правилу. Да и по внутренним интерфейсам устройства - например если у меня есть SPI-FLASH в устройстве, но обращение к ней идёт не часто, то для теста (обнаружения редко проявляющихся непериодических сбоев как у ТС), я нагружаю данный интерфейс транзакциями чтения/записи по самое нехочу. Например - создаю несколько задач ОС, которые параллельно обращаются к этому интерфейсу со случайными запросами чтения/записи случайной длины и адресом, так чтобы загрузка CPU при такой работе была близка к максимальной. Гоняю этот тест несколько часов с общим объёмом траффика во много ГБ. И одновременно с этим устройство должно продолжать выполнять свои штатные функции. Вот если за время такого теста сбоев не было - значит всё ок. Иначе - разбираюсь, пока не устраню причину.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|