AdaLink: Cross Platform ARM Debug Wrapper

Screen Shot 2015-07-25 at 17.11.13

We’re big fans of GNU/GCC here at Adafruit. Thanks to the prevalence of ARM in embedded Linux and Android, recent versions of GCC produce excellent code for ARM processors, and GCC works great with a makefile cross-platform when compiling your code. Unfortunately, the HW debuggers you use to flash your small embedded ARM MCUs are a different story altogether, and the tools are all over the map and often Windows only, or a pain to build and configure!

Enter AdaLink, an internal Python tool we developed to abstract away the platform and OS specific details behind the two ARM HW debuggers we use and sell: The Segger J-Link (the gold standard of ARM HW debuggers) and the low cost STLink/V2.

If you want to flash your Bluefruit LE UART Friend with your own custom firmware using either a J-Link or STLink/V2 without having to worry about platform specific details, you can run the following command from the command-line: adalink nrf51822 –programmer jlink –wipe –program-hex bootloader.hex

You can also get some basic info about the modules from the command line with the following command: adalink nrf51822 –programmer jlink –info

The list of MCUs supported is currently limited to chips we’re using internally, but it’s easy to expand the tool, and it plays well with Linux, Windows and OS X, and if you are using and STLink/V2 you can even use Raspian on a Raspberry Pi (unfortunately no JLink binaries are available from Segger for ARM Linux).

Have a look at the AdaLink Readme on github for details on setting the tool up and using it, as well as some details on extending it!

Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here:

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in!

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community!

CircuitPython – The easiest way to program microcontrollers –

Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at !


  1. What makes it the gold standard?

  2. There are a number of points that I think ensure you’ll find a J-Link on the bench of a large percentage of professional engineers in the ARM/embedded space. Segger is almost always the first out the door with support for new chips (which involves a decent amount of effort on their part), it generally ‘just works’ and is fast and reliable, and perhaps most importantly as a company they are generally IDE neutral and you can use their debuggers with almost any professional or open source IDE or toolchain or platform out there (they provide tools for Windows, OS X and Linux, including GDB Server for GNU based setups). There are other options out there, of course, but Segger has always been the gold standard where I’ve worked, and they work hard to keep the solid reputation thay have in the debugger market.

    You’re free to disagree, of course, and please post up alternatives for customers below if there’s something else you think is more appropriate or performs better or hits an easier price/performance ratio, etc. As with most engineering tools, there’s a spectrum of budgets, needs and performance requirements, and Segger is probably on the higher end of the price/performance scale and may not be what everyone needs. Personally, though, I couldn’t live without mine!

  3. There isn’t really one definitive ARM forum out there other than from ARM itself, and things are generally organised more around specific silicon vendors. NXP users will tend to congregate on forums like, ST users on their own forums, etc. General ‘ARM’ forums are harder to find, so it’s best to find a chip family that matches your needs and then look at the forum(s) for that family. ST and NXP are the two main chip families you come across for ARM most of the time, so those are the best place to start in my opinion.

Sorry, the comment form is closed at this time.