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

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


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

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



Добрый день!

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


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Arlleex
сообщение Jun 1 2018, 19:08
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 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
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 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
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 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



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:51
Рейтинг@Mail.ru


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