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

 
 
> 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
Ответов
ViKo
сообщение Mar 1 2016, 18:33
Сообщение #2


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

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



Искать так же, как в 500-х описанных ранее случаев.
1. Это не все регистры, отвечающие за ошибки.
2. Нужно из стека извлечь адрес команды, на которой произошел сбой.


Сообщение отредактировал IgorKossak - Mar 1 2016, 19:11
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 1 2016, 18:37
Сообщение #3


Гуру
******

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



Цитата(ViKo @ Mar 1 2016, 21:33) *
Искать так же, как в 500-х описанных ранее случаев.
1. Это не все регистры, отвечающие за ошибки.
2. Нужно из стека извлечь адрес команды, на которой произошел сбой.


Есть ещё регистр адреса- но в нём нет значения, т.к. не выставлен соответствующий бит.
Как из стека извлечь адрес ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 1 2016, 19:25
Сообщение #4


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

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



Цитата(MiklPolikov @ Mar 1 2016, 21:37) *
Есть ещё регистр адреса- но в нём нет значения, т.к. не выставлен соответствующий бит.
Как из стека извлечь адрес ?

Насчет L151 конкретно не знаю, но обычно регистров больше.
Из стека адрес - много раз показывали. Лучше в книжку Джозефа Ю заглянуть, там будет расписано и программа дана. И здесь поиском по форуму тоже. Есть два регистра стека, какой-то из них использован, к значению этого стека прибавить 24...
Код
__asm void HardFault_Handler(void)
{
  TST LR, #4
  ITE EQ
  MRSEQ R0, MSP        ; Main Stack was used, put MSP in R0
  MRSNE R0, PSP        ; Process Stack was used, put PSP in R0
  LDR R0, [R0, #24]    ; Get stacked PC from stack
  B .
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MiklPolikov   STM32L151 Hardfault как найти причину ?   Mar 1 2016, 18:01
- - Сергей Борщ   Я нашел для себя примитивное решение: Кодvoid Hard...   Mar 1 2016, 22:46
|- - 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
|- - jcxz   Цитата(Сергей Борщ @ Mar 2 2016, 04:46) О...   Mar 10 2016, 10:16
|- - adnega   Цитата(jcxz @ Mar 10 2016, 13:16) Раз пол...   Mar 10 2016, 11:32
|- - scifi   Цитата(jcxz @ Mar 10 2016, 13:16) Раз пол...   Mar 10 2016, 11:44
- - 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 Текстовая версия Сейчас: 26th June 2025 - 21:10
Рейтинг@Mail.ru


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