Leave a comment

sergegers1 February 7 2013, 13:15:44 UTC
Юрий, а можете подробнее рассказать, как просходит отладка? Вот как устанавливается и как срабатывает брейкпоинт? Чип, что, при включении формирует массив векторов прерываний?

Reply

panchul February 7 2013, 17:55:20 UTC
Протокол отладки знает на интимном уровне и со всеми подробностями Сергей Вакуленко ramlamyammambam, лучше у него спросить

Reply

sergegers1 February 7 2013, 18:04:06 UTC
Ну ок, когда Сергей сюда заглянет, интересно было бы его послушать.

Reply

(The comment has been removed)

sergegers1 February 8 2013, 16:43:10 UTC
Это я знаю

Reply

(The comment has been removed)

sergegers1 February 8 2013, 17:33:07 UTC
Вопрос не в том, как вообще работает механизм отладки, а как он устроен на данном конкретном железе.

Reply

ramlamyammambam February 9 2013, 05:48:01 UTC
Для установки точек прерывания служат специальные регистры IBA/IBM/IBC (по выполнению) и DBA/DBM/DBC (по чтению и записи). Подробнее все описано в спецификации, которая называется EJTAG: http://www.mips.com/secure-download/index.dot?product_name=/auth/MD00047-2B-EJTAG-SPC-06.10.pdf
Я могу рассказать с любой степенью подробности, если вы будете задавать уточняющие вопросы.

Reply

sergegers1 February 9 2013, 11:13:42 UTC
Честно говоря, лень регистрироваться, спрашиваю в основном из любопытства. У меня тогда ещё пара вопросов. То есть, видимо, когда брекпоинт срабатывает, генерируется некое прерывание. А таблица прерываний создаётся самим процессором при загрузке? А решим отладки заключается в переписывании соответствующего вектора прерывания?
И ещё, как адресуется память? У Intel много хитрых механизмов для разных режимов, в частности, трансляция виртуальных адресов в реальные и поддержка пейджинга.

Reply

ramlamyammambam February 10 2013, 02:51:14 UTC
По брейкпойнту возникает прерывание типа debug exception. Адрес текущей команды сохраняется в специальном регистре DEPC, процессор переключается в режим отладки и прыгает на адрес 0xFF200000. Это так называемый сегмент отладки, диапазон адресов, который появляется только в режиме отладки. Все запросы от процессора к сегменту отладки аппаратно переадресуются к JTAG-адаптеру. То есть софт на управляющем компьютере (отладчик GDB или другой) начинает кормить отлаживаемый процессор нужными инструкциями MIPS, чтобы получить от него содержимое регистров, памяти и др. Под конец отладчик выдает инструкцию DRET, и процессор переходит в обычный режим, продолжая выполнение с адреса в регистре DEPC ( ... )

Reply

sergegers1 February 10 2013, 11:31:58 UTC
Спасибо за ответы. Если доведётся окунуться в MIPS, теперь я знаю, с чего начать.

Reply


Leave a comment

Up