Вопрос 1:
Это то, что вам нужно?Зависит.Автопробинг, как описано в разделе 10.7, относится только к JTAG.Так что само по себе это не покроет ваши потребности.Но простое подключение через SWD печатает соответствующую информацию (регистр DPIDR вместо TAP IDCODE), так что в любом случае вы можете получить одинаковую информацию о чипе по обоим протоколам.
Однако я не уверен, что этодостаточно для вас.Если вы только хотите обнаружить, что чип (любой чип) реагирует, этого, вероятно, достаточно.Если вам также необходимо детально идентифицировать микросхему, в общем случае потребуется дополнительная проверка, поскольку идентификаторы, которые вы получаете с помощью обоих методов, идентифицируют разработчика микросхемы.Таким образом, для всех чипов Cortex вы получите «ARM» вместо фактического производителя чипа (например, «ST»).Хотя ST (и, возможно, другие производители) чипы имеют отдельную TAP сканирования границы (т.е. только JTAG), которая обеспечивает фактический ST IDCODE, который может использоваться для идентификации чипа.
Однако, поскольку SWD относится только к ARM Cortexтипа (или, скорее, ADI v5), если вы можете использовать SWD, вы также можете прочитать таблицу ПЗУ компонентов отладки, в которой, помимо прочего, указывается производитель чипа:
# Your JTAG adapter config
script interface.cfg
transport select swd
adapter_khz 100
swd newdap chip cpu -enable
dap create chip.dap -chain-position chip.cpu
target create chip.cpu cortex_m -dap chip.dap
init
dap info
shutdown
Вывод дляSTM32F103:
Info : SWD DPIDR 0x1ba01477
Info : chip.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : gdb port disabled
AP ID register 0x14770011
Type is MEM-AP AHB
MEM-AP BASE 0xe00ff003
Valid ROM table present
Component base address 0xe00ff000
Peripheral ID 0x00000a0410
Designer is 0x0a0, STMicroelectronics
Part is 0x410, Unrecognized
Component class is 0x1, ROM table
MEMTYPE system memory present on bus
ROMTABLE[0x0] = 0xfff0f003
Component base address 0xe000e000
Peripheral ID 0x04001bb000
Designer is 0x4bb, ARM Ltd.
Part is 0x0, Cortex-M3 SCS (System Control Space)
Component class is 0xe, Generic IP component
ROMTABLE[0x4] = 0xfff02003
Component base address 0xe0001000
Peripheral ID 0x04001bb002
Designer is 0x4bb, ARM Ltd.
Part is 0x2, Cortex-M3 DWT (Data Watchpoint and Trace)
Component class is 0xe, Generic IP component
ROMTABLE[0x8] = 0xfff03003
Component base address 0xe0002000
Peripheral ID 0x04000bb003
Designer is 0x4bb, ARM Ltd.
Part is 0x3, Cortex-M3 FPB (Flash Patch and Breakpoint)
Component class is 0xe, Generic IP component
ROMTABLE[0xc] = 0xfff01003
Component base address 0xe0000000
Peripheral ID 0x04001bb001
Designer is 0x4bb, ARM Ltd.
Part is 0x1, Cortex-M3 ITM (Instrumentation Trace Module)
Component class is 0xe, Generic IP component
ROMTABLE[0x10] = 0xfff41003
Component base address 0xe0040000
Peripheral ID 0x04001bb923
Designer is 0x4bb, ARM Ltd.
Part is 0x923, Cortex-M3 TPIU (Trace Port Interface Unit)
Component class is 0x9, CoreSight component
Type is 0x11, Trace Sink, Port
ROMTABLE[0x14] = 0xfff42002
Component not present
ROMTABLE[0x18] = 0x0
End of ROM table
Для чипов, не относящихся к Cortex, вы получите хорошую идентификацию, используя JTAG TAP IDCODE, используя только автоматическое тестирование, как в этом примере со старым STR750:
# Your JTAG adapter config
script interface.cfg
transport select jtag
adapter_khz 100
init
shutdown
Info : JTAG tap: auto0.tap tap/device found: 0x4f1f0041 (mfg: 0x020 (STMicroelectronics), part: 0xf1f0, ver: 0x4)
Вопрос 2:
Как описано выше, «autoprobing» относится только к JTAG, но вы получаете те же функциональные возможности (чтение идентификационного кода), что и SWD.К сожалению, это не поможет вам, потому что у вас нет доступа ни к одному протоколу!
Проблема в том, что вы используете ST-Link.Несмотря на то, что люди склонны думать, это НЕ настоящий адаптер JTAG / SWD.Да, он говорит как на JTAG, так и на SWD, но полностью скрывает протокол внутри прошивки адаптера.Он предоставляет только высокоуровневую команду, установленную для хоста (OpenOCD), типа «Сброс цели», «Шаг цели», «Чтение этой памяти» и т. Д. Как следствие, поддержка OpenOCD ST-Linkэто уродливый хак, который находится на слое target вместо слоя adapter .Таким образом, большинство функций OpenOCD на уровне адаптера, транспорта или DAP просто не существует, и автоматическое зондирование в смысле OpenOCD совершенно не имеет значения для вашей установки.
Для простой перепрошивки и очень простой отладки GDB, ST-Linkработает.Но для чего-то более низкого уровня, просто держитесь подальше от ST-Link.Это совсем не подходит для OpenOCD.
Тем не менее, если все, что вам нужно, это знать, есть ли чип вообще, в некоторых конфигурациях ST-Link, вероятно, можно убедить, чтобы дать вамinfo, например, со следующим файлом конфигурации:
script interface/stlink.cfg
transport select hla_swd
adapter_khz 100
hla newtap chip cpu -enable
dap create chip.dap -chain-position chip.cpu
target create chip.cpu cortex_m -dap chip.dap
Вы получите либо
Warn : UNEXPECTED idcode: 0x2ba01477
, либо
Error: init mode failed (unable to connect to the target)
Остальные вопросы не имеют значения вместес ST-Link, поэтому я буду считать, что вы переключаетесь на настоящий адаптер JTAG / SWD.
Вопрос 3:
JTAG с автопробингом, а также чтениеDPIDR over SWD, абсолютно не навязчивый.В целом, для целей Cortex-M большинство отладочных обращений к цели не являются навязчивыми, поэтому вы можете читать / записывать память и т. Д., Пока цель работает с трудом, не затрагивая ее.
JTAG не определяет или не требуетсигнал сброса системы должен быть доступен вообще.Автопробинг работает без него, вы должны иметь возможность использовать
reset_config none
Вопрос 4:
Вы хотите вообще не запускать сервер gdb / telnet??Затем вы можете отключить их с помощью следующей конфигурации:
gdb_port disabled
telnet_port disabled
tcl_port disabled
Однако, если вы просто запустите OpenOCD, чтобы обнаружить чип, а затем закроете его, временный запуск этих служб в любом случае может не быть проблемой.
Более того, по крайней мере сервер GDB запускается только после создания target , который не является обязательным для выполнения автозондирования JTAG.
Summary
Да, вы должны иметь возможность делать то, что вы хотите, но, возможно, не с ST-Link.С реальным адаптером вы можете выполнить автоматическое зондирование JTAG для печати обнаруженных TAP в цепочке сканирования.Для SWD OpenOCD всегда печатает обнаруженный регистр DPIDR (и обычно прерывается, если цель не найдена; выходные данные будут отличаться, по крайней мере).
Соединение / обнаружение может быть полностью незаметным, если сама цель поддерживает егокак и большинство Cortex-M.Если в целевой микропрограмме отключены контакты отладки или отключена логика отладки, может потребоваться удержание или импульсный сброс в зависимости от цели.