I’ve been porting my
Cortex-based
RTS to Arduino Due, using the J-Link JTAG interface (because who
can make an RTS without a debugger?). I’ve probably forgotten my
initial problems with ST-LINK (an equivalent interface included for
free on the STM32F4 board, supported
by OSS software),
but it seemed a much less trying experience than with Segger.
There are two things with J-Link GDB Server: first, it seems like a
bad idea to keep the server alive after a GDB session ends, so start
it with -singlerun; and second, you absolutely must
issue monitor reset before running your program. If you don’t
you’ll end up like I did, scratching my head for three days trying to
understand why I was getting a HardFault at the SVC that FreeRTOS uses
to kick tasking off.