diff --git a/Makefile b/Makefile index db16c6b5e..9d298945d 100755 --- a/Makefile +++ b/Makefile @@ -255,10 +255,18 @@ endif jlink: setsid ${JLINK_GDB_SERVER} -speed ${JLINK_SPEED} -nogui \ -if ${JLINK_INTERFACE} -halt -cpu cortex-m \ - -device ${JLINK_DEVICE} -novd ${JLINK_SCRIPT} >/dev/null 2>&1 & \ - JLINK_PID=$$!; \ - trap "kill $$JLINK_PID 2>/dev/null" EXIT; \ - sleep 1 && jlink-gdb $(FW_DIR)/$(FIRMWARE).elf + -device ${JLINK_DEVICE} -novd ${JLINK_SCRIPT} \ + >/dev/null 2>&1 & \ + trap "pkill -f JLinkGDBServer 2>/dev/null" EXIT; \ + for i in $$(seq 1 3); do \ + if ss -ln | grep -q ":2331 "; then break; fi; \ + sleep 1; \ + done; \ + if ! ss -ln | grep -q ":2331 "; then \ + echo "J-Link GDB server failed to start after 3 seconds"; \ + exit 1; \ + fi; \ + jlink-gdb $(FW_DIR)/$(FIRMWARE).elf submodules: $(MAKE) -C $(MICROPY_DIR)/ports/$(PORT) BOARD=$(TARGET) submodules