|
STM32F407VET6. Свистопляска с HardFault-ами, Бесстстемные исключения HardFault |
|
|
|
Dec 29 2015, 16:03
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 30 2015, 04:12
|
Участник

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

|
возьмите другую плату да проверьте. у меня есть тоже запиленная до дыр discovery f429 , и подобные же спецэффекты не так давно начали проявляться , проблема судя по всему по питанию , ибо если на 0.1 V подать больше , то все работает.
|
|
|
|
|
Jan 4 2016, 21:52
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(AlanDrakes @ Dec 31 2015, 21:04)  Так же можно проверить ёмкости на плате. Исключил из процедуры вызов библиотечной функцмм pow() - заменил самописаной - наваждение прошло...
|
|
|
|
|
Jan 5 2016, 09:02
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(scifi @ Jan 5 2016, 03:57)  А осадок остался. Причина не найдена, что, скорее всего, означает, что глюк вернётся снова. ... накаркал. Типовая ситуация - в UFSR взводится бит INVSTATE, об'яснение из дефинитив гуиде - attempts to switch to an invalid state (e.g. ARM) - мож подтолкнете в верном направлении? самое что убивает - при пошаговой отладке глюк практически никогда не воспроизводится
|
|
|
|
|
Jan 5 2016, 11:49
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(scifi @ Jan 5 2016, 16:03)  Подталкиваю: нужно расшифровать всю информацию, доступную обработчику Hard Fault. Вычислить адрес инструкции, на которой проц спотыкается, посмотреть, что там. ощутил едва уловимый толчок...))
Сообщение отредактировал nanorobot - Jan 5 2016, 11:50
|
|
|
|
|
Jan 5 2016, 13:15
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(nanorobot @ Jan 5 2016, 12:49)  ощутил едва уловимый толчок...)) К какой точке приложения?  . TC: так где расчипятка актуального дампа hardfault? Если определится адрес слёта, берем карту памяти компоновщика, ищем, что там поблизости искомого адреса, находим тело функции. Потом можно под отладчиком там остановиться (даже если при этом не сгенерится исключение) и посмотреть, а нет ли там... рекурсии, которая съедает стек, которого, возможно, маловато будет! Как такая идейка?
Сообщение отредактировал KnightIgor - Jan 5 2016, 13:15
|
|
|
|
|
Jan 5 2016, 14:43
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

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