Обработчик ошибок Cortex-M0 не вызывается после его изменения

#arm #microcontroller #cortex-m #keil #bare-metal

#arm #микроконтроллер #cortex-m #keil #голый металл

Вопрос:

я использую STM32f0 и попадаю в Hardfault. Моя среда разработки — Keil MDK. Я пытался найти его корни, поэтому каждый подход, который я нахожу в Интернете (в основном для M3 / M4), говорит о необходимости разматывать стек. см., Например: arm.com

Для этого мне логически необходимо изменить базовую реализацию обработчика жесткого по умолчанию.

 HardFault_Handler
                PROC
                MRS r7,MSP
                EXPORT  HardFault_Handler              [WEAK]
                B       .
                ENDP
  

после добавления строки MRS r7,MSP обработчик жесткого по умолчанию больше не вызывается, и приложение продолжает работать.

То же самое происходит, когда я пытаюсь реализовать свой собственный HardFault_handler на c.

Я понятия не имею. Заранее спасибо!

приветствия

Комментарии:

1. Привет, это Cortex-M0. И я создаю для Cortex-M0. Приложение работало хорошо в течение нескольких месяцев до недавнего времени. Поэтому я предполагаю, что настройка правильная. Я получаю жесткий по умолчанию. я меняю только HardFault_Handler_Code . Я больше не получаю жесткого по умолчанию. Это то, что мне кажется подозрительным.

2. как выглядит ваша векторная таблица после компоновки? Как вы запускаете жесткий сбой?

3. Как я могу проверить, как выглядит векторная таблица после связывания (в Keil)?