koluna 0 3 часа назад Опубликовано 3 часа назад · Жалоба Здравствуйте! Прошу помочь разобраться. Процессор STM32F100R8, компилятор GCC. Периодически возникает исключение Hard Fault. В обработчике считал следующие регистры: HFSR=x40000000 CFSR=x00008200 Читаю описание и понять ничего не могу... В чем может быть проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 1 час назад Опубликовано 1 час назад · Жалоба Там на стеке должны еще некоторые регистры лежать. Очень помогает сохраненные значения LR и PC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 163 1 час назад Опубликовано 1 час назад · Жалоба Под отладчиком для начала стоило бы хотя бы посмотреть стек вызовов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 79 1 час назад Опубликовано 1 час назад · Жалоба Накосячил в коде. Если ошибка возникает периодически, то, как правило, что-то в роде обращения по неинициализованному указателю (произвольное значение указателя), либо выход за пределы адресов реализованной памяти. Если развернута RTOS, может портиться содержимое стека задачи или стека вызовов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koluna 0 49 минут назад Опубликовано 49 минут назад · Жалоба 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, может портиться содержимое стека задачи или стека вызовов. РТОСа нет. Прототреды использую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Priest_89 5 27 минут назад Опубликовано 27 минут назад · Жалоба Если работаете в TrueStudio или CubeIDE, в них есть утилита Fault Analyzer, которая выводит всю информацию о HardFault, в том числе адрес инструкции, которая его вызвала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koluna 0 13 минут назад Опубликовано 13 минут назад · Жалоба On 8/12/2024 at 9:58 PM, Priest_89 said: Если работаете в TrueStudio или CubeIDE, в них есть утилита Fault Analyzer, которая выводит всю информацию о HardFault, в том числе адрес инструкции, которая его вызвала. Нет. У меня в чистом виде GCC и другая IDE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться