Перейти к содержанию
    

Исключение Hard Fault на Cortex-M3

Здравствуйте!

Прошу помочь разобраться.
Процессор STM32F100R8, компилятор GCC.

Периодически возникает исключение Hard Fault.
В обработчике считал следующие регистры:

HFSR=x40000000
CFSR=x00008200

Читаю описание и понять ничего не могу... В чем может быть проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там на стеке должны еще некоторые регистры лежать. Очень помогает сохраненные значения LR и PC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Накосячил в коде. Если ошибка возникает периодически, то, как правило, что-то в роде обращения по неинициализованному указателю (произвольное значение указателя), либо выход за пределы адресов реализованной памяти. Если развернута RTOS, может портиться содержимое стека задачи или стека вызовов. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/12/2024 at 8:59 PM, adnega said:

Там на стеке должны еще некоторые регистры лежать. Очень помогает сохраненные значения LR и PC.

Считать в обработчике по адресу из MSP?

On 8/12/2024 at 9:03 PM, Arlleex said:

Под отладчиком для начала стоило бы хотя бы посмотреть стек вызовов.

Конкретизируйте, пожалуйста. Что я могу увидеть в стеке вызовов?

On 8/12/2024 at 9:18 PM, EdgeAligned said:

Накосячил в коде. Если ошибка возникает периодически,

Периодически возникает, через несколько минут после старта. Обычный дебаг не помогает уже...

On 8/12/2024 at 9:18 PM, EdgeAligned said:

как правило, что-то в роде обращения по неинициализованному указателю (произвольное значение указателя), либо выход за пределы адресов реализованной памяти.

Уже глаза сломал в код смотреть... упростил и отключил все по максимуму...

On 8/12/2024 at 9:18 PM, EdgeAligned said:

Если развернута RTOS, может портиться содержимое стека задачи или стека вызовов.

РТОСа нет. Прототреды использую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если работаете в TrueStudio или CubeIDE, в них есть утилита Fault Analyzer, которая выводит всю информацию о HardFault, в том числе адрес инструкции, которая его вызвала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/12/2024 at 9:58 PM, Priest_89 said:

Если работаете в TrueStudio или CubeIDE, в них есть утилита Fault Analyzer, которая выводит всю информацию о HardFault, в том числе адрес инструкции, которая его вызвала.

Нет. У меня в чистом виде GCC и другая IDE.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...