UPDATE on 20140516

The Arduino Zero has been announced, and it looks to conceptually be the same as what I proposed... just much more expensive. It looks like they've just re-used the schematic from the Atmel ATSAMD20-XPRO board.

executive summary

I've created a functional implementation of CMSIS-DAP ARM debugger that runs in a ~$1 part. The BOM cost is so low that it is cheaper than even a mere connector for an external debug pod. This makes for an intriguing option for low-cost ARM development boards.

So, you don't believe me about the connector? Go to Samtec's web site and look up the cost of a FTSH-105-01-L-DV-K-P-TR (the 2x5 50 mil connector that is de rigueur for Cortex-M targets) and then compare that to the pricing for a PIC16F1454-I/SL.

Then, realize that the PIC firmware also doubles as a USB-to-UART bridge, potentially replacing functionality that would otherwise be achieved with a discrete chip from FTDI or equivalent (which also costs more than the PIC).

There is no public source code for the PIC implementation. I spent a lot of personal time on the project and went to the trouble of putting up a web page about my project because I see real potential for an affordable ARM board that is cheaper than an Arduino and includes a debugger to boot. Alas, no one seems to be interested in this idea.

The license agreement for the CMSIS-DAP specification has a number of stipulations, including that an ARM must be on the target (e.g. soldered on the PCB, as shown in the image below).

However, I have since cranked out a open-source CMSIS-DAP implementation called "Dapper Mime". It was developed on the STM32F072, but it ought to run on the future STM32F042F6P / STM32F042F4P devices. It is a port/integration of the Apache-licensed mbed CMSIS-DAP firmware leveraging the STMicro USB library.


I've put more details on the background and origins of this project on a separate page here.


I previously wrote and published a bootloader for the PIC16F1454. It occupies the first 4kwords of memory in the PIC. This also functions as a USB-to-UART bridge.

The remaining 4kwords can be programmed to contain "Dapper Miser", which is my implementation of the CMSIS-DAP debugger standard.


An example application is this Arduino form-factor PCB which leverages "Dapper Miser" with a NXP LPC812:

Yes, the eagle-eyed viewer will notice an unpopulated footprint for a header to support an external debug pod. The connector could be populated if the user wanted, but the design is so cost-effective that adding the connector would almost double the BOM cost.


The Seggers of this world should have nothing to fear from me; "Dapper Miser" isn't a J-Link competitor. I like my J-Link and would wholeheartedly recommend it to a professional user.

However, it seems to me that there is an opportunity for a low-cost integrated debugger that allows the user proper single-step debugging, breakpoints, etc. Particularly in the hobbyist development board market, everyone and his uncle has a bland firmware download option; users righfully should want more than this. CMSIS-DAP provides a more universal API for debuggers, and software support for it is expanding by the day. Here is a CMSIS-DAP debugger solution that doesn't cost an "ARM and a leg".


I've successfully tested the Dapper Miser implementation with:

Rowley Crossworks for ARM

Keil uVision MDK Lite 5

OpenOCD (Note: CMSIS-DAP support is in the development 0.8.0 code)

CooCox CoIDE (Note: CooCox device support is frustratingly limited and LPC812 is not (yet) supported. A LPC1114 target was used for testing.)


back to main page contact