|
|
  |
Hard fault на EXTI |
|
|
|
Oct 19 2015, 17:38
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(zltigo @ Oct 19 2015, 13:13)  Oculos habebat et not videbat  Aliena vitia in oculis habemus, a tergo nostra sunt. Docendo discimus
Сообщение отредактировал pitt - Oct 19 2015, 17:41
--------------------
|
|
|
|
|
Oct 19 2015, 18:06
|

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

|
Я в обработчике HardFault нахожу адрес программы, с которого процессор улетел. Больше мне, собственно, ничего не нужно. А регистры состояния в отладчике видны, как в AN209 показано. Код __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 . }
|
|
|
|
|
Oct 19 2015, 18:22
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ViKo @ Oct 19 2015, 21:06)  А регистры состояния в отладчике видны, как в AN209 показано. Чукча не читатель. Чукча писатель вопросов. Ответов, даже столь разжованных, как этом самом AN209, он не понимает  . QUOTE (ViKo @ Oct 19 2015, 21:06)  Я в обработчике HardFault нахожу адрес программы, с которого процессор улетел. Больше мне, собственно, ничего не нужно. LR и стек все-же нужен - отследить вызовы, ибо далеко не всегда виноват именно код в этом месте.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 19 2015, 18:27
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(aaarrr @ Oct 19 2015, 13:11)  Прочитайте наконец свой же документ со стр. 12 и ниже. From my .map: os_dly 0x20003fc8 Data 24 rt_list.o(.bss) __initial_sp 0x200043e0 Data 0 startup_stm32f40_41xxx.o(STACK) SP = 0x200043A0 R14= FFFFFFF1 0x200043A0 20001E94 A4 08000000 A8 0 AC 0 B0 0 B4 080064E7 Code: 0x080064E4 BLX, r1 0x080064E6 POP (r4, pc) Does it mean that I've exhausted RTX(idle) stack? Цитата(zltigo @ Oct 19 2015, 14:22)  Чукча не читатель. Чукча писатель вопросов. Ответов, даже столь разжованных, как этом самом AN209, он не понимает Est proprium stultitiae aliorum vitia cernere, oblivisci suorum
|
|
|
|
|
Oct 19 2015, 18:38
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(zltigo @ Oct 19 2015, 14:35)  Нang the blame on someone else  . Injuriam facilius facias quam feras
|
|
|
|
|
Oct 20 2015, 02:22
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Проблему я решил. К моему сожалению, все это копание с регистрами ни к чему не привело. Извините, не могу понять, как оно помогает другим. Справился путем комментирования кусочков кода... К еще большему сожалению, не понял природу проблемы, которая заключалась в том, что в СТАТИЧЕСКОЙ переменной типа exti_s(структура, описывающая EXTI), портился указатель на обработчик прерывания. Причем, его портила другая и тоже СТАТИЧЕСКАЯ переменная совершенно другого типа, но из того же файла. Почему?! Буду весьма благодарен, если квалифицированно, без раздувания ноздрей, закатывания глаз, выкатывания губ и глубокомысленных замечаний об'ясните, а иначе, пожалуйста, не утруждайте себя, используйте энергию в мирных целях.
В любом случае, большое спасибо тем, кто старался помочь.
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|