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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32F407VET6. Свистопляска с HardFault-ами, Бесстстемные исключения HardFault
nanorobot
сообщение Dec 29 2015, 11:05
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Может ли быть одной из причин HardFault износ ресурса флэш памяти? Имею макет с STM32F407VET6. Количество перезаписей солидное. Последнее время участилтсь случаи хардфаулта. ПРи вызове одной и той же прцедуры и в одной и той же ситуации - может быть, а может не бытью Под отладчиком редко, а без него практически всегда...
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 29 2015, 11:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Что есть "солидное" число? 100? 1000? 10000? 100000? 1000000?
Опять же, нужно сделать обработчик hard fault, собрать всю имеющуюся информацию и точно установить причину.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Dec 29 2015, 16:03
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(scifi @ Dec 29 2015, 17:22) *
Что есть "солидное" число? 100? 1000? 10000? 100000? 1000000?
Опять же, нужно сделать обработчик hard fault, собрать всю имеющуюся информацию и точно установить причину.

солидное число- чисто прикидочно 1000-1500. Обработчик сделан. Из зслуживающей(на мой взгляд) вничания инфрмвции имеем следующее:
в регистре UFSR(старшие 16 бит регистра CFSR) наиболее часто установлен бит INVSTATE, значительно реже имеем установленным бит UNDEFINSTR.
всегда только один из них. Регистр HFSR всегда имеет установленным бит FORCED. При пошаговой отладке однажды было замечено, что ХФ происходит
при выполнении невинной строки типа(последняя строка)

Код
bool ok;
uint16_t count;
uint16_t ChannelCount;
...
...
...

whille (!ok && (++count < ChannelCount))


Сообщение отредактировал nanorobot - Dec 29 2015, 16:05
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 29 2015, 16:46
Сообщение #4


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

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



Строку, содержащую whille никак нельзя назвать невинной rolleyes.gif
В ХФ улетает на конкретной ассемблерной команде. Вот ее надо найти, и крепко задуматься, отчего.
Go to the top of the page
 
+Quote Post
mantech
сообщение Dec 29 2015, 17:15
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(nanorobot @ Dec 29 2015, 19:03) *
солидное число- чисто прикидочно 1000-1500.


Писал и по 5000 раз - все нормально. Чип - VGT - тот, что на дискавери ставят. Сделайте подсчет контрольной суммы флеша, и сравнение с тем, что грузите, для того, чтобы убедиться, что не в нем проблема...

Сообщение отредактировал mantech - Dec 29 2015, 17:17
Go to the top of the page
 
+Quote Post
AndrejM
сообщение Dec 30 2015, 04:12
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 20-11-13
Пользователь №: 79 278



возьмите другую плату да проверьте.
у меня есть тоже запиленная до дыр discovery f429 , и подобные же спецэффекты не так давно начали проявляться , проблема судя по всему по питанию , ибо если на 0.1 V подать больше , то все работает.
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 30 2015, 05:11
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(nanorobot @ Dec 29 2015, 19:03) *
солидное число- чисто прикидочно 1000-1500.

Это совсем не солидное число.
Кстати, раз уж об этом зашла речь, там условия записи во флеш могут быть разные. В даташите написано "parallelism", напряжение питания. Если не соблюдать, то теоретически может недозаписаться. Или если стирание оборвали сбросом раньше времени. Тогда возможны плавающие биты. Но их можно обнаружить.
Go to the top of the page
 
+Quote Post
AlanDrakes
сообщение Dec 31 2015, 16:04
Сообщение #8


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

Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474



Так же порекомендую проверить потребление питания. Возможно, задуматься о дополнительном питании (прямо на ножки питания 3V) от внешней LM1117-3.3 и тому подобных.
Похожая ситуация:
Контроллер посажен на АКБ -> LM1117 -> работает.
Контроллер посажен на БП (5V 2A) -> LM1117 -> Случайные сбросы и отказы программироваться.

Так же можно проверить ёмкости на плате.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jan 4 2016, 21:52
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(AlanDrakes @ Dec 31 2015, 21:04) *
Так же можно проверить ёмкости на плате.


Исключил из процедуры вызов библиотечной функцмм pow() - заменил самописаной - наваждение прошло...
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 4 2016, 22:57
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(nanorobot @ Jan 5 2016, 00:52) *
Исключил из процедуры вызов библиотечной функцмм pow() - заменил самописаной - наваждение прошло...

А осадок остался.
Причина не найдена, что, скорее всего, означает, что глюк вернётся снова.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jan 5 2016, 09:02
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(scifi @ Jan 5 2016, 03:57) *
А осадок остался.
Причина не найдена, что, скорее всего, означает, что глюк вернётся снова.

... накаркал. Типовая ситуация - в UFSR взводится бит INVSTATE, об'яснение из дефинитив гуиде - attempts to switch to an invalid state (e.g. ARM) - мож подтолкнете в верном направлении?

самое что убивает - при пошаговой отладке глюк практически никогда не воспроизводится
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 5 2016, 11:03
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(nanorobot @ Jan 5 2016, 12:02) *
... накаркал. Типовая ситуация - в UFSR взводится бит INVSTATE, об'яснение из дефинитив гуиде - attempts to switch to an invalid state (e.g. ARM) - мож подтолкнете в верном направлении?

Подталкиваю: нужно расшифровать всю информацию, доступную обработчику Hard Fault. Вычислить адрес инструкции, на которой проц спотыкается, посмотреть, что там.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jan 5 2016, 11:49
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(scifi @ Jan 5 2016, 16:03) *
Подталкиваю: нужно расшифровать всю информацию, доступную обработчику Hard Fault. Вычислить адрес инструкции, на которой проц спотыкается, посмотреть, что там.

ощутил едва уловимый толчок...))

Сообщение отредактировал nanorobot - Jan 5 2016, 11:50
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jan 5 2016, 13:15
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(nanorobot @ Jan 5 2016, 12:49) *
ощутил едва уловимый толчок...))

К какой точке приложения? wink.gif.
TC: так где расчипятка актуального дампа hardfault? Если определится адрес слёта, берем карту памяти компоновщика, ищем, что там поблизости искомого адреса, находим тело функции. Потом можно под отладчиком там остановиться (даже если при этом не сгенерится исключение) и посмотреть, а нет ли там... рекурсии, которая съедает стек, которого, возможно, маловато будет! Как такая идейка?

Сообщение отредактировал KnightIgor - Jan 5 2016, 13:15
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 5 2016, 14:43
Сообщение #15


Гуру
******

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



Цитата(KnightIgor @ Jan 5 2016, 19:15) *
TC: так где расчипятка актуального дампа hardfault? Если определится адрес слёта, берем карту памяти компоновщика, ищем, что там поблизости искомого адреса, находим тело функции. Потом можно под отладчиком там остановиться (даже если при этом не сгенерится исключение) и посмотреть, а нет ли там... рекурсии, которая съедает стек, которого, возможно, маловато будет! Как такая идейка?

Кстати - есть ещё в природе отладчики с функцией трэйсера! Очень пользительная вещь в данном случае!
Go to the top of the page
 
+Quote Post

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

 


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


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