Допустим, у меня есть два STM32, и я использую этот программатор здесь.
Я хочу подключиться к ним обоим и отлаживать / перепрошивать / выполнять независимую отладку.
Итак, установка у меня следующая:
HW
PC |-> USB1 -> ST-LINK-Programmer1 -> STM32_Board1
|-> USB2 -> ST-LINK-Programmer2 -> STM32_Board2
SW
То, как я обычно делаю это с одной доской, довольно просто.
openocd -f config.cfg
И вот файл конфигурации, который я вызываю:
source [find interface/stlink-v2.cfg]
transport select hla_swd
source [find target/stm32f4x.cfg]
reset_config none
Затем в другом терминале я вызываю arm-gdb следующим образом:
arm-none-eabi-gdb build/FW.elf
а в ~ / .gdbinit у меня есть одна строка:
target remote localhost:3333
Что не работает
Это довольно очевидно ... Я использую порт 3333 для первого OpenOCD, но второй экземпляр пытается использовать тот же порт и не работает с
Error: couldn't bind tcl to socket: Address already in use
Что я пробовал
Я просмотрел документацию здесь, но не вижу как вызвать эти параметры в моем config.cfg
файле.
Я также пробовал добавить эти команды о tcl_port и gdb_port к фактическим аргументам командной строки, например openocd -f config.cfg -c tcl_port 4444
, но это тоже не работает ... Сокет все еще используется.
Мой настоящий вопрос
Как правильно это сделать? И есть ли какие-нибудь подводные камни при работе с arm-none-eabi-gdb после настройки openocd для подключения к правильному экземпляру OpenOCD?