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

 
 
> STM32L151 Hardfault как найти причину ?
MiklPolikov
сообщение Mar 1 2016, 18:01
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Стабильно попадаю в Hardfault.
Используется FreeRTOS
При раскидывание по коду метки xxx_error=1 ; xxx_error=2 .... Hardfault исчезает, но конкретного места это не выдаёт.

При попадании в Hardfault под отладкой:
- в Call Stuck Window пусто, один Hardfault
Регистры ядра
SCB - > CFSR=0x00000400
SCB - > HFSR=0x40000000
т.е стоят биты:
Bit 10 IMPRECISERR: Imprecise data bus error
When the processor sets this bit to 1, it does not write a fault address to the BFAR.
This is an asynchronous fault.
Bit 30 FORCED: Forced hard fault
Indicates a forced hard fault, generated by escalation of a fault with configurable priority that
cannot be handles, either because of priority or because it is disabled:
When this bit is set to 1, the hard fault handler must read the other fault

Вопрос: как искать причину такого глюка ?
Что вообще может быть причиной ?

Заранее спасибо !


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Mar 1 2016, 22:46
Сообщение #2


Гуру
******

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



Я нашел для себя примитивное решение:
Код
void HardFault_Handler(void)
{
    volatile int i = 0;
    while(!i)
       ;
}
Обнаружив прграмму в этом цикле переключаюсь в режим дизассемблера, изменяю значение i на 1 и выхожу из исключения. Попадаю на вызвавшую исключение команду. Дальше уже головой.


--------------------
На любой вопрос даю любой ответ
"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
jcxz
сообщение Mar 10 2016, 10:16
Сообщение #3


Гуру
******

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



Цитата(Сергей Борщ @ Mar 2 2016, 04:46) *
Обнаружив прграмму в этом цикле переключаюсь в режим дизассемблера, изменяю значение i на 1 и выхожу из исключения. Попадаю на вызвавшую исключение команду. Дальше уже головой.

Раз получено "Imprecise data bus error", значит попадёте скорей всего не на вызвавшую исключение команду, а где-то немного после неё.
Надо просмотреть ближайшие предыдущие десяток команд с обращением к памяти от этого места - где-то скорей всего есть обращение к несуществующей памяти.
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 10 2016, 11:44
Сообщение #4


Гуру
******

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



Цитата(jcxz @ Mar 10 2016, 13:16) *
Раз получено "Imprecise data bus error", значит попадёте скорей всего не на вызвавшую исключение команду, а где-то немного после неё.

Вот тут товарищ советует отключить кеширование записи в память, и тогда imprecise превратится в precise, а регистры будут указывать точно на ту инструкцию, которая виновата. Если ревизия проца не слишком старая и позволяет это сделать, конечно. Какая ревизия у STM32L151 - не знаю.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MiklPolikov   STM32L151 Hardfault как найти причину ?   Mar 1 2016, 18:01
- - ViKo   Искать так же, как в 500-х описанных ранее случаев...   Mar 1 2016, 18:33
|- - MiklPolikov   Цитата(ViKo @ Mar 1 2016, 21:33) Искать т...   Mar 1 2016, 18:37
|- - ViKo   Цитата(MiklPolikov @ Mar 1 2016, 21:37) Е...   Mar 1 2016, 19:25
|- - ViKo   Цитата(Сергей Борщ @ Mar 2 2016, 01:46) Я...   Mar 3 2016, 10:35
||- - Сергей Борщ   Цитата(ViKo @ Mar 3 2016, 12:35) А без пе...   Mar 3 2016, 12:12
||- - Tarbal   Цитата(Сергей Борщ @ Mar 3 2016, 15:12) Я...   Mar 3 2016, 13:25
||- - ViKo   Цитата(Сергей Борщ @ Mar 3 2016, 15:12) Я...   Mar 22 2016, 11:22
||- - Сергей Борщ   Цитата(ViKo @ Mar 22 2016, 13:22) Гениаль...   Mar 22 2016, 11:26
||- - ViKo   Цитата(Сергей Борщ @ Mar 22 2016, 14:26) ...   Mar 22 2016, 11:38
||- - Сергей Борщ   Цитата(ViKo @ Mar 22 2016, 13:38) Затем, ...   Mar 22 2016, 12:15
|- - adnega   Цитата(jcxz @ Mar 10 2016, 13:16) Раз пол...   Mar 10 2016, 11:32
- - SasaVitebsk   Скажем так. Есть 2 вида вылета. Первый происходит...   Mar 2 2016, 06:55
|- - MiklPolikov   Цитата(SasaVitebsk @ Mar 2 2016, 09:55) В...   Mar 3 2016, 07:46
||- - SasaVitebsk   Цитата(MiklPolikov @ Mar 3 2016, 10:46) В...   Mar 3 2016, 10:40
|- - MiklPolikov   Цитата(SasaVitebsk @ Mar 2 2016, 09:55) Н...   Mar 7 2016, 08:11
|- - SasaVitebsk   Цитата(MiklPolikov @ Mar 7 2016, 11:11) Т...   Mar 10 2016, 05:57
- - romas2010   Цитата(MiklPolikov @ Mar 1 2016, 21:01) С...   Mar 2 2016, 19:13
- - adnega   Цитата(MiklPolikov @ Mar 1 2016, 21:01) В...   Mar 3 2016, 20:44
- - x893   Для FreeRTOS использовал Percepio - полезная прог...   Mar 10 2016, 10:10
- - ViKo   Я редко использую ассемблер. В данном случае я дов...   Mar 22 2016, 12:24
|- - scifi   Цитата(ViKo @ Mar 22 2016, 15:24) 4 байта...   Mar 22 2016, 13:07
|- - ViKo   Цитата(scifi @ Mar 22 2016, 16:07) Подсчё...   Mar 22 2016, 13:26
|- - scifi   Цитата(ViKo @ Mar 22 2016, 16:26) Это не ...   Mar 22 2016, 15:22
- - Сергей Борщ   Да, пожалуй, я погорячился. Приношу извинения.   Mar 22 2016, 13:32
- - ViKo   Ишь, прямо эпидемия извинений. У предложенного ...   Mar 22 2016, 16:10
- - Сергей Борщ   Цитата(ViKo @ Mar 22 2016, 18:10) У предл...   Mar 22 2016, 16:16
- - ViKo   Цитата(Сергей Борщ @ Mar 22 2016, 19:16) ...   Mar 22 2016, 16:27


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

 


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


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