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

 
 
> Hard Fault Exception на кортексе м3, как узнать откуда прилезло
klen
сообщение Feb 4 2010, 10:37
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Здравствуйте.
работает программа на stm32f107 uIP+DHCP+HTTPD+TELNETD.

все просто замечательно работает, но не долго - минуту, через примерно одинаковый интервал времени - systick показывает очень близкие значения, все вываливается в HardFaultException с вероятностью 1. видимо гдето чето кончаетсо, буфер например. пытаюсь понять.

как высчитать в обработчике адрес с которого все это прилитело?

нагугленная конструкция
asm volatile ("MRS R0,PSP") ;
asm volatile ("LDR R1,[R0,#24] \n");
выдает чето мне непонятное.

спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
klen
сообщение Feb 4 2010, 17:12
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



проблему я пофиксил - SNTP клиент косячил. все прекрасно заработато.

но вопрос то отался - как в обработчике исключительной ситуации Hard Fault получить адрес инструкции котороая привела к эксепшену? Ну вопрос то наверно простой, гдето ячето неправильно даташит понимаю.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 5 2010, 11:23
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Вот так у меня сработало:

Код
void hard_fault_handler(unsigned int * hardfault_args)
{
    rs_puts("\r\nhard_fault_handler!\r\nPC=");
    rs_put_hex(hardfault_args[6]);
    for(;;);
}

void HardFault_Handler(void) __attribute__ (( naked ));

// собственно обработчик
void HardFault_Handler(void)
{
    asm volatile (
        "TST LR, #4              \n"
        "ITE EQ                    \n"
        "MRSEQ R0, MSP        \n"
        "MRSNE R0, PSP         \n"
        "B hard_fault_handler    "
    );
}

//Проверка:
void test1()
{
    __asm volatile
    (
        "MOVS r0, #1         \n"
        "LDM r0,{r1-r2}        \n"
        "BX LR                \n"
    );
}


Вывод в UART почему-то не сработал, но в отладчике видно, что в hardfault_args[6] - адрес строчки ldmia.w r0, {r1, r2}.

Взято отсюда.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 5 2010, 14:45
Сообщение #4


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



очень хорошо будем смотреть в "бубен около костра"

только с ходу вроде бы то что я вставлял
asm volatile ("MRS R0,PSP") ;
asm volatile ("LDR R1,[R0,#24]");
почти тоже самое? что Вы привели, - выдавало в r1 бред.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- klen   Hard Fault Exception на кортексе м3   Feb 4 2010, 10:37
|- - AHTOXA   Цитата(klen @ Feb 5 2010, 19:45) только с...   Feb 5 2010, 14:58
|- - klen   уря уря уря!!! naked действительно во ...   Feb 5 2010, 15:23
- - juvf   Выпадаю в Hard Fault Exception. описал обработчик...   Feb 25 2014, 18:54
|- - AHTOXA   Судя по Цитата(juvf @ Feb 26 2014, 00:54...   Feb 26 2014, 11:30
|- - jcxz   Цитата(AHTOXA @ Feb 26 2014, 17:30) Судя ...   Feb 27 2014, 02:20
|- - AHTOXA   Цитата(jcxz @ Feb 27 2014, 08:20) Почему ...   Feb 27 2014, 05:21
|- - jcxz   Цитата(AHTOXA @ Feb 27 2014, 11:21) Потом...   Feb 27 2014, 06:09
|- - Сергей Борщ   Цитата(jcxz @ Feb 27 2014, 08:09) Адрес в...   Feb 27 2014, 06:56
||- - jcxz   Функции как вызываются? Правильно: обычно через BL...   Feb 27 2014, 07:48
||- - Сергей Борщ   Цитата(jcxz @ Feb 27 2014, 09:48) BL что ...   Feb 27 2014, 09:51
||- - jcxz   Цитата(Сергей Борщ @ Feb 27 2014, 15:51) ...   Feb 27 2014, 11:42
|- - AHTOXA   Цитата(jcxz @ Feb 27 2014, 12:09) Адрес в...   Feb 27 2014, 08:46
|- - jcxz   Цитата(AHTOXA @ Feb 27 2014, 14:46) Судя ...   Feb 27 2014, 09:11
|- - AHTOXA   Цитата(jcxz @ Feb 27 2014, 15:11) И что? ...   Feb 27 2014, 10:54
|- - jcxz   Цитата(AHTOXA @ Feb 27 2014, 16:54) Потом...   Feb 27 2014, 11:51
|- - juvf   Цитата(jcxz @ Feb 27 2014, 16:51) если ад...   Feb 27 2014, 12:05
||- - jcxz   Цитата(juvf @ Feb 27 2014, 18:05) ну адре...   Feb 27 2014, 12:50
||- - juvf   Цитата(jcxz @ Feb 27 2014, 17:50) Если у ...   Feb 27 2014, 13:03
|- - AHTOXA   Цитата(juvf @ Feb 27 2014, 17:48) Думаю, ...   Feb 27 2014, 15:00
|- - jcxz   Цитата(AHTOXA @ Feb 27 2014, 21:00) При т...   Feb 28 2014, 02:32
|- - AHTOXA   Цитата(jcxz @ Feb 28 2014, 08:32) Вот тол...   Feb 28 2014, 04:36
|- - jcxz   Я с вами тоже   Feb 28 2014, 05:59
- - juvf   спасибо. перед 0x8002c09 такой код КодLDR R1, ...   Feb 26 2014, 12:28
|- - AHTOXA   Цитата(juvf @ Feb 26 2014, 18:28) перед 0...   Feb 26 2014, 12:54
|- - Axel   Цитата(juvf @ Feb 26 2014, 16:28) Подозре...   Feb 26 2014, 14:00
- - MALLOY2   Если это иар и используется его алокатор, то вам h...   Feb 26 2014, 12:47
- - ViKo   При прерываниях адрес возврата сохраняется в стек ...   Feb 27 2014, 05:51
- - juvf   Думаю, что я нашел граблю. я в одном потоке делаю ...   Feb 27 2014, 11:48
- - juvf   Давайте жить дружно   Feb 28 2014, 09:14
- - juvf   stm32L052 падает в HF пытаюсь сделать обработчик ...   Mar 30 2017, 15:27
|- - AHTOXA   Цитата(juvf @ Mar 30 2017, 20:27) Error[O...   Mar 30 2017, 16:10
|- - jcxz   Цитата(juvf @ Mar 30 2017, 17:27) препроц...   Mar 30 2017, 17:03
|- - juvf   Цитата(jcxz @ Mar 30 2017, 22:03) Препроц...   Mar 31 2017, 03:34
- - Obam   А что, на брейкпойнте в точке входа в HF и под JTA...   Mar 31 2017, 07:46
|- - juvf   Цитата(Obam @ Mar 31 2017, 12:46) А что, ...   Mar 31 2017, 08:30
|- - Шаманъ   Цитата(juvf @ Mar 31 2017, 11:30) По мойм...   Mar 31 2017, 09:02
|- - jcxz   Цитата(Шаманъ @ Mar 31 2017, 11:02) Тогда...   Mar 31 2017, 09:13
|- - Forger   Цитата(jcxz @ Mar 31 2017, 12:13) Вот тут...   Mar 31 2017, 09:17
|- - ViKo   Цитата(jcxz @ Mar 31 2017, 12:13) У Corte...   Mar 31 2017, 09:32
||- - jcxz   Цитата(ViKo @ Mar 31 2017, 11:32) А не на...   Mar 31 2017, 09:46
||- - ViKo   Цитата(jcxz @ Mar 31 2017, 12:46) Не обяз...   Mar 31 2017, 10:07
|||- - jcxz   Цитата(ViKo @ Mar 31 2017, 12:07) Этот вы...   Mar 31 2017, 10:17
||- - Шаманъ   Цитата(jcxz @ Mar 31 2017, 12:46) Не обяз...   Mar 31 2017, 10:31
||- - jcxz   Цитата(Шаманъ @ Mar 31 2017, 12:31) Вы пр...   Mar 31 2017, 13:11
|||- - ViKo   Цитата(jcxz @ Mar 31 2017, 16:11) Читайте...   Mar 31 2017, 13:37
|||- - jcxz   Цитата(ViKo @ Mar 31 2017, 15:37) Только ...   Mar 31 2017, 14:34
||- - Forger   Цитата(Шаманъ @ Mar 31 2017, 13:31) Но, п...   Mar 31 2017, 13:39
|- - Шаманъ   Цитата(jcxz @ Mar 31 2017, 12:13) У Corte...   Mar 31 2017, 09:38
- - ViKo   Можно. Только, когда ошибка появляется в рабочем п...   Mar 31 2017, 08:14
|- - Forger   Цитата(ViKo @ Mar 31 2017, 11:14) Можно. ...   Mar 31 2017, 09:08
- - Obam   "…в рабочем приборе, вдалеке от отладчика…...   Mar 31 2017, 08:26
|- - ViKo   Цитата(Obam @ Mar 31 2017, 11:26) "…...   Mar 31 2017, 08:38
- - ViKo   Будем считать, что мне везло, и я всегда попадал и...   Mar 31 2017, 10:34
- - Шаманъ   Цитата(jcxz @ Mar 31 2017, 16:11) Читайте...   Mar 31 2017, 14:01
- - Forger   Цитата(Шаманъ @ Mar 31 2017, 17:01) Я обы...   Mar 31 2017, 14:11
- - Шаманъ   Цитата(Forger @ Mar 31 2017, 17:11) А я п...   Mar 31 2017, 14:35
- - Forger   Цитата(Шаманъ @ Mar 31 2017, 17:35) Но ра...   Mar 31 2017, 15:04
- - Шаманъ   Цитата(Forger @ Mar 31 2017, 18:04) Честн...   Mar 31 2017, 16:08
- - Forger   Цитата(Шаманъ @ Mar 31 2017, 19:08) У мен...   Mar 31 2017, 16:28
- - Шаманъ   Цитата(Forger @ Mar 31 2017, 19:28) Потом...   Mar 31 2017, 17:16
- - Forger   Цитата(Шаманъ @ Mar 31 2017, 20:16) В кон...   Mar 31 2017, 18:05


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:25
Рейтинг@Mail.ru


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