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

 
 
 
Reply to this topicStart new topic
> stm32 debug session, Что шьет дебагер?
-= Александр =-
сообщение Apr 25 2018, 14:01
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 115
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



Добрый день!

Случилась такая вещь: был у меня один девайс на stm32f103. Лежал на столе, я его отлаживал какое-то время назад (Workbench + ST-Link). Отладил, все работает как надо. Тут вдруг по острой нужде его схватили и запихнули в прибор. В общем вопрос такой: во время дебаг-сессии в него шьется обычная прошивка или со всякими отладочными штуками? Надо ли опосля отладки в него перешивать бинарник флэшером отдельно? Все предыдущие разы я так и делал. Сейчас все работает, крышка закрыта, лезть туда не хочется.


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 25 2018, 14:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 529
Регистрация: 11-12-04
Пользователь №: 1 448



Что собрано, то и шьется. Специально заливать по голове то же самое смысла нет.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Apr 25 2018, 15:18
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 004
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Это зависит от много чего. Если в проекте было много активных точек останова, то многие IDE и отладчики модифицируют флеш и вставляют программные точки останова. И если отладочную сессию прервать выдергиванием отладчика, то они там так и останутся.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 25 2018, 15:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 529
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ataradov @ Apr 25 2018, 18:18) *
Если в проекте было много активных точек останова, то многие IDE и отладчики модифицируют флеш и вставляют программные точки останова.

Это да. Правда, их должно быть действительно много, если не ошибаюсь, у F103 шесть аппаратных точек.
Go to the top of the page
 
+Quote Post
-= Александр =-
сообщение Apr 25 2018, 22:47
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 115
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



Ну допустим точек было задействовано всего пару. Это может как-то повлиять на работу? Без подключенного отладчика он не будет из-за чего-либо на них останавливаться?


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 26 2018, 03:01
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 655
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



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

И всего пара бряков могут быть программными, в зависимости от настроек вашего отладчика.
Останавливаться - с чего бы? Программная точка - это инструкция программного прерывания, записанная поверх штатных инструкций. Сами подумайте что будет.
Go to the top of the page
 
+Quote Post
x893
сообщение Apr 26 2018, 06:06
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 211
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Ответ находится за 5 минут с использованием устройства, отладчика, головы и рук.
Гугл можно не привлекать для экономии времени.
Go to the top of the page
 
+Quote Post
serglg
сообщение Apr 26 2018, 13:20
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 19-07-16
Пользователь №: 92 603



я как-то точно оставлял точки останова при отладке, потом штатно выходил, отключал СТ-Линк.
Потом запускал устройство и оно работало адекватно, не висло в предполагаемых местах остановки..
Отлаживал Кейлом.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jun 1 2018, 19:08
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 306
Регистрация: 12-11-11
Пользователь №: 68 264



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


И если расставляются программные точки останова, означает ли это, что они расставляются в процессе до компиляции и добавляются в код? И как не пытался играться в Keil, поставить ST-Link-ом программную точку не смог =(

Сообщение отредактировал Arlleex - Jun 1 2018, 19:35
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 1 2018, 19:21
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 529
Регистрация: 11-12-04
Пользователь №: 1 448



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

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

P.S. Картинку не видно
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jun 1 2018, 19:41
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 306
Регистрация: 12-11-11
Пользователь №: 68 264



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

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

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

И вот судя по ней, когда ставится программная точка останова, адрес считываемой инструкции, на которую натравливается точка останова, слегка корректируется на инструкцию BKPT (ну это мне так пока что приходится догадываться). Но если это не так, тогда отладчику надо как-то "налету" поменять содержимое инструкции на BKPT прямо во Flash (код исполняется оттуда). А для этого память надо сначала будет стереть, а потом перезаписать ради одной инструкции. После выхода из сессии отладки снова перешить Flash на корректный код... Выглядит как-то костыльно, либо не так это все работает laughing.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 1 2018, 20:35
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 529
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Arlleex @ Jun 1 2018, 22:41) *
Выглядит как-то костыльно

Так на то они и программные - костыль как он есть.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st June 2018 - 11:49
Рейтинг@Mail.ru


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