In late 2013, I created a functional implementation of CMSIS-DAP that runs in a low cost ~$1 PIC16F1454 microcontroller. My interest was seeing it deployed as a CMSIS-DAP debugger *integrated* into a low-cost hobbyist/educational ARM development board.
Hack-A-Day (the source of most link traffic here) mischaracterized it as a $1 standalone debugger. It had a ridiculous Rube Goldberg (Heath Robinson) description of using a salvage USB cable. At best, I think they "buried the lead"; at worst, it was click bait.
A variety of source code is available here and here, but this does not include the Dapper Miser source code.
In a (half-baked) attempt to discourage lots of proprietary debug pod implementations, ARM published a "CMSIS-DAP" specification. However, rather than make it an open standard that could be readily adopted by vendors, said specification is bound by a EULA with onerous terms.
If there was something new or novel about the CMSIS-DAP specification, I might be more sympathetic about the EULA. However, it is not even a particularly well-thought out protocol API; there is certainly nothing new or novel about it. Practicing CMSIS-DAP could not possibly be inferred as a license for the ARM Debug Interface that CMSIS-DAP talks to; moreover, that would be something already licensed from ARM by the target chip manufacturer. (The EULA is seemingly akin to clamping down on the availability of sneakers/trainers in order to combat store theft. The shoes may be worn by crooks, but they are also worn by legitimate store patrons.)
mbed (an ARM subdivision) has released incomplete source code for CMSIS-DAP that depends upon Keil (another ARM subdivision) USB libraries which must be purchased separately. Just as a proof of concept (and not optimized for speed or purpose), over a weekend in 2014 I adapted said mbed code to run on the STM32F072 using the publicly available STMicro USB library. The source code is here.
The resultant negative consequence of ARM's cloaking CMSIS-DAP in such an EULA was that the open source community (examples: here, here, and here) fractured into a cornucopia of bespoke APIs incompatible with each other and development tools. What a pity.
back to main page contact