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

 
 
8 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> Как поимать "баг" в STM32 на скорости 72 MHz?, методы поиска и устранения спонтанных и редких сбоев в работе МК
AlexandrY
сообщение Apr 25 2018, 05:47
Сообщение #31


Ally
******

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



Цитата(HardEgor @ Apr 25 2018, 08:14) *
Не всё так однозначно.
Интерфейсы есть какие-нибудь, на них защитные диоды есть, высоковольтный импульс диоды замкнут на питание, стабилизатор не успел отработать - питание подпрыгнуло.
А например RS485, на КЗ в линии, может отдавать ток до 250 мА - при кратковременном КЗ можно получить кратковременную просадку питания.

Чтобы подпрыгнуло питание от высоковольтного импульса он должен по энергии превосходить все что упоминается в стандартах на ЭМИ.
Обычных конденсаторов хватает чтобы сгладить все реальные импульсы.
А от нереальных уже что-то должно было бы сгореть. biggrin.gif
Да и быстрая просадка питания вызовет всего лишь сброс.
Если копать в питании, то надо искать медленную просадку, а потом ее причину.

В криво сделанных проектах обычно сидит по нескольку ошибок. Исходить надо из этого.
Автомобильный аккумулятор эт кстати отличная причина сбоев.
Потому что это хорошая толстая антенна для FTB импульсов.
Тут на форуме для некоторых разработчиков плат FTB настоящая мистика, которую они не могут постичь годами.
Так что не удивлюсь если после замены аккумулятора на обычный изолированный DC/DC проблемы пропадут (вернее снизится их вероятность).
Go to the top of the page
 
+Quote Post
amiller
сообщение Apr 25 2018, 06:51
Сообщение #32


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

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Кстати а сама постановка вопроса в теме предполагает, что баг проявляется только на частоте 72МГц?
А на частоте, например 60 МГц, всё хорошо?
Может в этом направлении надо копать?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 25 2018, 07:09
Сообщение #33


Гуру
******

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



Цитата(amiller @ Apr 25 2018, 09:51) *
Кстати а сама постановка вопроса в теме предполагает, что баг проявляется только на частоте 72МГц?
А на частоте, например 60 МГц, всё хорошо?

Я так понимаю, что сама постановка вопроса говорит о том, что для того чтобы код перевести на частоту 60МГц, его надо полностью переписать. Естественно тогда баги могут и пропасть. laughing.gif
Go to the top of the page
 
+Quote Post
manul78
сообщение Apr 25 2018, 08:35
Сообщение #34


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719




Добрый день !

Спасибо всем за ответы, шутки, стёб, серьёзные советы. Но тему честно говоря я поднимал ради совсем других вещей.
И пример с устройством приведён просто как пример, а не тема для обсуждения.

А вопрос-то изначально был простой, но со сложными ответами. Попытка собрать в один список алгоритм действий для разработчика,
у которого нет дикого бюджета, из аппаратуры только пара хороших компов, ноутбук, ST-Link, J-Link, цифровой осциллограф и простой
недорогой логический анализатор. Устройство которое он делает не серийное, их может быть от силы пару штук, и оно заточено под
конкретные цели - штучный товар.


Дельные ответы изо всей "воды" здесь вылитой я всё-же получил:

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

2. Сразу-же вести записи и документацию. Эдакий "бортовой журнал". Всё записывать и документировать.

3. В процессе разработки сразу предусмотреть как минимум один порт и интерфейс (UART,SPI,I2C) для отладки. Если нет места и ног - брать
более функциональный чип из серии МК.

4. В процессе написания программы предусмотреть контрольные точки и индикацию происходящих в МК процессов, чтобы поиск неисправности
не превратился в заглядывание под капот мчащегося на скорости 200 км/ч автомобиля - "всё шумит, всё крутится, ничего не понятно..."

5. ......


Далее прошу продолжить участникам данной темы, если не лень конечно...


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 25 2018, 08:45
Сообщение #35


Гуру
******

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



Цитата(manul78 @ Apr 25 2018, 11:35) *
Далее прошу продолжить участникам данной темы, если не лень конечно...

5. В каждом устройстве иметь светодиод мигающий раз в секунду если все ок.
3`. В каждом устройстве иметь отладочную консоль UART.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 25 2018, 08:49
Сообщение #36


Гуру
******

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



Цитата(manul78 @ Apr 25 2018, 11:35) *
5. ......

Как я уже писал: во все программы на Cortex-M обязательно добавлять обработку fault-ов. Это часто существенно сокращает время поиска багов в проблемах с указателями, разрушением памяти, стеков и т.п.
Также - в обязательном порядке использовать MPU по-максимуму. А на более жирных камнях - MMU. Для защиты памяти и выявления несанкционированных доступов к регионам.
И если устройства единичные и бюджет на отладочные средства ограничен, то использовать более жирные МК, например имеющие поддержку ETB. Когда из-за разрушения чего-либо выполнение программы улетело по недопустимому адресу, то с обычным J-Link найти точку в прошлом где "свернули не туда" поможет только ETB.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 25 2018, 09:13
Сообщение #37


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Всегда делаю отладочный вывод через свободный УАПП. В зависимости от #define включается более или менее подробный вывод (есть два класса debug и ndebug с одинаковыми интерфейсами):
CODE
#ifndef DEBUG_H__
#define DEBUG_H__
#include <ndebug.h>

#ifndef NDEBUG

#include <console.h>
extern console & Debug_console;
#define Debug_on Debug_console

#else
#define Debug_on Debug_off
#endif

#define Debug_CID Debug_on
#define Debug_panel Debug_on
#define Debug_panel_stream Debug_off
#define Debug_tcp Debug_off
#define Debug_lwip Debug_off
#define Debug_usb_irq Debug_off
#define Debug_usb Debug_off

#endif // DEBUG_H__

......
for(;;)
{
Debug_panel.timestamp();
Debug_panel.printf("%s panel selected\r\n", name(Panel_type));
switch(Panel_type)
{
default:
pPanel = new(&Memory_pool.Disabled) disabled_panel<input::SAMPLE_PERIOD>;
break;


Коллегам недавно понадобилось отлавливать редкий глюк в автомобильном устройстве, которое катается вместе с автомобилем и программиста-наблюдателя с ноутбуком держать круглосуточно в этом автомобиле оказалось невозможно. Сделали простейшее устройство, которое тупо весь поступаующий в его УАПП текст пишет на SD-карточку, предваряя каждую строку текста меткой времени (время считает встроенные в проц часы с батарейкой). Этот "накопитель" катается вместе с устройством, после возникновения ошибки из него извлекается SD-карточка и программист спокойно за чашечкой кофе анализирует все, что оно записало. Метки времени позволяют быстро отыскать нужное место в файле.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 25 2018, 09:43
Сообщение #38


Ally
******

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



Цитата(manul78 @ Apr 25 2018, 11:35) *
3. ... Если нет места и ног - брать более функциональный чип из серии МК.

Не "если", а сразу брать, и не "более", а самый функциональный в семействе.
Вот так будет правильнее.

Отладочный вывод в UART плохой вариант, получив два образа, один отладочный, а другой релизный только добавите себе работы по поиску отличий если ошибка будет появляться только в одном из них.
Вывод лучше делать в RTT. Тогда он может оставаться в релизном варианте и не надо будет множить образы.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 25 2018, 10:25
Сообщение #39


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(manul78 @ Apr 25 2018, 11:35) *
Далее прошу продолжить участникам данной темы, если не лень конечно...

Систему контроля версий применять. Я пользуюсь TortoiseHg.
Go to the top of the page
 
+Quote Post
-= Александр =-
сообщение Apr 25 2018, 10:46
Сообщение #40


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

Группа: Свой
Сообщений: 123
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



Цитата(ViKo @ Apr 25 2018, 13:25) *
Систему контроля версий применять. Я пользуюсь TortoiseHg.


Кстати да, тоже ей пользуюсь. Очень удобно бывает откатиться назад и проверить с какого момента начал возникать тот или иной баг. Частенько пишешь один модуль и по ходу его отладки находишь глюк совсем в другом месте, которое писано несколько дней назад и вроде как не глючило.


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 25 2018, 10:48
Сообщение #41


Ally
******

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



Цитата(-= Александр =- @ Apr 25 2018, 13:46) *
Кстати да, тоже ей пользуюсь. Очень удобно бывает откатиться назад и проверить с какого момента начал возникать тот или иной баг. Частенько пишешь один модуль и по ходу его отладки находишь глюк совсем в другом месте, которое писано несколько дней назад и вроде как не глючило.

Так это контроль истории, а не версий.
Контроль истории есть во всех продвинутых редакторах.
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Apr 25 2018, 10:48
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Через SWD можно читать регистры и память и писать в какой-нибудь лог, вот здесь обсуждали программирование, там документы перечислены и исходники есть.
Go to the top of the page
 
+Quote Post
AVI-crak
сообщение Apr 25 2018, 16:55
Сообщение #43


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

Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894



Цитата(AlexandrY @ Apr 25 2018, 16:48) *
Так это контроль истории, а не версий.
Контроль истории есть во всех продвинутых редакторах.

Назовите такой продвинутый редактор, в котором можно посмотреть состояние проекта неделю назад?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 25 2018, 17:21
Сообщение #44


Ally
******

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



Цитата(AVI-crak @ Apr 25 2018, 19:55) *
Назовите такой продвинутый редактор, в котором можно посмотреть состояние проекта неделю назад?

RAD Studio, Android Studio, Sysmac Studio, IntelliJ IDEA....
Это только те с которыми я работаю прямо сейчас.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Apr 26 2018, 07:39
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Да, в андроид студии такое есть...
Go to the top of the page
 
+Quote Post

8 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 05:29
Рейтинг@Mail.ru


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