Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: stm32 debug session
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
-= Александр =-
Добрый день!

Случилась такая вещь: был у меня один девайс на stm32f103. Лежал на столе, я его отлаживал какое-то время назад (Workbench + ST-Link). Отладил, все работает как надо. Тут вдруг по острой нужде его схватили и запихнули в прибор. В общем вопрос такой: во время дебаг-сессии в него шьется обычная прошивка или со всякими отладочными штуками? Надо ли опосля отладки в него перешивать бинарник флэшером отдельно? Все предыдущие разы я так и делал. Сейчас все работает, крышка закрыта, лезть туда не хочется.
aaarrr
Что собрано, то и шьется. Специально заливать по голове то же самое смысла нет.
ataradov
Это зависит от много чего. Если в проекте было много активных точек останова, то многие IDE и отладчики модифицируют флеш и вставляют программные точки останова. И если отладочную сессию прервать выдергиванием отладчика, то они там так и останутся.
aaarrr
Цитата(ataradov @ Apr 25 2018, 18:18) *
Если в проекте было много активных точек останова, то многие IDE и отладчики модифицируют флеш и вставляют программные точки останова.

Это да. Правда, их должно быть действительно много, если не ошибаюсь, у F103 шесть аппаратных точек.
-= Александр =-
Ну допустим точек было задействовано всего пару. Это может как-то повлиять на работу? Без подключенного отладчика он не будет из-за чего-либо на них останавливаться?
jcxz
Цитата(-= Александр =- @ Apr 26 2018, 01:47) *
Ну допустим точек было задействовано всего пару. Это может как-то повлиять на работу? Без подключенного отладчика он не будет из-за чего-либо на них останавливаться?

И всего пара бряков могут быть программными, в зависимости от настроек вашего отладчика.
Останавливаться - с чего бы? Программная точка - это инструкция программного прерывания, записанная поверх штатных инструкций. Сами подумайте что будет.
x893
Ответ находится за 5 минут с использованием устройства, отладчика, головы и рук.
Гугл можно не привлекать для экономии времени.
serglg
я как-то точно оставлял точки останова при отладке, потом штатно выходил, отключал СТ-Линк.
Потом запускал устройство и оно работало адекватно, не висло в предполагаемых местах остановки..
Отлаживал Кейлом.
Arlleex
Придется поднять тему.
Использую Keil + ST-Link (SWD).
Захожу в сессию отладки, ставлю до 6 точек останова - все устанавливается (они аппаратные). А я хочу больше точек останова - допустим, 100 точек. Пусть из них 6 будут аппаратными, остальные - программными. Как это сделать? Нужно как-то перекомпилировать код? В какой момент подключается Flash Patch и как он точно работает? Я полагаю, что это некий механизм переадресации инструкций, на которые поставлены точки останова, на инструкции в той же Flash, но находящиеся недалеко от исполняемого реального кода. И это инструкции BKPT с параметром.


И если расставляются программные точки останова, означает ли это, что они расставляются в процессе до компиляции и добавляются в код? И как не пытался играться в Keil, поставить ST-Link-ом программную точку не смог =(
aaarrr
Цитата(Arlleex @ Jun 1 2018, 22:08) *
И если расставляются программные точки останова, означает ли это, что они расставляются в процессе до компиляции и добавляются в код?

Нет, точки ставит отладчик, в код ничего не добавляется, только в таргет.

P.S. Картинку не видно
Arlleex
Цитата(aaarrr @ Jun 1 2018, 22:21) *
Нет, точки ставит отладчик, в код ничего не добавляется, только в таргет.

P.S. Картинку не видно

Картинку переприкрепил.

И вот судя по ней, когда ставится программная точка останова, адрес считываемой инструкции, на которую натравливается точка останова, слегка корректируется на инструкцию BKPT (ну это мне так пока что приходится догадываться). Но если это не так, тогда отладчику надо как-то "налету" поменять содержимое инструкции на BKPT прямо во Flash (код исполняется оттуда). А для этого память надо сначала будет стереть, а потом перезаписать ради одной инструкции. После выхода из сессии отладки снова перешить Flash на корректный код... Выглядит как-то костыльно, либо не так это все работает laughing.gif
aaarrr
Цитата(Arlleex @ Jun 1 2018, 22:41) *
Выглядит как-то костыльно

Так на то они и программные - костыль как он есть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.