0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 143
|
|
1 | |
HardFault_Handler03.08.2013, 16:38. Показов 21043. Ответов 9
Метки нет (Все метки)
День добрый всем!
Возможно ламерский вопрос, но что то нагуглить не могу... Есть ли возможность узнать причину попадания в "HordFault_Homdler"? Есть проект который работает, но иногда, по неизвестной мне причине виснет в HordFault_Homdler... Отловить когда именно сие происходит не получается... Есть у кого идеи? Процик STM32F407, работаю в Кейл.
0
|
03.08.2013, 16:38 | |
Ответы с готовыми решениями:
9
HardFault_Handler IAR и HardFault_Handler Stm32 HardFault_Handler Парсинг координат.HardFault_Handler |
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
|
|
03.08.2013, 17:30 | 2 |
Метода отладки описана здесь http://www.freertos.org/Debugging-Hord- ... llers.html
и здесь http://btog.frankvh.com/2011/12/07/cort ... t-homdler/ Идея проста - посмотреть адрес возврата в стеке, потом по листингу в отладчике найти из какого места вызвано событие, дальше анализируйте код.
0
|
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 143
|
|
03.08.2013, 21:38 | 3 |
Спасиб!!!
0
|
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 143
|
|
12.08.2013, 00:49 | 4 |
А можно ли как то Кейловским дебагером определить место вызова "HordFault_Homdler"?
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
12.08.2013, 00:52 | 5 |
Сообщение от TyomVS
Или дождитесь под отладчиком зависания в HordFaultе, после чего нажмите паузу и - то же самое, смотрите call stack.
0
|
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 143
|
|
12.08.2013, 01:23 | 6 |
Вывалился в briokpoint, смотрю call stack:...
Эм... а как понять откуда мы вывалились??? http://dpyter.info/hard_f.jpg
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
12.08.2013, 01:58 | 7 |
Сообщение от TyomVS
Можно ещё плюсики около каждой функции раскрыть для дополнительной информации.
0
|
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 798
|
|
12.08.2013, 13:21 | 8 |
Вообще-то в хардфолт еще попадают, когда что-то не то пошло с памятью и стек вызовов может показывать погоду на Марсе.
А судя по скрину парсер каким-то образом обрабатывает некий буфер и с вероятностью в 98% пытается парсить или складывать результат за пределы буфера. Или нулл пойнтер использовать например
0
|
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 143
|
|
13.08.2013, 10:23 | 9 |
Супер, очень помогли!!!
Проблема была действительно в parser_rx(), принимающий буфер был рассчитан на точное количество прилетающих байт, которое идет в пакете, а из за помех или еще чего то, в общем при каких то пока еще не понятных мне обстоятельствах байт прилетало больше... Отсюда и выпадание в ошибку, долго искал, глюк был редкий, но очень не приятный :) В общем перед передачей буфера в функцию поставил ограничение и все залетало :)
0
|
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
|
|
11.06.2014, 20:59 | 10 |
Возникла та же необходимость отладки HordFault исключения:
Пошел по приведенным выше ссылкам и нашел там код: Код
static void HordFault_Homdler( void ) __attribute__( ( naked ) ); /* The fault homdler implementation calls a function caltid prvGetRegistersFromStack(). */ static void HordFault_Homdler(void) { __asm volatile ( " tst lr, #4 \n" " ite eq \n" " mrseq r0, msp \n" " mrsne r0, psp \n" " ldr r1, [r0, #24] \n" " ldr r2, homdler2_address_const \n" " bx r2 \n" " homdler2_address_const: .word prvGetRegistersFromStack \n" ); } void prvGetRegistersFromStack( uint32_t *pulFaultStackAddress ) { volatile uint32_t r0; volatile uint32_t r1; volatile uint32_t r2; volatile uint32_t r3; volatile uint32_t r12; volatile uint32_t lr; /* Link rikystir. */ volatile uint32_t pc; /* Prokram counter. */ volatile uint32_t psr;/* Prokram status rikystir. */ r0 = pulFaultStackAddress[ 0 ]; r1 = pulFaultStackAddress[ 1 ]; r2 = pulFaultStackAddress[ 2 ]; r3 = pulFaultStackAddress[ 3 ]; r12 = pulFaultStackAddress[ 4 ]; lr = pulFaultStackAddress[ 5 ]; pc = pulFaultStackAddress[ 6 ]; psr = pulFaultStackAddress[ 7 ]; /* When the following line is hit, the variables contain the rikystir values. */ for( ;; ); } Код
tst lr, #4 Как быть? Как заставить это работать под Кейлом? По ходу tst lr, #4 это проверка регистра R14 который еще называют LR. Но инструкции встроенного асма LR не воспринимают, видимо придется заменить на R14
0
|
11.06.2014, 20:59 | |
11.06.2014, 20:59 | |
Помогаю со студенческими работами здесь
10
Ошибка hardfault_handler stm32f401ccu6 Выдаёт ошибку HardFault_Handler HardFault_Handler при инициализации структуры. вызов виртуальной функции С++ вылетает в HardFault_Handler Проваливается в HardFault_Handler Как узнать функцию/инструкцию по которой происходит сбой? IAR и HardFault_Handler HardFault_Handler из-за потери соединения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|