|
stm32 debug session, Что шьет дебагер? |
|
|
|
 |
Ответов
(1 - 11)
|
Jun 1 2018, 19:08
|

Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 1 2018, 19:41
|

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

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