In my journey to ARM mastery, I’ve been interested in SWD as a way to program, control and debug an embedded ARM core. Due to my obsession with cheap boards and open source, finding a satisfying solution to my SWD connectivity needs has been a journey in itself.
There are commercial SWD interfaces available, like ST-LINK and JLink. But those aren’t open source. You can get cheap JLink clones from China, but those appear to just use stolen firmware images from the JLink products. This interface, with open source firmware, seemed promising, especially since I could get a firmware binary running on a cheap VCC-GND STM32 board I had around. But since I couldn’t build the source without the Keil tools, and the free version of the Keil tools didn’t seem to work, and the free version of the Keil tools is not open source, my hunt continued.
Whereupon I landed at IBDAP. Someone had taken the same journey and decided to market a board and GCC/makefile-compatible open source firmware, using the CMSIS-DAP standard that is itself an open product of ARM. Very cool. The only downside being that Armstart is sorta out of business. I ordered what may be the last IBDAP board they sell, because after I bought it, everything on their site was marked as sold out. It took a bit of (email) arm-twisting to get them to ship me the board. But, it arrived, I was able to build the firmware (flashing it using another SWD interface), and I’ve connected to a couple boards through it with apparent ease. I may have finally now reached a point in my journey where I can release my obsession with open SWD.
The board may be found at other places, like Adafruit.
In case the Github link disappears, here’s an IBDAP fork. Here’s the firmware I built most recently, as a check for your build/board. Below are some documentation resources.