Попытка отладки моего примера кода blink_led на плате STM32L476 Nucleo-64, но GDB не может подключиться к OpenOCD (соединение прерывается почти мгновенно с ошибкой). Я прочитал много постов тут и там, но ни один из них не помог. Попытка добавления команд в OpenOCD с использованием -c, но без изменения поведения.
Мой код компилируется как в Release, так и в Debug config в Eclipse. Я могу прошить файл bin с помощью перетаскивания (пока на плате есть встроенная надстройка STLink) и выглядит, что код отлично работает на плате (светодиод мигает).
Кросс-компиляция на Centos7 с использованием следующих версий:
- Toolchain (gdb): gcc-arm-none-eabi-8-2018-q4-major
- OpenOCD: 0.10.0-11-20190118-1134
Поскольку использование eclipse не сработало, я попробовал командную строку,
(я не опытный разработчик в этой среде, поэтому я не смог найти файл конфигурации ближе к моей плате stm32l476, чем stm32l4discovery.cfg, пожалуйста, дайте мне знать, если при его использовании могут возникнуть проблемы)
./bin/openocd -f scripts/board/stm32l4discovery.cfg -c "init"
начинается,
GNU MCU Eclipse 64-bit Open On-Chip Debugger 0.10.0+dev-00462-gdd1d90111 (2019-01-18-11:37)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 500 kHz
adapter_nsrst_delay: 100
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : clock speed 500 kHz
Info : STLINK V2J28M17 (API v2) VID:PID 0483:374B
Info : Target voltage: 3.244386
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : Listening on port 3333 for gdb connections
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Затем запускается GDB:
./arm-none-eabi-gdb ~/eclipse-workspace/test-blink-led/Debug/test-blink-led.elf
затем выполните следующую команду в GDB:
(gdb) target remote localhost:3333
Remote debugging using localhost:3333
Remote connection closed
Как показывает, соединение GDB мгновенно обрывается, и OpenOCD выдает следующие ошибки:
Info : accepting 'gdb' connection on tcp/3333
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080022e6 msp: 0x20017ff8
Info : device id = 0x10076415
Warn : STM32 flash size failed, probe inaccurate - assuming 1024k flash
Info : flash size = 1024kbytes
Error: auto_probe failed
Error: Connect failed. Consider setting up a gdb-attach event for the target to prepare target for GDB connect, or use 'gdb_memory_map disable'.
Error: attempted 'gdb' connection rejected
Error: jtag status contains invalid mode value - communication failure
Polling target stm32l4x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 100ms
Так что из тех гиков, которые делают это на аналогичной платформе ежедневно, может кто-нибудь помочь и сказать мне, где я делаю неправильно. Может ли отсутствие какого-либо флага времени компиляции привести к этой проблеме?
Я почесываю голову уже пару дней, поэтому, пожалуйста, дайте мне ваши подсказки.