Fox_Sanchez 1 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Добрый день! Случилась такая вещь: был у меня один девайс на stm32f103. Лежал на столе, я его отлаживал какое-то время назад (Workbench + ST-Link). Отладил, все работает как надо. Тут вдруг по острой нужде его схватили и запихнули в прибор. В общем вопрос такой: во время дебаг-сессии в него шьется обычная прошивка или со всякими отладочными штуками? Надо ли опосля отладки в него перешивать бинарник флэшером отдельно? Все предыдущие разы я так и делал. Сейчас все работает, крышка закрыта, лезть туда не хочется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Что собрано, то и шьется. Специально заливать по голове то же самое смысла нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Это зависит от много чего. Если в проекте было много активных точек останова, то многие IDE и отладчики модифицируют флеш и вставляют программные точки останова. И если отладочную сессию прервать выдергиванием отладчика, то они там так и останутся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Если в проекте было много активных точек останова, то многие IDE и отладчики модифицируют флеш и вставляют программные точки останова. Это да. Правда, их должно быть действительно много, если не ошибаюсь, у F103 шесть аппаратных точек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fox_Sanchez 1 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Ну допустим точек было задействовано всего пару. Это может как-то повлиять на работу? Без подключенного отладчика он не будет из-за чего-либо на них останавливаться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 172 26 апреля, 2018 Опубликовано 26 апреля, 2018 · Жалоба Ну допустим точек было задействовано всего пару. Это может как-то повлиять на работу? Без подключенного отладчика он не будет из-за чего-либо на них останавливаться? И всего пара бряков могут быть программными, в зависимости от настроек вашего отладчика. Останавливаться - с чего бы? Программная точка - это инструкция программного прерывания, записанная поверх штатных инструкций. Сами подумайте что будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 32 26 апреля, 2018 Опубликовано 26 апреля, 2018 · Жалоба Ответ находится за 5 минут с использованием устройства, отладчика, головы и рук. Гугл можно не привлекать для экономии времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serglg 0 26 апреля, 2018 Опубликовано 26 апреля, 2018 · Жалоба я как-то точно оставлял точки останова при отладке, потом штатно выходил, отключал СТ-Линк. Потом запускал устройство и оно работало адекватно, не висло в предполагаемых местах остановки.. Отлаживал Кейлом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 129 1 июня, 2018 Опубликовано 1 июня, 2018 (изменено) · Жалоба Придется поднять тему. Использую Keil + ST-Link (SWD). Захожу в сессию отладки, ставлю до 6 точек останова - все устанавливается (они аппаратные). А я хочу больше точек останова - допустим, 100 точек. Пусть из них 6 будут аппаратными, остальные - программными. Как это сделать? Нужно как-то перекомпилировать код? В какой момент подключается Flash Patch и как он точно работает? Я полагаю, что это некий механизм переадресации инструкций, на которые поставлены точки останова, на инструкции в той же Flash, но находящиеся недалеко от исполняемого реального кода. И это инструкции BKPT с параметром. И если расставляются программные точки останова, означает ли это, что они расставляются в процессе до компиляции и добавляются в код? И как не пытался играться в Keil, поставить ST-Link-ом программную точку не смог =( Изменено 1 июня, 2018 пользователем Arlleex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 1 июня, 2018 Опубликовано 1 июня, 2018 · Жалоба И если расставляются программные точки останова, означает ли это, что они расставляются в процессе до компиляции и добавляются в код? Нет, точки ставит отладчик, в код ничего не добавляется, только в таргет. P.S. Картинку не видно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 129 1 июня, 2018 Опубликовано 1 июня, 2018 · Жалоба Нет, точки ставит отладчик, в код ничего не добавляется, только в таргет. P.S. Картинку не видно Картинку переприкрепил. И вот судя по ней, когда ставится программная точка останова, адрес считываемой инструкции, на которую натравливается точка останова, слегка корректируется на инструкцию BKPT (ну это мне так пока что приходится догадываться). Но если это не так, тогда отладчику надо как-то "налету" поменять содержимое инструкции на BKPT прямо во Flash (код исполняется оттуда). А для этого память надо сначала будет стереть, а потом перезаписать ради одной инструкции. После выхода из сессии отладки снова перешить Flash на корректный код... Выглядит как-то костыльно, либо не так это все работает :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 1 июня, 2018 Опубликовано 1 июня, 2018 · Жалоба Выглядит как-то костыльно Так на то они и программные - костыль как он есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться