Невозможно установить и настроить отладчик J-Link JTAG на Mac

У меня есть Segger J-Link, который я пытаюсь использовать на Macbook под управлением MacOS Catalina 10.15.4 с openocd и GDB против платы ESP32. Проблема в том, что я не вижу устройство:

$ ls /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port /dev/cu.JimsiPhone-WirelessiAP  /dev/cu.SLAB_USBtoUART      /dev/cu.usbserial-0001

Ни один из них не является J-Link. Если я запускаю lsusb, я вижу это:

$ lsusb
Bus 020 Device 002: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus 020 Device 003: ID 1366:0101 SEGGER J-Link ARM

Я установил "J-Link Software and Documentation Pack", загруженный с Segger. Я проверил настройки Mac "Безопасность и конфиденциальность", и он не сообщает, что он заблокировал установку или запуск каких-либо драйверов или программ.

На J-Link горит зеленый светодиод с очень короткими вспышками, примерно два раза в секунду.

Я уверен, что у меня чего-то не хватает, и буду признателен за помощь.

ОБНОВЛЕНИЕ: я следовал инструкциям здесь:

Инструкции OpenOCD

Все работает, пока я не перейду к шагу 6, и я следую этим инструкциям:

Инструкции для последовательного драйвера

Проблема в том, что путь для драйвера никогда не отображается, как я описал выше. Я не думаю, что смогу запустить OpenOCD, если не смогу заставить его взаимодействовать с моей J-ссылкой.

Когда я запускаю openocd-esp32, я получаю (полная вставка из вывода openocd-esp32 ниже):

Error: No J-Link device found.

Содержимое esp32-wroom-32.cfg:

echo "WARNING: boards/esp-wroom-32.cfg is deprecated, and may be removed in a future release."
set ESP32_FLASH_VOLTAGE 3.3
source [find target/esp32.cfg]

Вот полная паста:

Jims-MacBook-Pro-486:~ jim$ openocd -f interface/jlink.cfg -f board/esp-wroom-32.cfg -c "program_esp32 build/hello-world.bin 0x10000 verify exit"
Open On-Chip Debugger  v0.10.0-esp32-20200420 (2020-04-20-16:15)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
WARNING: boards/esp-wroom-32.cfg is deprecated, and may be removed in a future release.
Info : Configured 2 cores
Error: No J-Link device found.
** OpenOCD init failed **
shutdown command invoked

Assertion failed: (jtag_trst == 0), function jtag_checks, file src/jtag/core.c, line 343.
Abort trap: 6

Запуск JLinkExe обнаруживает J-Link:

Jims-MacBook-Pro-486:~ jim$ JLinkExe
SEGGER J-Link Commander V6.80b (Compiled Jun  5 2020 17:42:04)
DLL version V6.80b, compiled Jun  5 2020 17:41:46

Connecting to J-Link via USB...Updating firmware:  J-Link V11 compiled Apr 23 2020 16:49:23
Replacing firmware: J-Link V11 compiled Aug 14 2019 16:21:09
Waiting for new firmware to boot
New firmware booted successfully
O.K.
Firmware: J-Link V11 compiled Apr 23 2020 16:49:23
Hardware version: V11.00
S/N: 51000936
License(s): GDB
VTref=0.000V


Type "connect" to establish a target connection, '?' for help
J-Link>

После выполнения описанного выше я получаю другое сообщение об ошибке при запуске openocd-esp32 (возможно, из-за обновления J-Link FW?). Сначала он жаловался, что скорость адаптера не установлена, поэтому я изменил interface/jlink.cfg и добавил:

adapter_khz 3000

Теперь у меня другая ошибка:

Error: JTAG scan chain interrogation failed: all ones

Который я искал в Google, и это может означать плохую плату или еще одну проблему с конфигурацией. В гнезде для SD-карты нет SD-карты и на плате нет других устройств SPI, хотя на ESP32-WROVER-32U есть SPI-флэш-память.

Вот полный вывод openocd-esp32:

Jims-MacBook-Pro-486:~ jim$ openocd -f interface/jlink.cfg -f board/esp-wroom-32.cfg -c "program_esp32 build/hello-world.bin 0x10000 verify exit"
Open On-Chip Debugger  v0.10.0-esp32-20200420 (2020-04-20-16:15)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
adapter speed: 3000 kHz

WARNING: boards/esp-wroom-32.cfg is deprecated, and may be removed in a future release.
Info : Configured 2 cores
Info : J-Link V11 compiled Apr 23 2020 16:49:23
Info : Hardware version: 11.00
Info : VTarget = 0.000 V
Info : clock speed 3000 kHz
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: esp32.cpu0: IR capture error; saw 0x1f not 0x01
Warn : Bypassing JTAG setup events due to errors
Info : Listening on port 3333 for gdb connections
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: esp32.cpu0: IR capture error; saw 0x1f not 0x01
Warn : Bypassing JTAG setup events due to errors
Info : cpu0: Debug controller 0 was reset.
Info : cpu0: Core 0 was reset.
Error: esp32_soc_reset: Couldn't halt target before SoC reset
embedded:startup.tcl:449: Error: ** Unable to reset target **
in procedure 'program_esp32' 
in procedure 'program_esp' called at file "/Users/jim/.espressif/tools/openocd-esp32/v0.10.0-esp32-20200420/openocd-esp32/share/openocd/scripts/target/esp32.cfg", line 64
in procedure 'program_error' called at file "/Users/jim/.espressif/tools/openocd-esp32/v0.10.0-esp32-20200420/openocd-esp32/share/openocd/scripts/target/esp_common.cfg", line 75
at file "embedded:startup.tcl", line 449
Warn : Flash driver of esp32.flash does not support free_driver_priv()
Warn : Flash driver of esp32.irom does not support free_driver_priv()
Warn : Flash driver of esp32.drom does not support free_driver_priv()

Успех! В этой схеме использовался 10-контактный игольчатый соединитель Segger. На этом контакте 1 разъема находится VTREF, а на моей плате он оставался плавающим, хотя его следовало подключить к V3.3. Подключил и:

Jims-MacBook-Pro-486:~ jim$ openocd -f interface/jlink.cfg -f board/esp32-wrover.cfg
Open On-Chip Debugger  v0.10.0-esp32-20200420 (2020-04-20-16:15)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
adapter speed: 1000 kHz

WARNING: boards/esp32-wrover.cfg is deprecated, and may be removed in a future release.
         If your board is ESP32-WROVER-KIT, use board/esp32-wrover-kit-1.8v.cfg instead.
Info : Configured 2 cores
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : J-Link V11 compiled Apr 23 2020 16:49:23
Info : Hardware version: 11.00
Info : VTarget = 3.290 V
Info : clock speed 1000 kHz
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : esp32: Debug controller 0 was reset.
Info : esp32: Core 0 was reset.
Info : esp32: Debug controller 1 was reset.
Info : esp32: Core 1 was reset.
Info : Listening on port 3333 for gdb connections

1 ответ

Решение

Я бы посоветовал проверить вашу настройку шаг за шагом - мне лично не нравится большая интеграция.

  1. Убедитесь, что ваше программное обеспечение Segger видит ваш зонд JLink - хорошо, что lsusbэто видно. JLink Commander должен предоставить некоторую полезную информацию.
  2. Запустите openocd без каких-либо аргументов, связанных с исполняемым файлом: openocd -f interface/jlink.cfg -f board/esp-wroom-32.cfg
  3. Убедитесь, что основные команды работают, например, сброс ЦП, отображение регистров, чтение / запись памяти.
  4. Если вы все еще экспериментируете с проблемами, перепроверьте свою проводку - см. Здесь для получения дополнительной информации.
Другие вопросы по тегам