A proper JTAG/SWD HW debugger can make debugging more of a pleasure and less of a
pain. It allows you to program your devices at the click of a button, read or write memory
addresses or registers on a live system, temporarily halt program execution at a given location
or condition, and much more. Essentially, it's a direct window into what's going on inside your
MCU at any given moment, giving you a level of access and control that's not easy to replicate
with other debugging methods.
Of the dozens (and dozens!) of debuggers out there (we have literally drawers full of them!), we
chose the J-Link for a number of reasons:
It's USB based and uses a high-speed MCU internally, not an FTDI convertor like most low
cost debugger. More debugging, less waiting!
It support both JTAG (ARM7/9/11) and SWD (ARM Cortex), and has you covered for any
core: ARM7/9/11, Cortex-A5/A8/A9, Cortex-M0/M0+/M1/M3/M4, Cortex-R4
It's toolchain, IDE and vendor neutral, so you only need to buy one tool for all of your ARM
needs and be done with it forever:
Support GDB-based debugging and flash programming on Linux, Windows and the Mac
via the free GDB Server
Supports most major IDEs, including Keil, IAR Atmel Studio, Crossworks for ARM
It includes flash-programming algorithms for most MCUs, and Segger is very pro-active
about updating their drivers to support the newest chipsets.
It just works, and keeps on working, and it'll be there for you in several years time.
The J-Link is fast. Stepping through breakpoints and reading memory addresses is quick, as is
programming the flash memory on the chips. It's real strength, though, is that it's so vendor and
tool neutral. Most chip vendors today provde low cost (or free) tools, but they also lock you into
their chips and force you to accept the choice they've made for you. Segger's J-Link is a nice
change in that respect, since you can be reasonably certain it will work with any chip, in any
major toolchain, and you're free to change camp (or OS or IDE) without having to buy a new
debugger every time.
Why Would I Want This?
You can do a lot of basic debugging with just printf and an LED, and you may not need a HW
debugger to get started, but once you start to working on more complicated projects, you hit a
debugging wall pretty quickly.
Your chip might be ending up in the HardFault handler, for example, but without a debugger it
can be very hard to trace back exactly what is causing the problems. A debugger allows you to
set 'breakpoints' in your code, where execution will temporarily stop, and you can check the
value of memory or peripherals at that point in time, and then 'single-step' through your code
line by line, executing your program until you find the place that causes your fault. There's a lot
more to debugging than simple breakpoints, but you can often solve in a few minutes with
breakpoints what would take much longer with printf and instrusive blocking mechanisms you
insert into your code without a debugger.
Whether you're using GDB Server (GNU Tools) or an IDE and a commercial toolchain, it's also
just a big convenience, since the J-Link can program the flash for you at the click of a button,
reset the device, start execution, and then 'halt' on main(). You can do all these steps yourself --
programming the device via free tools over UART or via a USB bootloader, etc. -- but when you
need to do that 40-50 times a day, it can get old quick, and 15 seconds saved make a huge
difference when debugging. You can program a small MCU and break on main in 2-3 seconds
with a J-Link, which makes the tools more or less invisible, which is a good thing when you have
other problems to worry about.
What is the J-Link EDU?
The J-Link usually sells for a few hundred dollars up to four figures, but Segger makes a
special, low-cost 'EDU' version of ther J-Link available. It's feature complete (including GDB
Server support, unlimited flash breakpoints, etc.) and the same debugger you'd buy for
professional use, but it has the following limitations (source: http://www.segger.com/j-link-
edu.html):
You may use the J-Link EDU for non profit educational purposes only! Non-profit
educational purposes means that you may not use the J-Link EDU and its J-Link software.
direct or indirect in or for a profit organization or business purposes or other undertaking
intended for profit
direct or indirect in any other commercial environment (e.g. office)
to develop, debug, program or manufacturer a commercial product (or parts thereof)
to use it to either earn money or reasonably anticipate the receipt of monetary gain from it.