2012-04-01 5 views
7

Я работаю над отладкой с помощью gdb. я хотел знать, как gdb работает внутри, чтобы установить брекпоинт на встроенный процессор через JTAG.Как отладчик, такой как gdb, работает, чтобы установить точку останова через JTAG?

+0

Возможный дубликат [Общий рабочий поток JTAG во встроенной системе разработки?] (Http://stackoverflow.com/questions/3775445/general-jtag-working-flow-in-an-embedded-development-system) – Gilles

ответ

1

Для каждого процессора все зависит от вас, вам нужно найти детали отладчика jtag для конкретного процессора. не только семейство процессоров, но и конкретный процессор. Руководства по спецификациям/пользователям, если они доступны, обычно доступны от поставщика чипов или основного поставщика в зависимости от продукта.

+0

что я хочу знать, так это то, что после подключения моей платы к ПК с помощью кабеля jtag, если я набираю, например, «bp 25» с GDB, что происходит после этой команды для выполнения с моим встроенным процессором (Microblaze) через JTAG? – jenje

+0

вам нужно найти этот процессор и команды jtag, это может быть несколько-несколько тысяч различных команд, которые реализуют эту вещь. Десяток различных способов обработки процессоров такой командой и т. Д. Если вы не хотите искать данные, посмотрите в gdb soruces, gdb - с открытым исходным кодом, ответы на ваши вопросы - все в открытых документах и ​​программном обеспечении. Перестройте gdb, добавьте некоторые printfs, выкопайте код интереса. –

3

Он либо программирует аппаратный регистр контрольной точки, либо помещает точку останова программного обеспечения, заменяя инструкцию в точке останова инструкцией, которая вызовет исключение.

0

Несколько раз, когда я использовал GDB в сочетании с блоком JTAG, GDB передавался через JTAG с помощью программы gdbserver, которая обрабатывала детали JTAG. Например, с помощью блока OpenOCD JTAG: http://openocd.sourceforge.net/doc/html/GDB-and-OpenOCD.html

Это по существу означает, что GDB не знает почти ничего о блоке JTAG - он опирается на интерфейс gdbserver, а затем, что сервер делает все, что нужно, чтобы за кулисами делать запросы GDB.