Перейти к содержанию
    

24.11.2020 в 22:08, Fox_Sanchez сказал:

Добрый день!

дико глаз режет тема с этим названием "Брякпоинт", примерно как бивис (bios) и микруха (микросхема) - поправьте в заголовке темы на более вменяемое..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, MrBearManul said:

Здравствуйте! Насколько я понимаю, это бит действительно включает отладку. Но установить его самим процессором нельзя (подчёркнуто). Выходит, что косвенно по нему можно делать вывод, что отладчик подключен. Ведь это он устанавливает и сбрасывает этот разряд. Могу ошибаться.

image.thumb.png.22bf206e9d27c8d59602de316056598e.png

Вот я тоже и не уверен, как и когда он устанавливается. Возможно, он устанавливается во время сброса проца на основе некоей специфичной для реализации информации, определяющей, допустима ли отладка данного проца -- т.е. зависит от того, заблокировали ли возможность отладки ранее или нет, и в таком случае не показывает наличие отладчика, а показывает возможность его использования. В общем, тут надо подробней разбираться, прежде чем полагаться на значение этого бита.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

54 минуты назад, SII сказал:

Вот я тоже и не уверен, как и когда он устанавливается.

К сожалению я никогда не использовал его, поэтому подробнее ничего сказать не могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, SII сказал:

Вот я тоже и не уверен, как и когда он устанавливается...

ARMv7-M ARM, цитирую

Цитата

C1.4.1 Entering debug state on leaving reset state

To force the processor to enter Debug state as soon as it comes out of reset, a debugger set DHCSR.C_DEBUGEN to 1, to enable halting debut, and sets DEMCR.VC_CORERESET to 1 to enable vector catch on the Reset exception. When the processor comes out of reset it sets DHCSR.C_HALT to 1, and enters Debug state. For more information see Debug Halting Control and Status Register, DHCSR on page C1-830 and Debug Exception and Monitor Control Register, DEMCR on page C1-838.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Arlleex said:

ARMv7-M ARM, цитирую

Угу, спасибо. Значит, таки именно отладчик этот бит ставит, а возможность отладки блокируется каким-то иным способом. Тогда да, можно процом проверять этот бит на предмет работы под отладчиком. Другой вопрос -- зачем проверять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, SII сказал:

...а возможность отладки блокируется каким-то иным способом...

Не понял. Кто кого блокирует и зачем?

7 минут назад, SII сказал:

Другой вопрос -- зачем проверять?

Проверять кого?

Еще раз: отладка - это отладка, зачем в релизном коде оставлять BKPT? Ну ладно, хочется "ассерты" - тогда, опираясь на C_DEBUGEN, включите отладочный монитор.
Все события отладки от BKPT-инструкций будут вызывать исключение Debug Monitor. Если же монитор будет выключен - поведение зависит от реализации. Но обычно HF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Arlleex said:

Не понял. Кто кого блокирует и зачем?

Возможность отладки зашитого кода. Банальная защита от анализа и копирования: если она включена, отладчик становится бесполезен, т.к. железо не будет позволять останавливать проц и всё такое.

4 hours ago, Arlleex said:

Проверять кого?

Наличие подключённого к процу отладчика.

4 hours ago, Arlleex said:

Еще раз: отладка - это отладка, зачем в релизном коде оставлять BKPT?

А это уже не ко мне, а к ТС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, Arlleex сказал:

Еще раз: отладка - это отладка, зачем в релизном коде оставлять BKPT?

У меня в ассертах пишется лог в консоль (в текущем разрабатываемом приборе). Затем BKPT. Если идёт отладка, то мы просто останавливаемся. Если отладки нет, то в ассерте всё равно стоит отключение прерываний и вечный цикл. Мы просто перезагружаемся по сторожевому таймеру. И начинаем работу заново. В другом приборе в ассерте писался лог в память. Т.е. можно было спустя пару месяцев прийти на объект, и поглядеть, что там и когда сваливалось)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...