Easyelectronics.ru

Электроника для всех
Текущее время: 08 мар 2021, 09:21

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: FreeRTOS, STM32F746, Hard Fault
СообщениеДобавлено: 26 ноя 2020, 12:44 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 868
Всем привет!

Пытаюсь по этой методике найти место место в программе, в котором попадаю в Hard Fault:
https://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html

Использую FreeRTOS 10. Вставил такой код:
Show

Но фокус не получается. На рисунке стрелкой отмечена команда, после которой появляется куча сообщений "Failed to execute MI command".

Что я делаю неправильно? Как и что нужно сделать, чтобы увидеть адрес программы, вызывающий падение в Hard Fault?


Вложения:
Screenshot_90.jpg
Screenshot_90.jpg [ 252.75 Кб | Просмотров: 2038 ]
Screenshot_91.jpg
Screenshot_91.jpg [ 27.93 Кб | Просмотров: 2038 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FreeRTOS, STM32F746, Hard Fault
СообщениеДобавлено: 27 ноя 2020, 09:10 
Заглядывает иногда

Зарегистрирован: 08 фев 2012, 15:28
Сообщения: 119
При переполнении стека адрес будет "от балды" - в зависимости от того куда программа перед этим прыгнет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FreeRTOS, STM32F746, Hard Fault
СообщениеДобавлено: 27 ноя 2020, 11:26 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 868
Проблема, по-моему, не в стеках. Они по 4К.
Проблема в функции, которая через ПДП отправляет запрос и принимает ответ по UART. Причём, сбой происходит только при непрерывной отправке-приёме. При небольшой паузе сбоев нет. Может, что-то с кэшем не так? Кстати, приложил картинку из CubeIDE с описанием ошибки, может, я чё-то не так понимаю?


Вложения:
Screenshot_266.jpg
Screenshot_266.jpg [ 66.42 Кб | Просмотров: 1971 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FreeRTOS, STM32F746, Hard Fault
СообщениеДобавлено: 28 ноя 2020, 15:25 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 ноя 2010, 20:11
Сообщения: 117
Откуда: Омск
Смущает адрес в PC - 0xfffc - почему процессор прыгает по этому адресу? И ещё регистр LR = 0xfffd
Проверьте, не попытался ли DMA записать данные куда-то близко к стэку. Не было ли переполнения при работе с DMA. Ибо такие значения откуда попало не берутся.
Я бы ещё понял, будь там мусор.
Кстати, посмотрите память в пределах самого стэка - нет ли там случайно принятых данных или их фрагментов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FreeRTOS, STM32F746, Hard Fault
СообщениеДобавлено: 28 ноя 2020, 16:57 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 868
Коллеги!
Нашёл у себя ошибку. Торопился сильно, поэтому сдуру из одной задачи в другую передавал адрес на локальную переменную из стэка. Так что замечания про "балду" и странный адрес- все в точку! Вдумчиво посмотрел на текст программы и после ваших комментов увидел свою ошибку. Благодарю! Пнули меня в нужном направлении.

Кстати, так, поделюсь впечатлениями. Я недавно стал пользоваться CubeIDE и она мне всё больше нравится. Выше картинка с анализатором отказов. А ещё там встроены инструменты для трассировки FreeRTOS. Пока искал у себя ошибку, потихоньку попробовал эти инструменты. Просто, удобно, под рукой. Всё работает "из коробки" и безплатно. Есть ещё инструменты, но я пока до них не добрался. И редактор кода после Кейла и ИАР выглядит сказкой. Каких-то лагов и тормозов в работе не чувствую. ХАЛом и ЛЛ не пользуюсь, они мне категорически не нравятся. В общем, рекомендую попробовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FreeRTOS, STM32F746, Hard Fault
СообщениеДобавлено: 28 ноя 2020, 18:27 
Заглядывает иногда

Зарегистрирован: 08 фев 2012, 15:28
Сообщения: 119
tonyk писал(а):
Коллеги!
Нашёл у себя ошибку. Торопился сильно, поэтому сдуру из одной задачи в другую передавал адрес на локальную переменную из стэка.

Типовая ошибка и одна из причин по которой я сбежал с C/C++ на Dlang. Многопоточность должна поддерживаться на уровне языка, с отслеживанием попыток локальную переменную передать глобально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FreeRTOS, STM32F746, Hard Fault
СообщениеДобавлено: 03 янв 2021, 21:56 
Старожил

Зарегистрирован: 06 окт 2014, 20:14
Сообщения: 1076
tonyk писал(а):
Коллеги!
Нашёл у себя ошибку. Торопился сильно, поэтому сдуру из одной задачи в другую передавал адрес на локальную переменную из стэка. Так что замечания про "балду" и странный адрес- все в точку! Вдумчиво посмотрел на текст программы и после ваших комментов увидел свою ошибку. Благодарю! Пнули меня в нужном направлении.


Я всегда считал, что, по сравнению с вдумчивым чтением собственного кода, отладка это почти зло. При мелком отсутствии какой-либо синхронизации отладка помогает. А если hardfault, дык, нужно иметь свою собственную "затычку" в hardfault векторе, она все Вам сама расскажет -> serial.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FreeRTOS, STM32F746, Hard Fault
СообщениеДобавлено: 04 янв 2021, 11:07 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 868
И зытычку поставил, только она оказалась не нужна, ибо в CubeIDE встроен инструмент визуализации стека при возникновении исключения. Сравнил результаты работы затычки и Куба- пользуюсь кубовской.

Вдумчивое чтение исходников- штука хорошая, но безсполезная в многозадачной среде. По одной все задачи работали, вместе- нет. Только просмотр содержимого стека при работе всех задач сразу указал на ошибку.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB